public async Task <List <Message> > SendWakeUpMessageToAllUsersAsync(CancellationToken cancellationToken) { if (cancellationToken.IsCancellationRequested) { return(null); } var sentMessages = new List <Message>(); IEnumerable <UserDbo> users = null; using (var context = _dbContextFactory.Create()) { users = context.User .Include(x => x.UserSettings) .Include(x => x.RarityWeights) .Where(x => x.UserSettings.RecieveReminders); } foreach (var user in users) { Message sentMessage = null; var rarity = _rarityRoller.RollRarityForUser(user); var message = await _messageTextProvider.GetMessage(MessageCategory.WAKEUP, MessageType.STANDARD, rarity, user.ChatId); // could already pass gender and so on if (message.ImageUrl == null) { sentMessage = await _botClient.SendTextMessageAsync(user.ChatId, message.Text); } else { sentMessage = await _botClient.SendPhotoAsync(user.ChatId, message.ImageUrl, caption : message.Text); } sentMessages.Add(sentMessage); } return(sentMessages); }
public async Task <SendMessageResult> SendMessageAsync(MessageCategory category, MessageType type, MessageRarity rarity, long chatId) { var redalertMessage = false; var message = await _messageTextProvider.GetMessage(category, type, rarity, chatId); if (message == null) { message.Text = Const.RedAlertMessage; redalertMessage = true; } try { if (message.ImageUrl == null) { await _telegramBotClientWrapper.Client.SendTextMessageAsync(chatId, message.Text); } else { await _telegramBotClientWrapper.Client.SendPhotoAsync(chatId, message.ImageUrl, caption : message.Text); } } catch (ApiRequestException ex) { if (ex.Message.Contains("blocked")) { var result = SendMessageResult.CreateBlocked(); return(result); } _logger.LogError(ex.ToString()); return(SendMessageResult.CreateUnknown()); } if (redalertMessage) { _logger.LogInformation($"RedAlert message sent. ChatId: {chatId}."); } else { _logger.LogInformation($"Message sent. " + $"ChatId: {chatId}, " + $"Category: {category}, " + $"Type: {type}, " + $"Rarity: {rarity}."); } return(SendMessageResult.CreateSuccess()); }
public async Task ProcessUserInput(string userInput, long chatId) { var realUser = await _userStorage.GetUserByChatIdNoTracking(chatId); if (userInput.StartsWith("/")) { await _commandProcessor.ProcessCommand(userInput.TrimStart('/'), chatId); } else { var responseMessage = await _botMessageProvider.GetMessage( category : MessageCategory.SIMPLERESPONSE, type : MessageType.STANDARD, rarity : _rarityRoller.RollRarityForUser(realUser), chatId); await _botClient.SendTextMessageAsync(chatId, responseMessage.Text); } }