Ver Fonte

Delete not working methods

Tigran há 4 anos atrás
pai
commit
6faccd5410

+ 0 - 6
MafiaTelegramBot/CustomCollections/Extensions/DictionaryExtension.cs

@@ -1,4 +1,3 @@
-#nullable enable
 using System.Collections.Generic;
 
 namespace MafiaTelegramBot.CustomCollections.Extensions
@@ -22,10 +21,5 @@ namespace MafiaTelegramBot.CustomCollections.Extensions
             dictionary.Add(k, v);
             return true;
         }
-
-        public static TV? GetIfContains<TK, TV>(this Dictionary<TK, TV> dictionary, TK k)
-        {
-            return dictionary.ContainsKey(k) ? dictionary[k] : default;
-        }
     }
 }

+ 0 - 7
MafiaTelegramBot/CustomCollections/Extensions/ListExtension.cs

@@ -1,6 +1,4 @@
-#nullable enable
 using System.Collections.Generic;
-using System.Runtime.CompilerServices;
 
 namespace MafiaTelegramBot.CustomCollections.Extensions
 {
@@ -29,10 +27,5 @@ namespace MafiaTelegramBot.CustomCollections.Extensions
             list.Add(item);
             return true;
         }
-
-        public static T? GetIfContains<T>(this List<T> list, int index)
-        {
-            return list.Count < index ? list[index] : default;
-        }
     }
 }

+ 5 - 8
MafiaTelegramBot/Game/GameRoles/BodyguardRole.cs

@@ -1,6 +1,5 @@
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Game.GameRooms;
 using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
@@ -27,13 +26,12 @@ namespace MafiaTelegramBot.Game.GameRoles
                     NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
                     await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
                 }
-                var target = Room.Players.GetIfContains(NightTargetId);
-                if(target != null)
+                if(Room.Players.ContainsKey(NightTargetId))
                 {
                     NightTargetId = -1;
-                    if (!target.IsAlive)
+                    if (!Room.Players[NightTargetId].IsAlive)
                     {
-                        target.IsAlive = true;
+                        Room.Players[NightTargetId].IsAlive = true;
                         Player.IsAlive = false;
                     }
                 }
@@ -41,12 +39,11 @@ namespace MafiaTelegramBot.Game.GameRoles
         }
         public override async Task SetNightTarget(long userId)
         {
-            var target = Room.Players.GetIfContains(userId);
-            if (target == null) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(userId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {target.NickName}");  
+                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");  
             }
         }
         public BodyguardRole(GameRoom room, Player player) : base(room, player) { }

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

@@ -1,6 +1,5 @@
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Game.GameRooms;
 using MafiaTelegramBot.Resources;
 
@@ -28,16 +27,15 @@ namespace MafiaTelegramBot.Game.GameRoles
                     await Room.PlayersCh.EditTo(Player.Id, MessageId,
                         $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
                 }
-                
-                var player = Room.Players.GetIfContains(NightTargetId);
-                if (player != null)
+                if (Room.Players.ContainsKey(NightTargetId))
                 {
-                    NightTargetId = -1;KnownRoles.Add(player);
-                    var role = player.GetRole() is Roles.Don or Roles.Mafia
+                    KnownRoles.Add(Room.Players[NightTargetId]);
+                    var role = Room.Players[NightTargetId].GetRole() is Roles.Don or Roles.Mafia
                         ? roles.Mafia
                         : roles.Villager;
                     await Room.PlayersCh.EditTo(Player.Id, MessageId,
-                        $"{strings.role_of_your_target} {player.NickName} - {role}");
+                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].NickName} - {role}");
+                    NightTargetId = -1;
                 }
                 else await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
             }
@@ -45,12 +43,11 @@ namespace MafiaTelegramBot.Game.GameRoles
 
         public override async Task SetNightTarget(long userId)
         {
-            var target = Room.Players.GetIfContains(userId);
-            if (target == null) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(NightTargetId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {target.NickName}");
+                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
             }
         }
 

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

