MyChatMember.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System.Threading.Tasks;
  2. using CardCollector.DataBase.Entity;
  3. using CardCollector.DataBase.EntityDao;
  4. using Telegram.Bot.Types;
  5. using Telegram.Bot.Types.Enums;
  6. namespace CardCollector.Commands.MyChatMember
  7. {
  8. /* Родительский класс для входящих обновлений типа MyChatMember
  9. (Добавление/Добавление в чаты/Добавление в каналы/Блокировки/Исключения бота)
  10. Данный класс полностью реализован и не нуждается в наследовании */
  11. public class MyChatMember : UpdateModel
  12. {
  13. protected override string CommandText => "";
  14. private readonly ChatMemberStatus _status;
  15. public override async Task Execute()
  16. {
  17. switch (_status)
  18. {
  19. case ChatMemberStatus.Creator:
  20. await UserDao.GetUser(ChatToUser(Update.MyChatMember!.Chat));
  21. break;
  22. case ChatMemberStatus.Administrator:
  23. await UserDao.GetUser(ChatToUser(Update.MyChatMember!.Chat));
  24. break;
  25. case ChatMemberStatus.Member:
  26. User.IsBlocked = false;
  27. break;
  28. case ChatMemberStatus.Kicked:
  29. User.IsBlocked = false;
  30. break;
  31. case ChatMemberStatus.Restricted or ChatMemberStatus.Left:
  32. break;
  33. default:
  34. await new CommandNotFound(User, Update, _status.ToString()).Execute();
  35. break;
  36. }
  37. }
  38. public static async Task<UpdateModel> Factory(Update update)
  39. {
  40. // Объект пользователя
  41. var user = await UserDao.GetUser(update.MyChatMember!.From);
  42. return new MyChatMember(user, update, update.MyChatMember.NewChatMember.Status);
  43. }
  44. private static User ChatToUser(Chat chat)
  45. {
  46. return new User
  47. {
  48. Username = chat.Username,
  49. FirstName = chat.FirstName ?? chat.Title ?? "",
  50. LastName = chat.LastName ?? "",
  51. Id = chat.Id,
  52. IsBot = chat.Id < 0
  53. };
  54. }
  55. private MyChatMember(UserEntity user, Update update, ChatMemberStatus status) : base(user, update)
  56. {
  57. _status = status;
  58. }
  59. }
  60. }