private async Task OnBotMessage(ITelegramBotClient client, Message message, CancellationToken cancellationToken) { _logger.LogDebug("Received a text message in {ChatId}, from: {UserId}. Message: {Message}", message.Chat.Id, message.From.Id, message.Text); if (message.Text?.StartsWith('/') == true) { await client.SendChatActionAsync(message.Chat, ChatAction.Typing, cancellationToken); await AnswerBotCommandAsync(client, message, cancellationToken); } else if (_session.Get(message.Chat.Id) is ChatSession session) { await client.SendChatActionAsync(message.Chat, ChatAction.Typing, cancellationToken); switch (session.Scope) { case SessionScope.Login: await _startCommand.Login(client, message, cancellationToken); break; default: break; } } return; }
public async Task Handle(ITelegramBotClient client, Message message, CancellationToken cancellationToken) { await client.SendChatActionAsync(message.Chat, ChatAction.Typing, cancellationToken); var userExists = await _userRepository.ExistsAsync(message.From.Id, cancellationToken); var session = _session.Get(message.Chat.Id); if (userExists || session != null) { await client.SendTextMessageAsync( chatId : message.Chat, text : L10n.strings.WeHaveAlreadyMetMessage, parseMode : ParseMode.Markdown, replyToMessageId : message.MessageId, cancellationToken : cancellationToken ); return; } await client.SendTextMessageAsync( chatId : message.Chat, text : L10n.strings.WelcomeMessage, parseMode : ParseMode.Markdown, cancellationToken : cancellationToken ); await Task.Delay(_settings.ConsecutiveMessagesInterval, cancellationToken); var sent = await client.SendTextMessageAsync( chatId : message.Chat, text : L10n.strings.SendUsernameAndPasswordMessage, parseMode : ParseMode.Markdown, replyMarkup : new ForceReplyMarkup() { InputFieldPlaceholder = L10n.strings.UsernameAndPasswordPlaceholder }, cancellationToken : cancellationToken ); _session.Add(sent, message.From.Id, SessionScope.Login); }