Bladeren bron

Admin panel keyboard

Tigran 4 jaren geleden
bovenliggende
commit
a632bccf1c

+ 7 - 2
MafiaTelegramBot/Controllers/RoomController.cs

@@ -78,8 +78,13 @@ namespace MafiaTelegramBot.Controllers
             {
                 if (OpenedGames.ContainsKey(roomKey))
                 {
-                    await OpenedGames[roomKey].PlayersMessageChannel.Send(strings.room_dissolved, Keyboard.MainMenu);
-                    foreach (var player in OpenedGames[roomKey].Players.Values) await player.RemoveGame();
+                    foreach (var player in OpenedGames[roomKey].Players.Values)
+                    {
+                        await OpenedGames[roomKey].PlayersMessageChannel.SendTo(player.Id, strings.room_dissolved,
+                            player.IsAdmin ? Keyboard.AdminMainMenu : Keyboard.MainMenu);
+                        await player.RemoveGame();
+                        player.ResetState();
+                    }
                     RoomEncrypter.RemoveCode(OpenedGames[roomKey].RoomName);
                     OpenedGames[roomKey].DeleteTimer();
                     OpenedGames.Remove(roomKey);

+ 1 - 1
MafiaTelegramBot/DataBase/Entity/UserEntity.cs

@@ -29,7 +29,7 @@ namespace MafiaTelegramBot.DataBase.Entity
         
         [Column("rank_number") , MaxLength(127)] public int RankNumber { get; set; } = 0;
         
-        [Column("is_admin"), MaxLength(127)] private int isAdmin { get; set; } = 0;
+        [Column("is_admin"), MaxLength(127)] public int isAdmin { get; set; } = 0;
 
         [NotMapped]
         public bool IsAdmin

+ 2 - 1
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageHandler.cs

@@ -103,7 +103,8 @@ namespace MafiaTelegramBot.Game.GameRooms
                         {
                             var resultCode = await RoomController.LeaveFromGame(player);
                             if (resultCode == ResultCode.CodeOk)
-                                await Bot.SendWithMarkdown2(player.ChatId, $"{strings.you_leave_from_game} _*{roomName}*_", Keyboard.MainMenu);
+                                await Bot.SendWithMarkdown2(player.ChatId, $"{strings.you_leave_from_game} _*{roomName}*_",
+                                    player.IsAdmin ? Keyboard.AdminMainMenu : Keyboard.MainMenu);
                             else await Utilities.GetResultCodeMessage(resultCode, player.ChatId);
                         }
                     }

+ 1 - 0
MafiaTelegramBot/Models/Bot.cs

@@ -55,6 +55,7 @@ namespace MafiaTelegramBot.Models
                 new KickPlayerCommand(),
                 new DissolveRoomCommand(),
                 new StartGameCommand(),
+                new AdminPanelCommand(),
             };
         }
         

+ 18 - 0
MafiaTelegramBot/Models/Commands/AdminPanelCommand.cs

@@ -0,0 +1,18 @@
+using System.Threading.Tasks;
+using MafiaTelegramBot.DataBase.EntityDao;
+using MafiaTelegramBot.Resources;
+using Telegram.Bot.Types;
+
+namespace MafiaTelegramBot.Models.Commands
+{
+    public class AdminPanelCommand : Command
+    {
+        protected override string Name => keyboard.admin_panel;
+        protected override async Task<Message> Execute(Update update)
+        {
+            var user = await UserDao.GetPlayerById(UserId);
+            if (user.IsAdmin) return await Bot.SendWithMarkdown2(ChatId, strings.start_message, Keyboard.AdminPanelKeyboard(UserId));
+            return await Bot.SendWithMarkdown2(ChatId, $"{strings.command_not_found} _*({update.Message.Text})*_");
+        }
+    }
+}

+ 1 - 1
MafiaTelegramBot/Models/Commands/DissolveRoomCommand.cs

@@ -16,7 +16,7 @@ namespace MafiaTelegramBot.Models.Commands
             var roomKey = RoomEncrypter.GetCode(user.GetRoomName());
             var resultCode = await RoomController.LeaveFromGame(user);
             var result = resultCode == ResultCode.CodeOk
-                ? await Bot.SendWithMarkdown2(ChatId, strings.room_dissolved, Keyboard.MainMenu)
+                ? await Bot.SendWithMarkdown2(ChatId, strings.room_dissolved, user.IsAdmin ? Keyboard.AdminMainMenu : Keyboard.MainMenu)
                 : await Utilities.GetResultCodeMessage(resultCode, ChatId);
             if (resultCode == ResultCode.CodeOk) await RoomController.DissolveRoom(roomKey);
             return result;

+ 1 - 1
MafiaTelegramBot/Models/Commands/LeaveCommand.cs

@@ -16,7 +16,7 @@ namespace MafiaTelegramBot.Models.Commands
             var roomName = user.GetRoomName();
             var resultCode = await RoomController.LeaveFromGame(user);
             return resultCode == ResultCode.CodeOk
-                ? await Bot.SendWithMarkdown2(ChatId, $"{strings.you_leave_from_game} _*{roomName}*_", Keyboard.MainMenu)
+                ? await Bot.SendWithMarkdown2(ChatId, $"{strings.you_leave_from_game} _*{roomName}*_", user.IsAdmin ? Keyboard.AdminMainMenu : Keyboard.MainMenu)
                 : await Utilities.GetResultCodeMessage(resultCode, ChatId);
         }
     }

+ 3 - 1
MafiaTelegramBot/Models/Commands/StartCommand.cs

