Tigran 4 年 前
コミット
98cb5f52b2
1 ファイル変更11 行追加6 行削除
  1. 11 6
      CardCollector/Commands/Message/Message.cs

+ 11 - 6
CardCollector/Commands/Message/Message.cs

@@ -54,10 +54,12 @@ namespace CardCollector.Commands.Message
         /* Метод, создающий объекты команд исходя из полученного обновления */
         public static async Task<UpdateModel> Factory(Update update)
         {
-            // Если сообщение от нашего бота
-            if (update.Message!.From!.Username == AppSettings.NAME)
+            // Если сообщение от бота - игнорируем, нам не нужны боты
+            if (update.Message!.From!.IsBot)
             {
-                await Bot.Client.DeleteMessageAsync(update.Message.Chat.Id, update.Message.MessageId);
+                // Если это вдруг написал наш бот (сообщенияуведомления о закрпеах и пр.), то удаляем
+                if (update.Message!.From!.Username == AppSettings.NAME)
+                    await Bot.Client.DeleteMessageAsync(update.Message.Chat.Id, update.Message.MessageId);
                 return new IgnoreUpdate();
             }
 
@@ -80,12 +82,15 @@ namespace CardCollector.Commands.Message
             // Объект пользователя
             var user = await UserDao.GetUser(update.Message!.From);
             
-            // Если пользователь заблокирован или пользователь - бот, или сообщение где-то в другом канале - игонрируем
-            if (user.IsBlocked || update.Message!.From!.IsBot || update.Message.Chat.Id != user.ChatId) return new IgnoreUpdate();
+            // Если пользователь заблокирован или сообщение где-то в другом канале, привате - игонрируем
+            if (user.IsBlocked || update.Message.Chat.Id != user.ChatId) return new IgnoreUpdate();
         
-            // Удаляем сообщение пользователя, оно нам больше не нужно
+            // Удаляем сообщение пользователя в лс, оно нам больше не нужно
             await MessageController.DeleteMessage(user, update.Message.MessageId);
             
+            // Если сообщение - это команда, полученная от бота, то мы игнорируем, так как получим ее через ChosenInlineResult
+            if (update.Message.ViaBot is { }) return new IgnoreUpdate();
+            
             // Возвращаем объект, если команда совпала
             foreach (var item in list.Where(item => item.IsMatches(data)))
                 if(Activator.CreateInstance(item.GetType(), user, update) is Message executor)