Tigran 4 lat temu
rodzic
commit
7e6eddedac

+ 7 - 9
MafiaTelegramBot/Game/GameRoles/BodyguardRole.cs

@@ -1,16 +1,15 @@
-using System;
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.Commands;
+using MafiaTelegramBot.Controllers;
 using MafiaTelegramBot.Game.GameRooms;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
+
 namespace MafiaTelegramBot.Game.GameRoles
 {
     public class BodyguardRole : GameRoom.Role
     {
         public override Roles RoleKey => Roles.Bodyguard;
-        public override int RankingCost { get; } = 20;
+        public override int RankingCost => 20;
 
         private int _color = 1;
 
@@ -24,10 +23,9 @@ namespace MafiaTelegramBot.Game.GameRoles
         {
             if (Player.IsAlive)
             {
-                NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Id != Player.Id && p.Id != NightTargetId).ToList();
+                NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Info.Id != Player.Info.Id && p.Info.Id != NightTargetId).ToList();
                 NightTargetId = -1;
-                var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_target_to_protect,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_target_to_protect, Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -50,11 +48,11 @@ namespace MafiaTelegramBot.Game.GameRoles
         }
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");  
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");  
             }
         }
         public BodyguardRole(GameRoom room, Player player) : base(room, player) { }

+ 8 - 10
MafiaTelegramBot/Game/GameRoles/CopRole.cs

@@ -1,4 +1,3 @@
-using System;
 using System.Linq;
 using System.Threading.Tasks;
 using MafiaTelegramBot.Game.GameRooms;
@@ -27,9 +26,8 @@ namespace MafiaTelegramBot.Game.GameRoles
             if (Player.IsAlive)
             {
                 NightTargetList = Room.Players.Values
-                    .Where(p => p.IsAlive && (!KnownRoles.ContainsKey(p.Id) || Room.IsExtended) && p.Id != Player.Id).ToList();
-                var message = await Room.PlayersMessageChannel.SendTo(Player.ChatId, strings.choose_player_to_check_role,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                    .Where(p => p.IsAlive && (!KnownRoles.ContainsKey(p.Info.Id) || Room.IsExtended) && p.Info.Id != Player.Info.Id).ToList();
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_check_role, Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -50,21 +48,21 @@ namespace MafiaTelegramBot.Game.GameRoles
                     if (Room.Players[NightTargetId].CurrentRole.ColorRole == 1) CountRed++;
                     if (Room.Players[NightTargetId].CurrentRole.ColorRole == 2) CountBlack++;
                     if (KnownRoles.ContainsKey(NightTargetId)) KnownRoles[NightTargetId] = role;
-                    else KnownRoles.Add(Room.Players[NightTargetId].Id, role);
-                    await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,
-                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].NickName} - {role}");
+                    else KnownRoles.Add(Room.Players[NightTargetId].Info.Id, role);
+                    await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,
+                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].Info.NickName} - {role}");
                 }
-                else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
+                else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.this_player_left_from_game);
             }
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
             }
         }
 

+ 12 - 16
MafiaTelegramBot/Game/GameRoles/DameRole.cs

@@ -1,8 +1,6 @@
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.Commands;
 using MafiaTelegramBot.Game.GameRooms;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 
 namespace MafiaTelegramBot.Game.GameRoles