@@ -1,3 +1,4 @@
+using System;
 using System.Threading.Tasks;
 using MafiaTelegramBot.Controllers;
 using MafiaTelegramBot.DataBase.EntityDao;
@@ -14,10 +15,11 @@ namespace MafiaTelegramBot.Models.Commands
         {
             var command = update.Message.Text.Split(' ');
             var player = await UserDao.GetPlayerById(UserId);
+            Console.WriteLine(player.isAdmin);
             if (player.GetRoomName() != "")
                 return await Bot.SendWithMarkdown2(ChatId, $"{strings.prefer_leave_from_room} {player.GetRoomName()}");
             if (command.Length <= 1)
-                return await Bot.SendWithMarkdown2(ChatId, strings.start_message, Keyboard.MainMenu);
+                return await Bot.SendWithMarkdown2(ChatId, strings.start_message, player.IsAdmin ? Keyboard.AdminMainMenu : Keyboard.MainMenu);
             var code = await RoomController.ConnectToGame(player, command[1]);
             var result = code == ResultCode.CodeOk
                 ? Bot.SendWithMarkdown2(ChatId, strings.successful_entry_into_room, Keyboard.PlayerGameMenu)

+ 1 - 1
MafiaTelegramBot/Models/Inlines/KickSelectedPlayerQuery.cs

@@ -14,7 +14,7 @@ namespace MafiaTelegramBot.Models.Inlines
             var user = await UserDao.GetPlayerById(UserId);
             var resultCode = await RoomController.LeaveFromGame(user);
             if (resultCode != ResultCode.CodeOk) return await Utilities.GetResultCodeMessage(resultCode, ChatId);
-            return await Bot.SendWithMarkdown2(user.ChatId, $"{strings.you_were_kicked}", Keyboard.MainMenu);
+            return await Bot.SendWithMarkdown2(user.ChatId, $"{strings.you_were_kicked}", user.IsAdmin ? Keyboard.AdminMainMenu : Keyboard.MainMenu);
         }
     }
 }

+ 3 - 1
MafiaTelegramBot/Resources/Callback.cs

@@ -27,6 +27,8 @@ namespace MafiaTelegramBot.Resources
         ChooseGameMode,
         ChooseGameType,
         ConnectToNotRanked,
-        ConnectToRanked
+        ConnectToRanked,
+        GiveToAll,
+        GiveToSelected
     }
 }

+ 17 - 0
MafiaTelegramBot/Resources/Keyboard.cs

@@ -16,6 +16,14 @@ namespace MafiaTelegramBot.Resources
             }, true
         );
         
+        public static readonly ReplyKeyboardMarkup AdminMainMenu = new(new[]
+            {
+                new KeyboardButton[] {keyboard.admin_panel},
+                new KeyboardButton[] {keyboard.create_game},
+                new KeyboardButton[] {keyboard.connect_game, keyboard.show_profile},
+            }, true
+        );
+        
         public static readonly ReplyKeyboardMarkup OwnerGameMenu = new(new[]
             {
                 new KeyboardButton[] {keyboard.begin_game, keyboard.room_settings},
@@ -62,6 +70,15 @@ namespace MafiaTelegramBot.Resources
             });
         }
 
+        public static InlineKeyboardMarkup AdminPanelKeyboard(long userId)
+        {
+            return new( new[]
+                {
+                    new [] { InlineKeyboardButton.WithCallbackData(strings.give_roles_to_all_players, $"{Callback.GiveToAll}|{userId}|0") },
+                    new [] { InlineKeyboardButton.WithCallbackData(strings.give_role_to_selected_player, $"{Callback.GiveToSelected}|{userId}|0") },
+                });
+        }
+
         public static InlineKeyboardMarkup ChooseRoomView(long userId)
         {
             return new InlineKeyboardMarkup(new[]

+ 6 - 0
MafiaTelegramBot/Resources/keyboard.Designer.cs

@@ -104,5 +104,11 @@ namespace MafiaTelegramBot.Resources {
                 return ResourceManager.GetString("end_turn", resourceCulture);
             }
         }
+        
+        internal static string admin_panel {
+            get {
+                return ResourceManager.GetString("admin_panel", resourceCulture);
+            }
+        }
     }
 }

+ 3 - 0
MafiaTelegramBot/Resources/keyboard.resx

@@ -48,4 +48,7 @@
     <data name="end_turn" xml:space="preserve">
         <value>Закончить ход</value>
     </data>
+    <data name="admin_panel" xml:space="preserve">
+        <value>Панель администрирования</value>
+    </data>
 </root>

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

@@ -1196,5 +1196,17 @@ namespace MafiaTelegramBot {
                 return ResourceManager.GetString("choose_view_room", resourceCulture);
             }
         }
+        
+        internal static string give_roles_to_all_players {
+            get {
+                return ResourceManager.GetString("give_roles_to_all_players", resourceCulture);
+            }
+        }
+        
+        internal static string give_role_to_selected_player {
+            get {
+                return ResourceManager.GetString("give_role_to_selected_player", resourceCulture);
+            }
+        }
     }
 }

+ 6 - 0
MafiaTelegramBot/Resources/strings.resx

@@ -594,4 +594,10 @@
     <data name="choose_view_room" xml:space="preserve">
         <value>Выберите вид комнаты</value>
     </data>
+    <data name="give_roles_to_all_players" xml:space="preserve">
+        <value>Раздать роль всем игрокам</value>
+    </data>
+    <data name="give_role_to_selected_player" xml:space="preserve">
+        <value>Выдать роль определенному игроку</value>
+    </data>
 </root>