public async Task HandleCallbackQuery(TGCallbackQueryDTO dto) { var queryData = JsonConvert.DeserializeObject <TGCallbackQueryDTO.TGCallbackQueryDataDTO>(dto.Data); if (queryData.PageIndex == 0) { return; } var command = await _userService.FindLastCommandByTGUserId(dto.From.Id); var message = await _repository.TableNoTracking.FirstOrDefaultAsync(s => s.TGMessageId == queryData.MessageId); if (command == null || message == null) { return; } if (command.Type == UserCommandType.List) { var category = command.Text; if (!string.IsNullOrWhiteSpace(category) && category.StartsWith("全部群组", StringComparison.OrdinalIgnoreCase)) { category = null; } var paged = _chatService.GetChatsPaged(pagedIndex: queryData.PageIndex, pageSize: 20, category: category); var messageDTO = TGSendMessageDTO.BuildChatListMessage(paged, dto.Message.Chat.Id, queryData.MessageId); var editedMessage = TGSendMessageDTO.BuildChatListEditMessage(messageDTO, message.ResponseId); await _telegramHttpClient.EditMessage(editedMessage); } }
private async Task HandleCommand(TGMessageDTO dto, UserCommand command, Message message) { switch (command.Type) { case UserCommandType.Help: { command.Completed = true; await _userService.CompleteCommand(command); await _telegramHttpClient.SendMessage(TGSendMessageDTO.BuildHelpMessage(dto.Chat.Id)); break; } case UserCommandType.Reset: { command.Completed = true; await _userService.CompleteCommand(command); await _telegramHttpClient.SendMessage(TGSendMessageDTO.BuildResetMessage(dto.Chat.Id)); break; } case UserCommandType.List: { if (ApplicationDefaults.Commands.Contains(dto.Text)) { var categories = await _chatService.GetChatCategories(); var messageRequest = TGSendMessageDTO.BuildChatCategoriesMessage(dto.Chat.Id, categories.OrderBy(c => c.DisplayOrder).Select(c => c.Name).ToList()); await _telegramHttpClient.SendMessage(messageRequest); } else { var category = dto.Text; if (!string.IsNullOrWhiteSpace(category) && category.StartsWith("全部群组", StringComparison.OrdinalIgnoreCase)) { category = null; } var paged = _chatService.GetChatsPaged(pagedIndex: 1, pageSize: 20, category: category); var messageRequest = TGSendMessageDTO.BuildChatListMessage(paged, dto.Chat.Id, dto.MessageId); var messageResponse = await _telegramHttpClient.SendMessage(messageRequest); message.ResponseId = messageResponse.Result.MessageId; await _repository.UpdateAsync(message); } break; } case UserCommandType.MyList: { //TODO break; } case UserCommandType.Join: { if (ApplicationDefaults.Commands.Contains(dto.Text)) { await _telegramHttpClient.SendMessage(TGSendMessageDTO.BuildChatJoinMessage(dto.Chat.Id)); } else { _eventBus.Publish(new TelegramChatJoinEvent(dto.Chat.Id, dto.From.Id, dto.Text)); } break; } case UserCommandType.Remove: { await _telegramHttpClient.SendMessage(TGSendMessageDTO.BuildChatRemoveMessage(dto.Chat.Id)); break; } case UserCommandType.Update: { await _telegramHttpClient.SendMessage(TGSendMessageDTO.BuildChatUpdateMessage(dto.Chat.Id)); break; } case UserCommandType.Search: { if (ApplicationDefaults.Commands.Contains(dto.Text)) { await _telegramHttpClient.SendMessage(TGSendMessageDTO.BuildChatSearchMessage(dto.Chat.Id)); } else { var paged = _chatService.GetChatsPaged(pagedIndex: 1, pageSize: 20, keywords: dto.Text); var messageRequest = TGSendMessageDTO.BuildChatListMessage(paged, dto.Chat.Id, dto.MessageId); var messageResponse = await _telegramHttpClient.SendMessage(messageRequest); await _repository.UpdateAsync(message); } break; } } }