@@ -28,14 +26,12 @@ namespace MafiaTelegramBot.Game.GameRoles
             {
                 Player.IsSpeaker = true;
                 var alivePlayers = Room.Players.Values.Where(p => p.IsAlive).ToList();
-                NightTargetList = alivePlayers.Where(p => p.CanBeBlockedDay && p.Id != Player.Id).ToList();
+                NightTargetList = alivePlayers.Where(p => p.CanBeBlockedDay && p.Info.Id != Player.Info.Id).ToList();
 
-                var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_block,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_block, Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
 
-                message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_kill,
-                    Keyboard.NightMafiaTargetKeyboard(alivePlayers, Player.Id));
+                message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_kill, Keyboard.NightMafiaTargetKeyboard(alivePlayers));
                 MafiaMessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -46,17 +42,17 @@ namespace MafiaTelegramBot.Game.GameRoles
             Player.IsSpeaker = false;
             if (NightTargetId != -2 && MafiaTargetId != -2 && NightTargetId != -3)
             {
-                if (MafiaTargetId == -1) await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
+                if (MafiaTargetId == -1) await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_have_not_choosen_target);
                 else MafiaTargetId = -1;
                 if (NightTargetId == -1) await SetRandomNightTarget();
                 if(Room.Players.ContainsKey(NightTargetId))
                 {
                     Room.Players[NightTargetId].IsBlocked = true;
                     Room.Players[NightTargetId].CanBeBlockedDay = false;
-                    await Room.PlayersMessageChannel.SendTo(NightTargetId, strings.dame_block_you);
-                    await Room.PlayersMessageChannel.SendExcept(NightTargetId, $"{strings.dame_block_player} " +
+                    await Room.PlayersMessageChannel.SendTo(Room.Players[NightTargetId].Info, strings.dame_block_you);
+                    await Room.PlayersMessageChannel.SendExcept(Room.Players[NightTargetId].Info, $"{strings.dame_block_player} " +
                                                                    $"({Room.Players[NightTargetId].TurnOrder}) " +
-                                                                   $"{Room.Players[NightTargetId].NickName}. " +
+                                                                   $"{Room.Players[NightTargetId].Info.NickName}. " +
                                                                    $"{strings.player_cant_talk_and_vote}");
                 }
             }
@@ -64,20 +60,20 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].Info.NickName}");
             }
         }
 
         public override async Task SetMafiaTarget(long userId)
         {
             MafiaTargetId = userId;
-            if (userId == -4) await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_skip_vote);
-            else if(!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
-            else await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+            if (userId == -4) await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_skip_vote);
+            else if(!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
+            else await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
         }
         
         public DameRole(GameRoom room, Player player) : base(room, player) { }

+ 9 - 10
MafiaTelegramBot/Game/GameRoles/DetectiveRole.cs

@@ -25,8 +25,7 @@ namespace MafiaTelegramBot.Game.GameRoles
             {
                 _action = "";
                 NightTargetList = Room.Players.Values.Where(p => p.IsAlive).ToList();
-                var message = await Room.PlayersMessageChannel.SendTo(Player.ChatId, strings.choose_player_to_check_or_kill,
-                    Keyboard.DetectiveTargetKeyboard(NightTargetList, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_check_or_kill, Keyboard.DetectiveTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -52,37 +51,37 @@ namespace MafiaTelegramBot.Game.GameRoles
                                 ? roles.Mafia
                                 : roles.Villager;
                         if (KnownRoles.ContainsKey(NightTargetId)) KnownRoles[NightTargetId] = role;
-                        else KnownRoles.Add(Room.Players[NightTargetId].Id, role);
-                        await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,
-                            $"{strings.role_of_your_target} {Room.Players[NightTargetId].NickName} - {role}");
+                        else KnownRoles.Add(Room.Players[NightTargetId].Info.Id, role);
+                        await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,
+                            $"{strings.role_of_your_target} {Room.Players[NightTargetId].Info.NickName} - {role}");
                     }
                     else
                     {
                         await Room.Players[NightTargetId].CurrentRole.Kill();
                     }
                 }
-                else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
+                else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.this_player_left_from_game);
             }
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
             }
         }
 
         public async Task SetNightTarget(long userId, string action)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 _action = action;
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
             }
         }
 

+ 4 - 5
MafiaTelegramBot/Game/GameRoles/DoctorRole.cs

@@ -23,8 +23,7 @@ namespace MafiaTelegramBot.Game.GameRoles
             if (Player.IsAlive)
             {
                 NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.CanBeHealed).ToList();