@@ -1,6 +1,5 @@
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Game.GameRooms;
 using MafiaTelegramBot.Resources;
 
@@ -14,6 +13,8 @@ namespace MafiaTelegramBot.Game.GameRoles
             NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.CanBeHealed).ToList();
             var message = await Room.PlayersCh.SendTo(Player.Id, strings.choose_player_to_heal, 
                 Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
+            if (NightTargetId != Player.Id && Room.Players.ContainsKey(NightTargetId))
+                Room.Players[NightTargetId].CanBeHealed = true;
             MessageId = message.MessageId;
         }
 
@@ -27,25 +28,22 @@ namespace MafiaTelegramBot.Game.GameRoles
                     await Room.PlayersCh.EditTo(Player.Id, MessageId,
                         $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
                 }
-                var target = Room.Players.GetIfContains(NightTargetId);
-                if (target != null)
+                if (Room.Players.ContainsKey(NightTargetId))
                 {
-                    target.CanBeHealed = false;
-                    NightTargetId = -1;
-                    if (!target.IsAlive) target.IsAlive = true;
+                    Room.Players[NightTargetId].CanBeHealed = false;
+                    if (!Room.Players[NightTargetId].IsAlive) Room.Players[NightTargetId].IsAlive = true;
                 }
             }
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            var target = Room.Players.GetIfContains(userId);
-            if (target == null) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(NightTargetId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
                 if(userId == Player.Id) await Room.PlayersCh.EditTo(Player.Id, MessageId,strings.you_heal_yourself);
-                else await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {target.NickName}");
+                else await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].NickName}");
             }
         }
 

+ 9 - 12
MafiaTelegramBot/Game/GameRoles/DonRole.cs

@@ -39,29 +39,27 @@ namespace MafiaTelegramBot.Game.GameRoles
                     await Room.PlayersCh.EditTo(Player.Id, MessageId,
                         $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
                 }
-                var target = Room.Players.GetIfContains(NightTargetId);
-                if(target==null) await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
+                if(!Room.Players.ContainsKey(NightTargetId)) await Room.PlayersCh.EditTo(Player.Id, MessageId, strings.this_player_left_from_game);
                 else
                 {
-                    NightTargetId = -1;
-                    KnownRoles.Add(target);
-                    var role = target.GetRole() is Roles.Cop
+                    KnownRoles.Add(Room.Players[NightTargetId]);
+                    var role = Room.Players[NightTargetId].GetRole() is Roles.Cop
                         ? roles.Cop
                         : roles.Villager;
                     await Room.PlayersCh.EditTo(Player.Id, MessageId,
-                        $"{strings.role_of_your_target} {target.NickName} - {role}");
+                        $"{strings.role_of_your_target} {Room.Players[NightTargetId].NickName} - {role}");
+                    NightTargetId = -1;
                 }
             }
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            var target = Room.Players.GetIfContains(userId);
-            if (target == null) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
+            if (!Room.Players.ContainsKey(NightTargetId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
             else
             {
                 NightTargetId = userId;
-                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {target.NickName}");
+                await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.you_choose_target} {Room.Players[NightTargetId].NickName}");
             }
         }
         
@@ -70,13 +68,12 @@ namespace MafiaTelegramBot.Game.GameRoles
             if(userId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_skip_vote);
             else
             {
-                var target = Room.Players.GetIfContains(userId);
-                if (target == null) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
+                if (!Room.Players.ContainsKey(MafiaTargetId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
                 else
                 {
                     MafiaTargetId = userId;
                     await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId,
-                        $"{strings.you_choose_target} {target.NickName}");
+                        $"{strings.you_choose_target} {Room.Players[MafiaTargetId].NickName}");
                 }
             }
         }

+ 9 - 15
MafiaTelegramBot/Game/GameRoles/HookerRole.cs

