/// <summary>
        ///
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected virtual void InternalHandle(object sender, CallbackQueryEventArgs e)
        {
            TelegramBotMessageManager.Message.Value = e.CallbackQuery.Message;

            var userService = TelegramBotServicesContainer.GetService <ITelegramBotUserService>();
            var currentUser = userService.GetCurrentUserInfo();

            if (currentUser == null)
            {
                currentUser = userService.RegisterUser();
            }

            TelegramBotLanguageHelper.InitializeCulture(currentUser.Language);
            var commandId = GetCommandId(e.CallbackQuery.Data);

            if (commandId == null)
            {
                return;
            }

            var command = TelegramBotCommandFactory.GetCallbackCommand(commandId.Value);

            if (command == null)
            {
                return;
            }

            e.CallbackQuery.Data = RemoveCommandId(e.CallbackQuery.Data);
            TelegramBotCallbackQueryManager.CallbackQuery.Value = e.CallbackQuery;
            command.Execute();
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="language"></param>
        public virtual void SetUserLanguage(long chatId, string language)
        {
            var user = TelegramBotDb.Users.FindOne(f => f.ChatId == chatId);

            if (user == null)
            {
                return;
            }

            user.Language = language;
            TelegramBotDb.Users.Update(user);
            TelegramBotLanguageHelper.InitializeCulture(user.Language);
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="message"></param>
        private void InternalHandle(Message message)
        {
            TelegramBotMessageManager.Message.Value = message;
            var userService = servicesContainer.GetService <ITelegramBotUserService>();
            var currentUser = userService.GetCurrentUserInfo();

            if (currentUser == null)
            {
                currentUser = userService.RegisterUser();
            }

            TelegramBotLanguageHelper.InitializeCulture(currentUser.Language);

            var context = new MessageContext();

            context.Message     = message;
            context.UserService = userService;
            context.User        = currentUser;
            context.UserRole    = userService.GetCurrentUserRole();

            var handlers = GetMessageHandlers();

            for (int index = 0; index < handlers.Count; index++)
            {
                var handler = handlers[index];
                if (index < handlers.Count - 1)
                {
                    context.NextHandler = handlers[index + 1];
                }

                handler.Initialize(servicesContainer);
                handler.Handle(context);
                if (!context.IsCanExecuteNextHandler)
                {
                    break;
                }
            }
        }