-                var message = await Room.PlayersMessageChannel.SendTo(Player.Id, strings.choose_player_to_heal,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_heal, Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -50,12 +49,12 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                if(userId == Player.Id) await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,strings.you_heal_yourself);
-                else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].NickName}");
+                if(userId == Player.Info.Id) await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,strings.you_heal_yourself);
+                else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].Info.NickName}");
             }
         }
 

+ 13 - 17
MafiaTelegramBot/Game/GameRoles/DonRole.cs

@@ -1,8 +1,6 @@
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.Commands;
 using MafiaTelegramBot.Game.GameRooms;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 
 namespace MafiaTelegramBot.Game.GameRoles
@@ -27,14 +25,12 @@ namespace MafiaTelegramBot.Game.GameRoles
                 Player.IsSpeaker = true;
                 var alivePlayers = Room.Players.Values.Where(p => p.IsAlive).ToList();
                 NightTargetList = alivePlayers
-                    .Where(p => p.IsAlive && (!KnownRoles.ContainsKey(p.Id) || Room.IsExtended) && p.Id != Player.Id).ToList();
+                    .Where(p => p.IsAlive && (!KnownRoles.ContainsKey(p.Info.Id) || Room.IsExtended) && p.Info.Id != Player.Info.Id).ToList();
 
-                var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_check_role,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_check_role, Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
 
-                message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_kill,
-                    Keyboard.NightMafiaTargetKeyboard(alivePlayers, Player.Id));
+                message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_kill, Keyboard.NightMafiaTargetKeyboard(alivePlayers));
                 MafiaMessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -45,7 +41,7 @@ namespace MafiaTelegramBot.Game.GameRoles
             Player.IsSpeaker = false;
             if (NightTargetId != -2 && MafiaTargetId != -2 && NightTargetId != -3)
             {
-                if (MafiaTargetId == -1) await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
+                if (MafiaTargetId == -1) await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_have_not_choosen_target);
                 else MafiaTargetId = -1;
                 if (NightTargetId == -1) await SetRandomNightTarget();
                 if(Room.Players.ContainsKey(NightTargetId))
@@ -54,30 +50,30 @@ namespace MafiaTelegramBot.Game.GameRoles
                         ? Room.Players[NightTargetId].GetRoleName()
                         : strings.not_cop;
                     if (KnownRoles.ContainsKey(NightTargetId)) KnownRoles[NightTargetId] = role;
-                    else KnownRoles.Add(Room.Players[NightTargetId].Id, role);
-                    await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,
-                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].NickName} - {role}");
+                    else KnownRoles.Add(Room.Players[NightTargetId].Info.Id, role);
+                    await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,
+                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].Info.NickName} - {role}");
                 }
-                else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
+                else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.this_player_left_from_game);
             }
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].Info.NickName}");
             }
         }
 
         public override async Task SetMafiaTarget(long userId)
         {
             MafiaTargetId = userId;
-            if (userId == -4) await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_skip_vote);
-            else if(!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
-            else await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+            if (userId == -4) await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_skip_vote);
+            else if(!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
+            else await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
         }
         
         public DonRole(GameRoom room, Player player) : base(room, player) { }

+ 1 - 1
MafiaTelegramBot/Game/GameRoles/ElderRole.cs

@@ -17,7 +17,7 @@ namespace MafiaTelegramBot.Game.GameRoles
         }
         public override async Task Dispatch()
         {
-            await Room.PlayersMessageChannel.Send( $"{strings.villagers_want_dispatch} {Player.NickName}, {strings.but_he_is_elder}");
+            await Room.PlayersMessageChannel.Send( $"{strings.villagers_want_dispatch} {Player.Info.NickName}, {strings.but_he_is_elder}");
         }
 
         public ElderRole(GameRoom room, Player player) : base(room, player) { }

+ 4 - 8
MafiaTelegramBot/Game/GameRoles/HookerRole.cs

@@ -1,9 +1,6 @@
-using System;
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.Commands;
 using MafiaTelegramBot.Game.GameRooms;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 using User = MafiaTelegramBot.DataBase.Entity.UserEntity;
 
