const Telegraf = require('telegraf'); const Database = require('./Database'); const session = require('telegraf/session'); let database = new Database(process.env.DATABASE_URL); let bot = new Telegraf.Telegraf(process.env.TOKEN); bot.use(session()); bot.start(async (ctx) => { let code = ctx.message.text.split(" ")[1]; if (!code) { await ctx.reply("Добро пожаловать на QR квест! Для участия используйте QR коды"); return; } await database.checkAndRegisterUser(ctx.from.id, ctx.from.first_name); bot.telegram.getChatMember("@ks54_op5", ctx.from.id).then(async (member) => { if(member.status === "left") { await ctx.reply("Вы не состоите в @ks54_op5"); return; } bot.telegram.getChatMember("@studsovet_ks54", ctx.from.id).then(async (mem) => { if (mem.status === "left") { await ctx.reply("Вы не состоите в @studsovet_ks54"); return; } let exists = await database.codeExists(code); if (!exists) { await ctx.reply("Код не найден, возможно вы криво отсканировали QR код или пытаете его подделать"); return; } let used = await database.useCode(code, ctx.from.id); if (used) { let userCodes = await database.getUserCodes(ctx.from.id); let totalCodes = await database.getTotalCodes(); await ctx.reply("Код успешно использован, собрано " + userCodes + " из " + totalCodes + " кодов"); await bot.telegram.sendMessage(-879242326, `${ctx.from.first_name} отсканировал код ${userCodes} из ${totalCodes}`, {parse_mode: "HTML"}); } else { await ctx.reply("Код уже использован"); } }).catch(async (err) => { await ctx.reply("Вы не состоите в @studsovet_ks54"); }); }).catch(async (err) => { await ctx.reply("Вы не состоите в @ks54_op5"); }); }); bot.command("top", async (ctx) => { if (ctx.chat.id !== -879242326) return; let top = await database.getTop(); let message = "Топ игроков:\n"; for (let i = 0; i < top.length; i++) { message += `${(i + 1)}. ${top[i].name} - ${top[i].count} кодов\n`; } await ctx.reply(message, {parse_mode: "HTML"}); }); bot.startPolling();