import { Bot } from "https://deno.land/x/grammy/mod.ts"; import { Kysely } from "npm:kysely"; import { Ctx } from "../ctx.ts"; import { CompiledConfig } from "../../cfg/config.ts"; import { Database } from "../../repo/exports.ts"; import { checkUser, checkUserOnNewChatMember } from "./user_managment.ts"; import { checkCaptchaSolution, initUserCaptcha } from "./captcha.ts"; import { checkUserOnStart } from "./user_managment.ts"; export const init = (bot: Bot, db: Kysely, cfg: CompiledConfig) => { const { botCfg } = cfg bot.on('message', ctx => { if (ctx.from.is_bot) return checkUser(ctx, db, botCfg) }) bot.on('chat_member', async ctx => { if (ctx.chatMember.from.is_bot || ctx.chat.id !== botCfg.chat_id) return await checkUserOnNewChatMember(ctx, db, botCfg) // TODO: // const userInfo = await checkUserOnNewChatMember(ctx, db, botCfg) //if (userInfo.isNewUser) { /* Some hello message? */ } }) bot.on('message:text', ctx => { if (ctx.from.is_bot || ctx.hasCommand('start')) return if (ctx.chat.id === botCfg.chat_id) { checkUser(ctx, db, botCfg, true) } else if (ctx.message.chat.type == "private" && ctx.session.captcha_data) { checkCaptchaSolution(ctx, db, botCfg) } }) bot.command('start', async ctx => { if (!ctx.from || ctx.from.is_bot) return if (ctx.chat.type !== 'private') return const userInfo = await checkUserOnStart(ctx, db) if (userInfo.isBlocked || userInfo.isTimeout) return // TODO: if (userInfo.isNewUser) { /* Some hello message? */ } if (!ctx.session.captcha_data) { await initUserCaptcha(ctx, db, userInfo, botCfg) } }) }