@@ -25,10 +22,9 @@ namespace MafiaTelegramBot.Game.GameRoles
             NightTargetId = -1;
             if (Player.IsAlive)
             {
-                NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Id != Player.Id && p.CanBeBlockedNight)
+                NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Info.Id != Player.Info.Id && p.CanBeBlockedNight)
                     .ToList();
-                var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_block,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_block, Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -59,9 +55,9 @@ namespace MafiaTelegramBot.Game.GameRoles
                 NightTargetId = userId;
                 Room.Players[NightTargetId].CanBeBlockedNight = false;
                 await Room.Players[NightTargetId].CurrentRole.CancelNightActionResult(strings.hooker_block_you);
-                await Room.PlayersMessageChannel.EditTo(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
             }
-            else await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            else await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
         }
 
         public override async Task Kill()

+ 16 - 19
MafiaTelegramBot/Game/GameRoles/JournalistRole.cs

@@ -1,9 +1,7 @@
 using System;
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.Commands;
 using MafiaTelegramBot.Game.GameRooms;
-using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 
 namespace MafiaTelegramBot.Game.GameRoles
@@ -29,8 +27,7 @@ namespace MafiaTelegramBot.Game.GameRoles
             {
                 NightTargetList = Room.Players.Values.Where(p => p.IsAlive).ToList();
 
-                var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_first,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_first, Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -43,18 +40,18 @@ namespace MafiaTelegramBot.Game.GameRoles
                 if (NightTargetId == -1) await SetRandomNightTarget();
                 if (NightTargetTwoId == -1)
                 {
-                    var inGamePlayers = NightTargetList.Where(p => Room.Players.ContainsKey(p.Id) && p.Id != NightTargetId).ToArray();
+                    var inGamePlayers = NightTargetList.Where(p => Room.Players.ContainsKey(p.Info.Id) && p.Info.Id != NightTargetId).ToArray();
                     if (inGamePlayers.Length == 0)
                     {
                         NightTargetTwoId = -1;
-                        var message = await Room.PlayersMessageChannel.SendTo(Player.Id, strings.nothing_to_choose);
+                        var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.nothing_to_choose);
                         MessageId = message.MessageId;
                     }
                     else
                     {
-                        NightTargetTwoId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
-                        var message = await Room.PlayersMessageChannel.SendTo(Player.Id,
-                            $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
+                        NightTargetTwoId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Info.Id;
+                        var message = await Room.PlayersMessageChannel.SendTo(Player.Info,
+                            $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].Info.NickName}");
                         MessageId = message.MessageId;
                     }
                 }
@@ -62,32 +59,32 @@ namespace MafiaTelegramBot.Game.GameRoles
                     if (Room.Players.ContainsKey(NightTargetId) && Room.Players.ContainsKey(NightTargetTwoId))
                     {
                         if (Math.Abs(Room.Players[NightTargetTwoId].CurrentRole.ColorRole - Room.Players[NightTargetId].CurrentRole.ColorRole) < 1)
-                            await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,
-                                    $"{Room.Players[NightTargetId].NickName} & {Room.Players[NightTargetTwoId].NickName} - {strings.color_is_same}");
-                        else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,
-                            $"{Room.Players[NightTargetId].NickName} & {Room.Players[NightTargetTwoId].NickName} - {strings.color_is_different}"); 
+                            await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,
+                                    $"{Room.Players[NightTargetId].Info.NickName} & {Room.Players[NightTargetTwoId].Info.NickName} - {strings.color_is_same}");
+                        else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,
+                            $"{Room.Players[NightTargetId].Info.NickName} & {Room.Players[NightTargetTwoId].Info.NickName} - {strings.color_is_different}"); 
                     }
