123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- using System.Collections.Generic;
- using System.Threading.Tasks;
- using MafiaTelegramBot.Controllers;
- using MafiaTelegramBot.Extensions;
- using MafiaTelegramBot.Game;
- using MafiaTelegramBot.Resources;
- using Telegram.Bot.Types;
- namespace MafiaTelegramBot.Commands.Messages
- {
- public class CreateRoomHandler : MessageHandler
- {
- protected override string Command => "";
-
- private static readonly Dictionary<long, string> Queue = new();
- public static void AddToQueue(long id, string param)
- {
- Queue.AddUniqueOrReplaceByKey(id, param);
- }
- public override bool IsMatches(string command)
- {
- return User != null ? Queue.ContainsKey(User.Info.Id) : base.IsMatches(command);
- }
- public override async Task<Message> Execute(Update update)
- {
- var param = Queue[User.Info.Id];
- Queue.Remove(User.Info.Id);
- var isPrivate = param[0] == Constants.PRIVATE + '0';
- var isExtended = param[1] == Constants.EXTENDED + '0';
- var isRanking = param[2] == Constants.RANKING + '0';
- var roomName = update.Message.Text;
- var resultCode = await RoomController.CreateNewGame(User, roomName, isExtended, isPrivate, isRanking);
- var result = resultCode == ResultCode.CodeOk
- ? await MessageController.SendText(User.Info, $"{strings.room_with_name} {roomName} {strings.was_created}\n", Keyboard.OwnerGameMenu)
- : await MessageController.SendText(User.Info, Utilities.GetResultCodeMessage(resultCode));
- if (resultCode == ResultCode.CodeOk && isPrivate)
- await MessageController.SendText(User.Info, $"{strings.secret_key_is} {roomName}: {RoomEncrypter.GetCode(roomName)}");
- if (resultCode == ResultCode.CodeOk && !isRanking)
- await MessageController.SendTextWithHtml(User.Info, $"<a href='https://t.me/{AppSettings.Name}?start=room_key={RoomEncrypter.GetCode(roomName)}'>{strings.link}</a>");
- return result;
- }
- public CreateRoomHandler(Player player) : base(player) { }
- }
- }
|