StartGameMessageHandler.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233
  1. using System.Threading.Tasks;
  2. using MafiaTelegramBot.Controllers;
  3. using MafiaTelegramBot.Game;
  4. using MafiaTelegramBot.Resources;
  5. using Telegram.Bot.Types;
  6. namespace MafiaTelegramBot.Commands.Messages
  7. {
  8. public class StartGameMessageHandler : MessageHandler
  9. {
  10. protected override string Command => keyboard.begin_game;
  11. public override async Task<Message> Execute(Update update)
  12. {
  13. Logs.LogOut(GetType(), "Execute");
  14. var roomKey = RoomEncrypter.GetCode(User.GetRoomName());
  15. var room = RoomController.GetRoom(roomKey);
  16. if(room == null)
  17. return await MessageController.SendText(User.Info, strings.room_does_not_exists);
  18. if (!User.Equals(room.Owner))
  19. return await new CommandNotFound(User, update.Message.Text).Execute(update);
  20. if (room.IsExtended) return await MessageController.SendText(User.Info, strings.continue_question, Keyboard.StartExtendedRoomKeyboard());
  21. var result = await MessageController.SendText(User.Info, strings.game_process_started);
  22. var resultCode = await room.Prepare();
  23. if (resultCode != ResultCode.CodeOk)
  24. return await MessageController.SendText(User.Info, Utilities.GetResultCodeMessage(resultCode));
  25. room.Start();
  26. return result;
  27. }
  28. public StartGameMessageHandler(Player player) : base(player) { }
  29. }
  30. }