diff --git a/Database.js b/Database.js
index de15312..1e2f6e7 100644
--- a/Database.js
+++ b/Database.js
@@ -80,13 +80,13 @@ class Database {
let prevtasks = 0;
try {
await client.query('BEGIN');
- let res = await client.query('SELECT * FROM qr_view WHERE task < $1 AND group_id = $2', [task, team]);
+ let res = await client.query('SELECT * FROM qr_view WHERE task = $1 AND group_id = $2', [task-1, team]);
prevtasks = res.rowCount;
await client.query('COMMIT');
} finally {
client.release();
}
- return prevtasks === task - 1;
+ return prevtasks > 0;
}
async getTeam(user) {
@@ -107,7 +107,11 @@ class Database {
let client = await this.pool.connect();
try {
await client.query('BEGIN');
- await client.query('INSERT INTO qr_completion (group_id, task) values ($1,$2)', [team, task]);
+ //add completion if not exists
+ let res = await client.query('SELECT * FROM qr_completion WHERE group_id = $1 AND task = $2', [team, task]);
+ if(res.rowCount === 0) {
+ await client.query('INSERT INTO qr_completion (group_id, task) values ($1,$2)', [team, task]);
+ }
await client.query('COMMIT');
} finally {
client.release();
diff --git a/index.js b/index.js
index 86de639..bfefff2 100644
--- a/index.js
+++ b/index.js
@@ -24,37 +24,66 @@ bot.start(async (ctx) => {
if (team == null) return;
let task = await database.getQRTask(code);
if (task == null) return;
- if (!await database.checkPreviousTasks(team.id,task.id)) {
+ if (!await database.checkPreviousTasks(team.id, task.id)) {
await ctx.reply("Вы не выполнили предыдущие задания или это одно из прошлых заданий");
return;
}
await database.addView(team.id, task.id);
- await database.addCompletion(team.id, task.id-1);
- let pTask = await database.getTask(task.id-1);
- await bot.telegram.sendMessage(-879242326, "Команда " + team.team_name + " получила задание " + task.short_name + "("+task.id+") и закончила задание "+pTask.short_name+"(" + (task.id-1) + ")");
- await ctx.reply(task.id + ") \n" + task.task_text);
+ await database.addCompletion(team.id, task.id - 1);
+ let pTask = await database.getTask(task.id - 1);
+ await bot.telegram.sendMessage(-879242326, "Команда " + team.team_name + " получила задание " + task.short_name + "(" + task.id + ") и закончила задание " + pTask.short_name + "(" + (task.id - 1) + ")");
+ if (code === "freead") {
+ await ctx.reply(task.id + ") \n" + task.task_text, Telegraf.Extra.markup((m) => m.inlineKeyboard([[m.callbackButton("Проверить выполнение", "check")]])));
+ } else {
+ await ctx.reply(task.id + ") \n" + task.task_text);
+ }
}
}
});
bot.command("top", async (ctx) => {
- if(ctx.chat.id!==-879242326) return;
+ 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].team_name + " - " + top[i].count + " заданий\n";
+ message += (i + 1) + ". " + top[i].team_name + " - " + top[i].count + " заданий\n";
}
await ctx.reply(message);
});
+bot.action("check", async (ctx) => {
+ bot.telegram.getChatMember("@ks54_op5", ctx.from.id).then(async (member) => {
+ if(member.status === "left") {
+ await ctx.answerCbQuery("Вы не состоите в @ks54_op5");
+ return;
+ }
+
+ bot.telegram.getChatMember("@studsovet_ks54", ctx.from.id).then(async (mem) => {
+ if (mem.status === "left") {
+ await ctx.answerCbQuery("Вы не состоите в @studsovet_ks54");
+ return;
+ }
+
+ let team = await database.getTeam(ctx.from.id);
+ if (team == null) return;
+ await bot.telegram.sendMessage(-879242326, "Команда " + team.team_name + " завершила прохождение квеста!");
+ await ctx.editMessageText("Поздравляем с прохождением QR квеста! Вы можете спускаться к Деду Морозу.")
+ }).catch(async (err) => {
+ await ctx.answerCbQuery("Вы не состоите в @studsovet_ks54");
+ });
+ }).catch(async (err) => {
+ await ctx.answerCbQuery("Вы не состоите в @ks54_op5");
+ });
+});
+
bot.on('text', async (ctx) => {
switch (ctx.session.state) {
case "register": {
let group = ctx.message.text;
await database.registerQRTeam(group, ctx.from.id);
- await ctx.reply("Группа зарегистрирована.\nГде обитают допуски?");
+ await ctx.reply("Группа зарегистрирована.\nЛиса на девятом небе отдыхает, найдёшь ли ты её?");
ctx.session.state = undefined;
- await bot.telegram.sendMessage(-879242326, "Группа " + group + " зарегистрирована by "+ctx.from.first_name+"", {parse_mode: "HTML"});
+ await bot.telegram.sendMessage(-879242326, "Группа " + group + " зарегистрирована by " + ctx.from.first_name + "", {parse_mode: "HTML"});
}
}
});