81 lines
1.7 KiB
JavaScript
81 lines
1.7 KiB
JavaScript
const {
|
|
Telegraf,
|
|
Composer,
|
|
Router,
|
|
Markup,
|
|
Extra,
|
|
session
|
|
} = require('telegraf')
|
|
const { I18n } = require('telegraf-i18n')
|
|
const { db } = require('../db/db')
|
|
const { config } = require('./config')
|
|
const { rateLimit, reportErr, updaterUser } = require('../middle')
|
|
const {
|
|
generateUpdateMiddleware: cliUpdateTime
|
|
} = require('telegraf-middleware-console-time')
|
|
const consign = require('consign')
|
|
|
|
const bot = new Telegraf(process.env.BOT_TOKEN, {
|
|
telegram: {
|
|
apiRoot: process.env.TG_APIROOT
|
|
},
|
|
handlerTimeout: 1
|
|
})
|
|
|
|
const Route = new Router(({ callbackQuery }) => {
|
|
if (!callbackQuery.data) return
|
|
const parts = callbackQuery.data.split('|')
|
|
return {
|
|
route: parts[0],
|
|
state: {
|
|
value: parts[1]
|
|
}
|
|
}
|
|
})
|
|
|
|
;(async () => {
|
|
if (config.isDev) {
|
|
await bot.use(config.settings.setCommand)
|
|
const { TG_APIROOT, BOT_CLUSTER_CORE } = process.env
|
|
console.log(
|
|
Object.assign(await bot.telegram.getMe(), {
|
|
BOT_CLUSTER_CORE,
|
|
TG_APIROOT
|
|
})
|
|
)
|
|
// Dev handlers
|
|
bot.use(cliUpdateTime())
|
|
bot.use(Telegraf.log())
|
|
}
|
|
})()
|
|
|
|
bot.route = Route
|
|
bot.context.db = db
|
|
bot.context.extra = Extra
|
|
bot.context.markup = Markup
|
|
|
|
// bot.use(rateLimit(config.limitSecurity))
|
|
bot.use(session())
|
|
bot.use(new I18n(config.i18nOpts))
|
|
bot.use(updaterUser)
|
|
bot.use(reportErr)
|
|
|
|
bot.on('callback_query', Route)
|
|
bot.route.otherwise(({ deleteMessage }) => deleteMessage())
|
|
|
|
consign(config.consignOpts).include('handlers').then('route').into(bot)
|
|
|
|
bot.use(({ reply, i18n, message }) =>
|
|
reply(
|
|
i18n.t('default.noAnswer'),
|
|
Extra.HTML()
|
|
.inReplyTo(message.message_id)
|
|
.markup(m =>
|
|
m.inlineKeyboard([
|
|
m.callbackButton(i18n.t('default.closeMessage'), 'delete')
|
|
])
|
|
)
|
|
)
|
|
)
|
|
|
|
module.exports = { bot }
|