@@ -15,7 +15,7 @@ namespace MafiaTelegramBot.Game.GameRoles
         public override async Task NightAction()
         {
             NightTargetList = Room.Players.Values.Where(p => p.IsAlive && p.Id != Player.Id && p.CanBeBlockedNight).ToList();
-            if (NightTargetId != -1) Room.Players[NightTargetId].CanBeBlockedNight = true;
+            if (NightTargetId != -1 && Room.Players.ContainsKey(NightTargetId)) Room.Players[NightTargetId].CanBeBlockedNight = true;
             NightTargetId = -1;
             var message = await Bot.SendWithMarkdown2(Player.ChatId, strings.choose_player_to_block_night, 
                 Keyboard.NightChooseTargetKeyboard(NightTargetList, Player.Id));
@@ -27,30 +27,24 @@ namespace MafiaTelegramBot.Game.GameRoles
             if (NightTargetId == -1)
             {
                 NightTargetId = NightTargetList[Utilities.Rnd.Next(NightTargetList.Count)].Id;
-                var target = Room.Players.GetIfContains(NightTargetId);
-                if (target != null)
+                if (Room.Players.ContainsKey(NightTargetId))
                 {
-                    target.CanBeBlockedNight = false;
-                    await target.CurrentRole.CancelNightActionResult(strings.hooker_block_you);
+                    Room.Players[NightTargetId].CanBeBlockedNight = false;
+                    await Room.Players[NightTargetId].CurrentRole.CancelNightActionResult(strings.hooker_block_you);
                     await Room.PlayersCh.EditTo(Player.Id, MessageId, $"{strings.automatically_choosed_target} {Room.Players[NightTargetId].NickName}");
                 }
             }
-            else
-            {
-                var target = Room.Players.GetIfContains(NightTargetId);
-                if (target != null) target.CanBeBlockedNight = false;
-            }
+            else if (Room.Players.ContainsKey(NightTargetId)) Room.Players[NightTargetId].CanBeBlockedNight = false;
         }
 
         public override async Task SetNightTarget(long userId)
         {
-            var target = Room.Players.GetIfContains(userId);
-            if(target!= null)
+            if(Room.Players.ContainsKey(NightTargetId))
             {
                 NightTargetId = userId;
-                target.CanBeBlockedNight = false;
-                target.IsBlocked = true;
-                await target.CurrentRole.CancelNightActionResult(strings.hooker_block_you);
+                Room.Players[NightTargetId].CanBeBlockedNight = false;
+                Room.Players[NightTargetId].IsBlocked = true;
+                await Room.Players[NightTargetId].CurrentRole.CancelNightActionResult(strings.hooker_block_you);
                 await Room.PlayersCh.EditTo(Player.ChatId, MessageId, $"{strings.you_choose_target} {Room.Players[userId].NickName}");
             }
             else await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);

+ 1 - 2
MafiaTelegramBot/Game/GameRoles/MafiaRole.cs

