EnterCodeMessageHandler.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Collections.Generic;
  2. using System.Threading.Tasks;
  3. using MafiaTelegramBot.Controllers;
  4. using MafiaTelegramBot.Extensions;
  5. using MafiaTelegramBot.Game;
  6. using MafiaTelegramBot.Resources;
  7. using Telegram.Bot.Types;
  8. namespace MafiaTelegramBot.Commands.Messages
  9. {
  10. public class EnterCodeHandler : MessageHandler
  11. {
  12. protected override string Command => "";
  13. private static readonly List<long> Queue = new();
  14. public static void AddToQueue(long id)
  15. {
  16. Logs.LogOut(typeof(EnterCodeHandler), "AddToQueue");
  17. Queue.AddUnique(id);
  18. }
  19. public override bool IsMatches(string command)
  20. {
  21. Logs.LogOut(GetType(), "IsMatches");
  22. return User != null ? Queue.Contains(User.Info.Id) : base.IsMatches(command);
  23. }
  24. public override async Task<Message> Execute(Update update)
  25. {
  26. Logs.LogOut(GetType(), "Execute");
  27. Queue.Remove(User.Info.Id);
  28. var roomKey = update.Message.Text;
  29. var resultCode = await RoomController.ConnectToGame(User, roomKey);
  30. var result = resultCode == ResultCode.CodeOk
  31. ? MessageController.SendText(User.Info, strings.successful_entry_into_room, Keyboard.PlayerGameMenu)
  32. : MessageController.SendText(User.Info, Utilities.GetResultCodeMessage(resultCode));
  33. return await result;
  34. }
  35. public EnterCodeHandler(Player player) : base(player) { }
  36. }
  37. }