-                    else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
+                    else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.this_player_left_from_game);
             }
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 if (NightTargetId == -1)
                 {
                     NightTargetId = userId;
-                    var targets = NightTargetList.Where(p => p.Id != NightTargetId).ToList();
-                    await Room.PlayersMessageChannel.EditTo(Player.ChatId, MessageId, strings.choose_second,
-                        Keyboard.NightChooseTargetKeyboard(targets, Player.Id));
+                    var targets = NightTargetList.Where(p => p.Info.Id != NightTargetId).ToList();
+                    await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.choose_second,
+                        Keyboard.NightChooseTargetKeyboard(targets));
                 } 
                 
                 else if (NightTargetTwoId == -1)
                 {
                     NightTargetTwoId = userId;
-                    await Room.PlayersMessageChannel.EditTo(Player.ChatId, MessageId, $"{strings.choosed_targets} {Room.Players[NightTargetId].NickName} - {Room.Players[NightTargetTwoId].NickName}");
+                    await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.choosed_targets} {Room.Players[NightTargetId].Info.NickName} - {Room.Players[NightTargetTwoId].Info.NickName}");
                 }
             }
         }

+ 9 - 9
MafiaTelegramBot/Game/GameRoles/LawyerRole.cs

@@ -22,9 +22,9 @@ namespace MafiaTelegramBot.Game.GameRoles
             NightTargetId = -1;
             if(Player.IsAlive)
             {
-                NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Id != Player.Id).ToList();
-                var message = await Room.PlayersMessageChannel.SendTo(Player.ChatId, strings.choose_player_to_check_role,
-                    Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Info.Id != Player.Info.Id).ToList();
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_check_role,
+                    Keyboard.NightChooseTargetKeyboard(NightTargetList));
                 MessageId = message.MessageId;
             }
             else NightTargetId = -3;
@@ -43,21 +43,21 @@ namespace MafiaTelegramBot.Game.GameRoles
                             ? roles.Mafia
                             : roles.Villager;
                     if (KnownRoles.ContainsKey(NightTargetId)) KnownRoles[NightTargetId] = role;
-                    else KnownRoles.Add(Room.Players[NightTargetId].Id, role);
-                    await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,
-                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].NickName} - {role}");
+                    else KnownRoles.Add(Room.Players[NightTargetId].Info.Id, role);
+                    await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,
+                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].Info.NickName} - {role}");
                 }
-                else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
+                else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.this_player_left_from_game);
             }
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
             }
         }
         public LawyerRole(GameRoom room, Player player) : base(room, player) { }

+ 6 - 6
MafiaTelegramBot/Game/GameRoles/MafiaRole.cs

@@ -23,8 +23,8 @@ namespace MafiaTelegramBot.Game.GameRoles
             {
                 Player.IsSpeaker = true;
                 var targets = Room.Players.Values.Where(p => p.IsAlive).ToList();
-                var message = await Room.PlayersMessageChannel.SendTo(Player.ChatId, strings.choose_player_to_kill,
-                    Keyboard.NightMafiaTargetKeyboard(targets, Player.Id));
+                var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_kill,
+                    Keyboard.NightMafiaTargetKeyboard(targets));
                 MafiaMessageId = message.MessageId;
             }
             else MafiaTargetId = -3;
@@ -34,15 +34,15 @@ namespace MafiaTelegramBot.Game.GameRoles
         {
             Player.IsSpeaker = false;
             if (MafiaTargetId == -1)
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_have_not_choosen_target);
         }
 
         public override async Task SetMafiaTarget(long userId)
         {
             MafiaTargetId = userId;
-            if (userId == -4) await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_skip_vote);
-            else if(!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
-            else await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+            if (userId == -4) await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_skip_vote);
+            else if(!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
+            else await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
         }
 
         public MafiaRole(GameRoom room, Player player) : base(room, player) { }

+ 9 - 9
MafiaTelegramBot/Game/GameRoles/NecromancerRole.cs

