-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.ts
49 lines (38 loc) · 1.42 KB
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import 'dotenv/config'
import { createDB } from './core/db.js'
import { UserRepository } from './core/userRepository.js'
import { Bot } from './core/bot.js'
import { MetricsService } from './core/metrics.js'
import { Server } from './core/server.js'
import { CacheService } from './core/cache.js'
import { MentionRepository } from './core/mentionRepository.js'
import { PaymentsRepository } from './core/paymentsRepository.js'
import { SettingsRepository } from './core/settingsRepository.js'
const main = async (): Promise<void> => {
const dbClient = await createDB(process.env.REDIS_URI)
const metricsService = new MetricsService(dbClient)
const server = new Server(metricsService, process.env.PORT)
const cache = new CacheService(metricsService, 2000)
const paymentsRepository = new PaymentsRepository(dbClient, metricsService)
await paymentsRepository.loadLimits()
const settingsRepository = new SettingsRepository(dbClient, metricsService)
const userRepository = new UserRepository(dbClient, metricsService, cache)
const mentionRepository = new MentionRepository(
dbClient,
metricsService,
paymentsRepository
)
await mentionRepository.loadMentionsForInstantMentions()
const bot = new Bot(
userRepository,
metricsService,
mentionRepository,
paymentsRepository,
settingsRepository,
process.env.BOT_NAME,
process.env.TG_TOKEN
)
bot.launch()
server.listen()
}
main()