/// <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); }
/// <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; } } }