@@ -27,9 +27,9 @@ namespace MafiaTelegramBot.Game.GameRoles
                 {
                     NightTargetList = Room.Players.Values.Where(p => !p.IsAlive).ToList();
                     var message = NightTargetList.Count > 0
-                        ? await Room.PlayersMessageChannel.SendTo(Player.Id, strings.choose_player_to_ressurect,
-                            Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id, true))
-                        : await Room.PlayersMessageChannel.SendTo(Player.Id, strings.nothing_to_ressurect);
+                        ? await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_ressurect,
+                            Keyboard.NightChooseTargetKeyboard(NightTargetList, true))
+                        : await Room.PlayersMessageChannel.SendTo(Player.Info, strings.nothing_to_ressurect);
                     MessageId = message.MessageId;
                 }
             }
@@ -39,7 +39,7 @@ namespace MafiaTelegramBot.Game.GameRoles
         public override async Task ApplyNightActionResult()
         {
             if (_actionApplied || NightTargetId == -2) { }
-            else if (NightTargetId == -1) await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.you_have_not_choosen_target);
+            else if (NightTargetId == -1) await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.you_have_not_choosen_target);
             else if (NightTargetId != -3)
             {
                 _actionApplied = true;
@@ -49,7 +49,7 @@ namespace MafiaTelegramBot.Game.GameRoles
                         var parasiteTarget = ((ParasiteRole) Room.PlayersRole[Roles.Parasite][0].CurrentRole).ParentId;
                         if (Room.Players[parasiteTarget].IsAlive) Room.Players[NightTargetId].IsAlive = true;
                         else
-                            await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.player_parasit_with_dead_owner);
+                            await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.player_parasit_with_dead_owner);
                     }
                     else Room.Players[NightTargetId].IsAlive = true;
             }
@@ -57,14 +57,14 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else if (userId != -1)
             {
                 NightTargetId = userId;
-                if(userId == Player.Id) await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId,strings.you_heal_yourself);
-                else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].NickName}");
+                if(userId == Player.Info.Id) await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId,strings.you_heal_yourself);
+                else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].Info.NickName}");
             }
-            else await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, strings.you_skip_vote);
+            else await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, strings.you_skip_vote);
         }
         public NecromancerRole(GameRoom room, Player player) : base(room, player) { }
     }

+ 7 - 7
MafiaTelegramBot/Game/GameRoles/ParasiteRole.cs

@@ -26,9 +26,9 @@ namespace MafiaTelegramBot.Game.GameRoles
             {
                 if (!_actionApplied)
                 {
-                    NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Id != Player.Id).ToList();
-                    var message = await Room.PlayersMessageChannel.SendTo(Player.ChatId, strings.choose_your_container,
-                        Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+                    NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Info.Id != Player.Info.Id).ToList();
+                    var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_your_container,
+                        Keyboard.NightChooseTargetKeyboard(NightTargetList));
                     MessageId = message.MessageId;
                 }
                 else
@@ -54,9 +54,9 @@ namespace MafiaTelegramBot.Game.GameRoles
                 ParentId = NightTargetId;
                 if (NightTargetId != -1)
                 {
-                    await Room.PlayersMessageChannel.SendTo(NightTargetId, $"{strings.you_have_been_chosen_by_the_parasite} {Player.NickName}");
+                    await Room.PlayersMessageChannel.SendTo(Room.Players[NightTargetId].Info, $"{strings.you_have_been_chosen_by_the_parasite} {Player.Info.NickName}");
                     KnownRoles.Add(NightTargetId, strings.container);
-                    Room.Players[NightTargetId].CurrentRole.KnownRoles.Add(Player.Id, roles.Parasite);
+                    Room.Players[NightTargetId].CurrentRole.KnownRoles.Add(Player.Info.Id, roles.Parasite);
                 }
                 else Player.IsAlive = false;
             }
@@ -78,11 +78,11 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task SetNightTarget(long userId)
         {
-            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersMessageChannel.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+                await Room.PlayersMessageChannel.EditTo(Player.Info, MessageId, $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
             }
         }
         public ParasiteRole(GameRoom room, Player player) : base(room, player) { }

