12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #nullable enable
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using MafiaTelegramBot.DataBase.EntityDao;
- using MafiaTelegramBot.Game;
- using Telegram.Bot.Types;
- namespace MafiaTelegramBot.Commands.CallbackQueries
- {
- public class CallbackQueryHandler : UpdateHandler
- {
- private static IEnumerable<UpdateHandler> List => new List<UpdateHandler>
- {
- // Переносим обработку сообщений в другой класс, если игрок находится в комнате
- new UserInGameCallbackQueryHandler(null),
-
- // Остальные обработчики
- new ApplyRolesChangeCallbackQueryHandler(null),
- new BackToProfileCallbackQueryHandler(null),
- new ChangeNickNameCallbackQueryHandler(null),
- new ChangeRolesCallbackQueryHandler(null),
- new ChooseGameModeCallbackQueryHandler(null),
- new ChooseGameTypeCallbackQueryHandler(null),
- new ChooseRoomViewCallbackQueryHandler(null),
- new ConnectToNotRankedCallbackQueryHandler(null),
- new ConnectToPrivateRoomCallbackQueryHandler(null),
- new ConnectToPublicRoomCallbackQueryHandler(null),
- new ConnectToRankedCallbackQueryHandler(null),
- new ConnectToSelectedRoomCallbackQueryHandler(null),
- new ContinueCallbackQueryHandler(null),
- new GiveRoleCallbackQueryHandler(null),
- new GiveToAllCallbackQueryHandler(null),
- new GiveToSelectedCallbackQueryHandler(null),
- new KickSelectedPlayerCallbackQueryHandler(null),
- new PackInfoCallbackQueryHandler(null),
- new PackOpenCallbackQueryHandler(null),
- new PlayersCountSettingsCallbackQueryHandler(null),
- new SetPlayersMaximumCallbackQueryHandler(null),
- new SettingsProfileCallbackQueryHandler(null),
- new SettingsRoomCallbackQueryHandler(null),
- new ShopMenuCallbackQueryHandler(null),
- new ShowMyExtendedStatsCallbackQueryHandler(null),
- new ShowMyPacksCallbackQueryHandler(null),
- new ShowMyRolesCallbackQueryHandler(null),
- new StartGameCallbackQueryHandler(null),
- new SwitchTimerCallbackQueryHandler(null),
- new UnblockUserCallbackQueryHandler(null),
- };
-
- public static async Task<UpdateHandler> Factory(User user, string message)
- {
- Logs.LogOut(typeof(CallbackQueryHandler), "Factory");
- // Объект пользователя
- var player = await UserDao.GetPlayerById(user.Id) ?? await UserDao.AddNew(user);
-
- // Если игрок заблокирован, то нафиг его
- if (player.Info.IsBlocked) return new CallbackQueryHandler(player);
-
- // Устанавливаем игроку время активности на текущее
- player.SetActive();
-
- // Возвращаем объект, если есть подходящая команда
- foreach (var item in List.Where(item => item.IsMatches(message)))
- if (Activator.CreateInstance(item.GetType(), player) is CallbackQueryHandler handler)
- if(handler.IsMatches(message)) return handler;
-
- // Ничего не делаем, если код дошел до сюда
- return new CommandNotFound(player, message);
- }
- protected CallbackQueryHandler(Player player) : base(player) { }
- }
- }
|