using System; using System.Threading.Tasks; using MafiaTelegramBot.DataBase.EntityDao; using MafiaTelegramBot.Models; using MafiaTelegramBot.Resources; using Telegram.Bot.Types; namespace MafiaTelegramBot.Game.GameRooms { public partial class GameRoom { public class QueryHandler { private readonly GameRoom _room; public QueryHandler(GameRoom room) { _room = room; } public async Task Handle(Update update) { var data = update.CallbackQuery.Data.Split('|'); var userId = long.Parse(data[1]); var player = await UserDao.GetPlayerById(userId); var chatId = player.ChatId; var command = Enum.Parse(data[0]); var message = command switch { Callback.Vote => await VoteAsync(player, long.Parse(data[2])), Callback.Skip => await SkipAsync(player), Callback.Target => await player.CurrentRole.SetNightTarget(long.Parse(data[2])), _ => await Bot.SendWithMarkdown2(chatId, strings.not_supported_in_game) }; } private async Task VoteAsync(Player player, long targetId) { var message = await _room.PutUpVote(player.Id, targetId); player.CurrentRole.VoteEvent.Set(); return message; } private async Task SkipAsync(Player player) { return await Bot.SendWithMarkdown2(player.ChatId, strings.you_skip_vote); } } } }