1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 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<Callback>(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<Message> VoteAsync(Player player, long targetId)
- {
- var message = await _room.PutUpVote(player.Id, targetId);
- player.CurrentRole.VoteEvent.Set();
- return message;
- }
- private async Task<Message> SkipAsync(Player player)
- {
- return await Bot.SendWithMarkdown2(player.ChatId, strings.you_skip_vote);
- }
- }
- }
- }
|