+ 13 - 13
MafiaTelegramBot/Game/GameRoles/WerewolfRole.cs

@@ -27,8 +27,8 @@ namespace MafiaTelegramBot.Game.GameRoles
                 {
                     Player.IsSpeaker = true;
                     var targets = Room.Players.Values.Where(p => p.IsAlive).ToList();
-                    var message = await Room.PlayersMessageChannel.SendTo(Player.ChatId, strings.choose_player_to_kill,
-                        Keyboard.NightMafiaTargetKeyboard(targets, Player.Id));
+                    var message = await Room.PlayersMessageChannel.SendTo(Player.Info, strings.choose_player_to_kill,
+                        Keyboard.NightMafiaTargetKeyboard(targets));
                     MafiaMessageId = message.MessageId;
                 }
             }
@@ -41,7 +41,7 @@ namespace MafiaTelegramBot.Game.GameRoles
             {
                 Player.IsSpeaker = false;
                 if (MafiaTargetId == -1)
-                    await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_have_not_choosen_target);
+                    await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_have_not_choosen_target);
             }
         }
 
@@ -53,34 +53,34 @@ namespace MafiaTelegramBot.Game.GameRoles
             foreach (var (id, player) in Room.Players)
             {
                 if (player.GetRole() is not (Roles.Don or Roles.Mafia or Roles.Dame)) continue;
-                player.CurrentRole.KnownRoles.Add(Player.Id, Player.GetRoleName());
+                player.CurrentRole.KnownRoles.Add(Player.Info.Id, Player.GetRoleName());
                 KnownRoles.Add(id, player.GetRoleName());
             }
             var mafia = Room.Players.Values.Where(player => player.GetRole() is Roles.Mafia).ToArray();
             var don = Room.Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Don);
             var dame = Room.Players.Values.FirstOrDefault(player => player.GetRole() is Roles.Dame);
             var message = strings.your_teammates;
-            if (don != null) message += $"\n({don.TurnOrder}) {don.NickName} - {roles.Don}";
-            if (dame != null) message += $"\n({dame.TurnOrder}) {dame.NickName} - {roles.Dame}";
-            message = mafia.Aggregate(message, (current, player) => current + $"\n({player.TurnOrder}) {player.NickName}");
-            Room.MafiaMessageChannel.AddPerson(Player.ChatId);
-            await Room.PlayersMessageChannel.SendTo(Player.Id, message);
+            if (don != null) message += $"\n({don.TurnOrder}) {don.Info.NickName} - {roles.Don}";
+            if (dame != null) message += $"\n({dame.TurnOrder}) {dame.Info.NickName} - {roles.Dame}";
+            message = mafia.Aggregate(message, (current, player) => current + $"\n({player.TurnOrder}) {player.Info.NickName}");
+            Room.MafiaMessageChannel.AddPerson(Player.Info);
+            await Room.PlayersMessageChannel.SendTo(Player.Info, message);
         }
 
         public override async Task SetMafiaTarget(long userId)
         {
             if (IsMafia)
             {
-                if (userId == -1) await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId, strings.you_skip_vote);
+                if (userId == -1) await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId, strings.you_skip_vote);
                 else
                 {
                     if (!Room.Players.ContainsKey(userId))
-                        await Room.PlayersMessageChannel.SendTo(Player.Id, strings.this_player_left_from_game);
+                        await Room.PlayersMessageChannel.SendTo(Player.Info, strings.this_player_left_from_game);
                     else
                     {
                         MafiaTargetId = userId;
-                        await Room.PlayersMessageChannel.EditTo(Player.Id, MafiaMessageId,
-                            $"{strings.you_choose_target} {Room.Players[userId].NickName}");
+                        await Room.PlayersMessageChannel.EditTo(Player.Info, MafiaMessageId,
+                            $"{strings.you_choose_target} {Room.Players[userId].Info.NickName}");
                     }
                 }
             }