@@ -35,8 +35,7 @@ namespace MafiaTelegramBot.Game.GameRoles
             if(userId == -1) await Room.PlayersCh.EditTo(Player.Id, MafiaMessageId, strings.you_skip_vote);
             else
             {
-                var target = Room.Players.GetIfContains(userId);
-                if(target == null) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
+                if(!Room.Players.ContainsKey(MafiaTargetId)) await Room.PlayersCh.SendTo(Player.Id, strings.this_player_left_from_game);
                 else
                 {
                     MafiaTargetId = userId;

+ 27 - 51
MafiaTelegramBot/Game/GameRooms/GameRoom.GameProcess.cs

@@ -175,36 +175,25 @@ namespace MafiaTelegramBot.Game.GameRooms
                     var maxObjects = votes.Where(item => item.count == max).ToList();
                     if(maxObjects.Count == 1)
                     {
-                        var currentRole = Players.GetIfContains(maxObjects[0].id)?.CurrentRole;
-                        if (currentRole != null)
-                            await currentRole.Kill();
+                        if (Players.ContainsKey(maxObjects[0].id))
+                            await Players[maxObjects[0].id].CurrentRole.Kill();
                     }
                 }   
                 foreach (var (role, players) in PlayersRole)
                 {
                     if (role is Roles.Mafia)
                         foreach (var mafia in players) await mafia.CurrentRole.ApplyNightActionResult();
-                    else if (players.Count == 1)
-                    {
-                        var player = players.GetIfContains(0);
-                        if (role != Roles.Doctor)
-                            if (player != null)
-                                player.CanBeHealed = true;
-                        if (player?.CurrentRole != null) await player.CurrentRole.ApplyNightActionResult();
-                    }
+                    else if (players.Count == 1) await players[0].CurrentRole.ApplyNightActionResult();
                 }
                 var afterKill = Players.Values.ToDictionary(p=>p.Id,p=>p.IsAlive);
                 var message = strings.city_wakes_up;
                 if(afterKill.IsEquals(beforeKill)) message += strings.everyone_survived;
                 else foreach (var (id, alive) in afterKill)
-                        if(beforeKill[id] != alive)
+                        if(beforeKill[id] != alive && Players.ContainsKey(id))
                         {
-                            var player = Players.GetIfContains(id);
-                            message += player != null
-                            ? alive
-                                ? $"\n{player.NickName} {strings.will_be_ressurected}"
-                                : $"\n{player.NickName} {strings.will_be_killed}"
-                            : "";
+                            message += alive
+                                ? $"\n{Players[id].NickName} {strings.will_be_ressurected}"
+                                : $"\n{Players[id].NickName} {strings.will_be_killed}";
                             await PlayersCh.SendTo(id, alive ? strings.you_will_be_ressurected : strings.you_will_be_killed);
                         }
                 message += '\n' + mafiaNotAgree;
@@ -248,8 +237,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                         break;
                     case 1:
                     {
-                        var player = VoteUpList.GetIfContains(0);
-                        if(player != null ) await player.CurrentRole.Dispatch();
+                        await VoteUpList[0].CurrentRole.Dispatch();
                         break;
                     }
                     default:
@@ -262,8 +250,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                                 await PlayersCh.Send(strings.nothing_up_to_dispatch);
                                 break;
                             case 1:
-                                var player = VoteUpList.GetIfContains(0);
-                                if(player != null ) await player.CurrentRole.Dispatch();
+                                await contenders[0].CurrentRole.Dispatch();
                                 break;
                             case > 1:
                                 await DefencePhase(contenders);
@@ -274,8 +261,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                                         await PlayersCh.Send(strings.nothing_up_to_dispatch);
                                         break;
                                     case 1:
-                                        var contender = VoteUpList.GetIfContains(0);
-                                        if(contender != null ) await contender.CurrentRole.Dispatch();
+                                        await contenders[0].CurrentRole.Dispatch();
                                         break;
                                     default:
                                         await PlayersCh.Send(strings.villagers_could_not_decide);
@@ -300,11 +286,9 @@ namespace MafiaTelegramBot.Game.GameRooms
             var voteKillCopy = VoteKillList.ToDictionary(e => e.Key, e => e.Value);
             foreach (var (playerId, targetId) in voteKillCopy.Where(item => item.Value != 0))
             {
-                var player = Players.GetIfContains(playerId);
-                var target = Players.GetIfContains(targetId);
-                message += player != null && target != null
-                    ? $"\n({player.TurnOrder}) {player.NickName} {strings.vote_to} " +
-                           $"({target.TurnOrder}) {target.NickName}" : "";
+                message += Players.ContainsKey(playerId) && Players.ContainsKey(targetId)
+                    ? $"\n({Players[playerId].TurnOrder}) {Players[playerId].NickName} {strings.vote_to} " +
+                           $"({Players[targetId].TurnOrder}) {Players[targetId].NickName}" : "";
             }
             if (message == strings.results_of_voting) message = strings.no_one_voted;
             await PlayersCh.Send(message);
@@ -317,7 +301,7 @@ namespace MafiaTelegramBot.Game.GameRooms
             if (votes.Count == 0) return result;
             var max = votes.Max(item => item.count);
             var maxObjects = votes.Where(item => item.count == max);
-            result.AddRange(maxObjects.Select(obj => Players.GetIfContains(obj.id)).Where(player => player != null));
+            result.AddRange(from obj in maxObjects where Players.ContainsKey(obj.id) select Players[obj.id]);
             VoteUpList.Clear();
             VoteKillList.Clear();
             return result.ToList();
@@ -325,41 +309,39 @@ namespace MafiaTelegramBot.Game.GameRooms
 
         private async Task PutUpVote(long playerId, long targetId, int messageId, bool toKill = false)
         {
-            var player = Players.GetIfContains(playerId);
-            if (player != null)
+            if (Players.ContainsKey(playerId))
             {
                 if (targetId == 0 && VoteKillList.AddUniqueByKey(playerId, targetId))
                 {
-                    if (!toKill) await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.skip_vote}");
-                    await PlayersCh.EditTo(player.Id, messageId, strings.you_skip_vote);
+                    if (!toKill) await PlayersCh.SendExcept(playerId, $"{Players[playerId].NickName} {strings.skip_vote}");
+                    await PlayersCh.EditTo(playerId, messageId, strings.you_skip_vote);
                 }
                 else
                 {
-                    var target = Players.GetIfContains(targetId);
-                    if (target != null)
+                    if (Players.ContainsKey(targetId))
                     {
                         if (!toKill)
                         {
-                            if (VoteUpList.AddUnique(target))
+                            if (VoteUpList.AddUnique(Players[targetId]))
                             {
                                 if (playerId != targetId)
                                 {
-                                    await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.put_up_vote_to} {target.NickName}");
-                                    await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
+                                    await PlayersCh.SendExcept(playerId, $"{Players[playerId].NickName} {strings.put_up_vote_to} {Players[targetId].NickName}");
+                                    await PlayersCh.EditTo(playerId, messageId, $"{strings.you_vote_player} {Players[targetId].NickName}");
                                 }
                                 else
                                 {
-                                    await PlayersCh.SendExcept(player.ChatId, $"{player.NickName} {strings.vote_to_self}");
-                                    await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
+                                    await PlayersCh.SendExcept(playerId, $"{Players[playerId].NickName} {strings.vote_to_self}");
+                                    await PlayersCh.EditTo(playerId, messageId, strings.you_vote_to_self);
                                 }
                             }
                         } 
                         else if (VoteKillList.AddUniqueByKey(playerId, targetId))
                         {
                             if (playerId != targetId)
-                                await PlayersCh.EditTo(player.Id, messageId, $"{strings.you_vote_player} {target.NickName}");
+                                await PlayersCh.EditTo(playerId, messageId, $"{strings.you_vote_player} {Players[targetId].NickName}");
                             else
-                                await PlayersCh.EditTo(player.Id, messageId, strings.you_vote_to_self);
+                                await PlayersCh.EditTo(playerId, messageId, strings.you_vote_to_self);
                         }
                     }
                 }   
@@ -375,9 +357,7 @@ namespace MafiaTelegramBot.Game.GameRooms
                 foreach (var (_, value) in PlayersRole)
                 {
                     if (value.Count != 1) continue;
-                    var yellowPlayer = value.GetIfContains(0);
-                    if (yellowPlayer == null) continue;
-                    var yellowResult = await yellowPlayer.CurrentRole.IsWon();
+                    var yellowResult = await value[0].CurrentRole.IsWon();
                     if (yellowResult != "") additionalResult += "\n" + yellowResult;
                 }
 
@@ -391,12 +371,8 @@ namespace MafiaTelegramBot.Game.GameRooms
                     await PlayersCh.Send(strings.mafia_won + additionalResult, exceptDied: false);
                     await PlayersCh.SendSticker(Stickers.Sticker["MafiaWins"]);
                 }
