This commit is contained in:
Kirill Ivlev 2024-11-13 02:09:28 +04:00
parent 09d2b3513b
commit 39534c2884
3 changed files with 36 additions and 27 deletions

View file

@ -23,6 +23,7 @@ import {Inject, Logger} from "@nestjs/common";
import AppConsts from "../constants";
import {ClientProxy} from "@nestjs/microservices";
import {catchError} from "rxjs";
import {TGHandlers} from "./handlers";
@Update()
export class BotUpdate {
@ -95,31 +96,7 @@ export class BotUpdate {
@On('callback_query')
async onInlineQuery(@Ctx() ctx: any) {
let data = undefined;
try {
data = JSON.parse(ctx.update.callback_query.data);
} catch(error) {
this.logger.verbose(`[onInlineQuery]: can't parse json callback, checking content for other payload`);
}
if(data) {
this.gameService.emit({ cmd: 'ApplyDebuff'}, { ...ctx.callbackQuery, from: ctx.from.id });
await ctx.editMessageReplyMarkup(undefined);
await ctx.editMessageText("ответ принят!");
}
if(ctx.update.callback_query.message.text.indexOf('Внимание') !== -1) {
const answer =ctx.update.callback_query.data;
this.gameService.emit({ cmd: "QuestionAnswer"}, { user: ctx.from.id, answer: answer, name: ctx.from.first_name });
await ctx.editMessageReplyMarkup(undefined);
await ctx.editMessageText("ответ принят!");
} else if(ctx.update.callback_query.data.startsWith('card/')) {
const cardtoplay = ctx.update.callback_query.data.substring('card/'.length);
this.gameService.emit({cmd: 'CardPlayed'}, {text: cardtoplay, user: ctx.update.callback_query.from.id})
await ctx.editMessageReplyMarkup(undefined);
await ctx.editMessageText("карта выбрана");
} else
{
//console.log(ctx.update);
}
await TGHandlers.handleCallback(ctx, this.logger, this.gameService);
}
@Hears(Messages.CHANGE_PHOTO)

32
src/bot/handlers.ts Normal file
View file

@ -0,0 +1,32 @@
import {Logger} from "@nestjs/common";
import {ClientProxy} from "@nestjs/microservices";
export class TGHandlers {
static async handleCallback(ctx:any, logger: Logger, gameService: ClientProxy) {
let data = undefined;
try {
data = JSON.parse(ctx.update.callback_query.data);
} catch(error) {
logger.verbose(`[onInlineQuery]: can't parse json callback, checking content for other payload`);
}
if(data) {
gameService.emit({ cmd: 'ApplyDebuff'}, { ...ctx.callbackQuery, from: ctx.from.id });
await ctx.editMessageReplyMarkup(undefined);
await ctx.editMessageText("ответ принят!");
}
if(ctx.update.callback_query.message.text.indexOf('Внимание') !== -1) {
const answer =ctx.update.callback_query.data;
gameService.emit({ cmd: "QuestionAnswer"}, { user: ctx.from.id, answer: answer, name: ctx.from.first_name });
await ctx.editMessageReplyMarkup(undefined);
await ctx.editMessageText("ответ принят!");
} else if(ctx.update.callback_query.data.startsWith('card/')) {
const cardtoplay = ctx.update.callback_query.data.substring('card/'.length);
gameService.emit({cmd: 'CardPlayed'}, {text: cardtoplay, user: ctx.update.callback_query.from.id})
await ctx.editMessageReplyMarkup(undefined);
await ctx.editMessageText("карта выбрана");
} else
{
//console.log(ctx.update);
}
}
}

View file

@ -6,6 +6,7 @@ import { Messages } from '../tg.text';
import {Context} from "../context.interface";
import AppConsts from "../../constants";
import {ClientProxy} from "@nestjs/microservices";
import {TGHandlers} from "../handlers";
@Scene(QUIZ_SCENE)
export class QuizScene {
@ -50,8 +51,7 @@ export class QuizScene {
@On('callback_query')
async onInlineQuery(@Ctx() ctx: Context) {
this.logger.verbose(`emit callback for ${ctx.callbackQuery}`);
await TGHandlers.handleCallback(ctx, this.logger, this.gameService);
}
@On('text')
async onText(@Message('text') text: string, @Ctx() ctx: Context) {