12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- #nullable enable
- using System;
- using System.Threading.Tasks;
- using MafiaTelegramBot.Controllers;
- using MafiaTelegramBot.DataBase.EntityDao;
- using MafiaTelegramBot.Game;
- using MafiaTelegramBot.Resources;
- using Telegram.Bot.Types;
- using Telegram.Bot.Types.Enums;
- using static System.Enum;
- namespace MafiaTelegramBot.Models.Inlines
- {
- public abstract class Query : UpdateModel<Callback>
- {
- protected override bool IsMatches(string command)
- {
- if (TryParse(command, out Callback res)) return Name == res;
- return false;
- }
- public static async Task Update(Update update)
- {
- var chatId = update.CallbackQuery.Message.Chat.Id;
- await Bot.Get().SendChatActionAsync(chatId, ChatAction.Typing);
- var data = update.CallbackQuery.Data;
- var userId = long.Parse(data.Split('|')[1]);
- Console.WriteLine($"{userId} {data}");
- var user = await UserDao.GetPlayerById(userId);
- user.SetActive();
- if (user.IsPlaying)
- {
- var roomKey = RoomEncrypter.GetCode(user.GetRoomName());
- var room = RoomController.GetRoom(roomKey);
- await room.QHandler.Handle(update);
- }
- else
- {
- var query = data.Split('|')[0];
- var queries = Bot.Queries;
- var command = FirstOrDefault(queries, query);
- if(command != null) await ((Query?) command.Clone(chatId, userId))!.Execute(update);
- else await Bot.SendWithMarkdown2(chatId, $"{strings.command_not_found} _*({data})*_");
- }
- }
- }
- }
|