-
                 if (PlayersRole.ContainsKey(Roles.Fool) && PlayersRole[Roles.Fool].Count == 1)
-                {
-                    var player = PlayersRole[Roles.Fool].GetIfContains(0);
-                    if(player != null) await player.CurrentRole.IsWon();
-                }
+                    await PlayersRole[Roles.Fool][0].CurrentRole.IsWon();
                 var rolesMessage = strings.in_this_game_roles;
                 var sortedPLayers = Players.Values.ToList();
                 sortedPLayers.Sort((x, y) => x.TurnOrder - y.TurnOrder);

+ 2 - 5
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageChannels.cs

@@ -1,6 +1,5 @@
 using System.Linq;
 using System.Threading.Tasks;
-using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 using Telegram.Bot.Types;
@@ -30,15 +29,13 @@ namespace MafiaTelegramBot.Game.GameRooms
         {
             public async Task<Message> SendTo(long userId, string message, IReplyMarkup replyMarkup = null)
             {
-                var player = Room.Players.GetIfContains(userId);
-                if(player != null) return await Bot.SendWithMarkdown2(player.ChatId, message, replyMarkup);
+                if(Room.Players.ContainsKey(userId)) return await Bot.SendWithMarkdown2(Room.Players[userId].ChatId, message, replyMarkup);
                 return new Message();
             }
             
             public async Task EditTo(long userId, int messageId, string message, InlineKeyboardMarkup replyMarkup = null)
             {
-                var player = Room.Players.GetIfContains(userId);
-                if(player != null) await Bot.EditMessageAsync(player.ChatId, messageId, message, replyMarkup);
+                if(Room.Players.ContainsKey(userId)) await Bot.EditMessageAsync(Room.Players[userId].ChatId, messageId, message, replyMarkup);
             }
             
             public override async Task Send(string message, IReplyMarkup replyMarkup = null,

+ 6 - 8
MafiaTelegramBot/Game/GameRooms/GameRoom.MessageHandler.cs

@@ -1,7 +1,6 @@
 using System.Linq;
 using System.Threading.Tasks;
 using MafiaTelegramBot.Controllers;
-using MafiaTelegramBot.CustomCollections.Extensions;
 using MafiaTelegramBot.Models;
 using MafiaTelegramBot.Resources;
 using Telegram.Bot.Types;
@@ -23,16 +22,15 @@ namespace MafiaTelegramBot.Game.GameRooms
             {
                 var text = update.Message.Text;
                 var userId = update.Message.From.Id;
-                var player = _room.Players.GetIfContains(userId);
-                if (player == null) return new Message();
-                if (text == keyboard.look_players_list) await LookPlayers(player);
-                else if (text == keyboard.leave) await Leave(player);
+                if (!_room.Players.ContainsKey(userId)) return new Message();
+                if (text == keyboard.look_players_list) await LookPlayers(_room.Players[userId]);
+                else if (text == keyboard.leave) await Leave(_room.Players[userId]);
                 else if (text == keyboard.end_turn)
                 {
-                    if (_room.IsDay && player.IsSpeaker) player.CurrentRole.TalkingActionComplete.Set();
-                    else await _room.PlayersCh.SendTo(player.ChatId, strings.now_is_not_your_turn);
+                    if (_room.IsDay && _room.Players[userId].IsSpeaker) _room.Players[userId].CurrentRole.TalkingActionComplete.Set();
+                    else await _room.PlayersCh.SendTo(userId, strings.now_is_not_your_turn);
                 }
-                else await ForwardMessage(player, text);
+                else await ForwardMessage(_room.Players[userId], text);
                 return update.Message;
             }