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;
        }
예제 #2
0
        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);
        }