浏览代码

Add unblocking user

Tigran 4 年之前
父节点
当前提交
d9adbab623

+ 1 - 0
MafiaTelegramBot/Commands/CallbackQueries/CallbackQueryHandler.cs

@@ -41,6 +41,7 @@ namespace MafiaTelegramBot.Commands.CallbackQueries
             new ShowMyRolesCallbackQueryHandler(null),
             new StartGameCallbackQueryHandler(null),
             new SwitchTimerCallbackQueryHandler(null),
+            new UnblockUserCallbackQueryHandler(null),
         };
 
         public CallbackQueryHandler(Player player) : base(player) { }

+ 27 - 0
MafiaTelegramBot/Commands/CallbackQueries/UnblockUserCallbackQueryHandler.cs

@@ -0,0 +1,27 @@
+using System.Threading.Tasks;
+using MafiaTelegramBot.Commands.Messages;
+using MafiaTelegramBot.Controllers;
+using MafiaTelegramBot.Game;
+using MafiaTelegramBot.Resources;
+using Telegram.Bot.Types;
+
+namespace MafiaTelegramBot.Commands.CallbackQueries
+{
+    public class UnblockUserCallbackQueryHandler : UpdateHandler
+    {
+        protected override string Command => Callback.UnblockUser.ToString();
+
+        public override Task<Message> Execute(Update update)
+        {
+            UnblockUserMessageHandler.AddToQueue(User.Info.Id);
+            return MessageController.SendText(User.Info, strings.enter_username);
+        }
+        
+        public override bool IsMatches(string command)
+        {
+            return User != null ? base.IsMatches(command) && User.Info.IsAdmin : base.IsMatches(command);
+        }
+        
+        public UnblockUserCallbackQueryHandler(Player player) : base(player) { }
+    }
+}

+ 5 - 3
MafiaTelegramBot/Commands/Messages/AdminPanelMessageHandler.cs

@@ -11,11 +11,13 @@ namespace MafiaTelegramBot.Commands.Messages
         protected override string Command => keyboard.admin_panel;
         public override async Task<Message> Execute(Update update)
         {
-            if (User.Info.IsAdmin)
-                return await MessageController.SendText(User.Info, strings.start_message, Keyboard.AdminPanelKeyboard());
-            return await new CommandNotFound(User, update.Message.Text).Execute(update);
+            return await MessageController.SendText(User.Info, strings.start_message, Keyboard.AdminPanelKeyboard());
         }
 
+        public override bool IsMatches(string command)
+        {
+            return User != null ? base.IsMatches(command) && User.Info.IsAdmin : base.IsMatches(command);
+        }
 
         public AdminPanelMessageHandler(Player player) : base(player) { }
     }

+ 1 - 0
MafiaTelegramBot/Commands/Messages/MessageHandler.cs

@@ -15,6 +15,7 @@ namespace MafiaTelegramBot.Commands.Messages
             new ChangeNicknameHandler(null),
             new CreateRoomHandler(null),
             new EnterCodeHandler(null),
+            new UnblockUserMessageHandler(null),
             
             // Остальные обработчики
             new AdminPanelMessageHandler(null),

+ 40 - 0
MafiaTelegramBot/Commands/Messages/UnblockUserMessageHandler.cs

@@ -0,0 +1,40 @@
+using System.Collections.Generic;
+using System.Threading.Tasks;
+using MafiaTelegramBot.Controllers;
+using MafiaTelegramBot.DataBase.EntityDao;
+using MafiaTelegramBot.Extensions;
+using MafiaTelegramBot.Game;
+using MafiaTelegramBot.Resources;
+using Telegram.Bot.Types;
+
+namespace MafiaTelegramBot.Commands.Messages
+{
+    public class UnblockUserMessageHandler : UpdateHandler
+    {
+        protected override string Command => "";
+        
+        private static readonly List<long> Queue = new();
+
+        public static void AddToQueue(long id)
+        {
+            Queue.AddUnique(id);
+        }
+
+        public override bool IsMatches(string command)
+        {
+            return User != null ? Queue.Contains(User.Info.Id) : base.IsMatches(command);
+        }
+        
+        public override async Task<Message> Execute(Update update)
+        {
+            Queue.Remove(User.Info.Id);
+            var targetId = await UserDao.GetIdByUsername(update.Message.Text);
+            if (targetId == -1) return await MessageController.SendText(User.Info, strings.user_not_exists);
+            var target = await UserDao.GetPlayerById(targetId);
+            target.Info.IsBlocked = false;
+            return await MessageController.SendText(User.Info, $"{strings.successfully_unblock_user} {target.Info.NickName}");
+        }
+
+        public UnblockUserMessageHandler(Player player) : base(player) { }
+    }
+}

+ 2 - 1
MafiaTelegramBot/Resources/Callback.cs

@@ -35,6 +35,7 @@ namespace MafiaTelegramBot.Resources
         PackOpen,
         PackInfo,
         ShowMyPacks,
-        BackToProfile
+        BackToProfile,
+        UnblockUser
     }
 }

+ 1 - 0
MafiaTelegramBot/Resources/Keyboard.cs

@@ -79,6 +79,7 @@ namespace MafiaTelegramBot.Resources
                 {
                     new [] { InlineKeyboardButton.WithCallbackData(strings.give_roles_to_all_players, $"{Callback.GiveToAll}") },
                     new [] { InlineKeyboardButton.WithCallbackData(strings.give_role_to_selected_player, $"{Callback.GiveToSelected}") },
+                    new [] { InlineKeyboardButton.WithCallbackData(strings.unblock_user_or_channel, $"{Callback.UnblockUser}") },
                 });
         }
 

+ 18 - 0
MafiaTelegramBot/Resources/strings.Designer.cs

@@ -1590,6 +1590,15 @@ namespace MafiaTelegramBot {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Успешно разблокирован пользователь/канал.
+        /// </summary>
+        internal static string successfully_unblock_user {
+            get {
+                return ResourceManager.GetString("successfully_unblock_user", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Игра окончена, спасибо за игру!.
         /// </summary>
@@ -1689,6 +1698,15 @@ namespace MafiaTelegramBot {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Разблокировать пользователя или канал.
+        /// </summary>
+        internal static string unblock_user_or_channel {
+            get {
+                return ResourceManager.GetString("unblock_user_or_channel", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Произошла неожиданная ошибка... Попробуйте ещё раз..
         /// </summary>

+ 6 - 0
MafiaTelegramBot/Resources/strings.resx

@@ -750,4 +750,10 @@
     <data name="back_to_profile" xml:space="preserve">
         <value>&lt;- назад</value>
     </data>
+    <data name="unblock_user_or_channel" xml:space="preserve">
+        <value>Разблокировать пользователя или канал</value>
+    </data>
+    <data name="successfully_unblock_user" xml:space="preserve">
+        <value>Успешно разблокирован пользователь/канал</value>
+    </data>
 </root>