Ввод комментария пользователем после нажатия Reply кнопок в телеграмм боте C#

есть реализация телеграмм бота на C#, в котором есть меню с Reply кнопками. Необходимо настроить корректную обработку нажатий нескольких кнопок, т.е. сделать так, чтобы после нажатия на эту кнопку бот присылал пользователю сообщение с просьбой ввести комментарий, затем пользователь должен вводить сообщение и бот должен сохранить его в качестве комментария. Прилагаю код текущего решения:

    if (e.Message != null && e.Message.Type == MessageType.Text)
    {
        string text = e.Message.Text;
    
        try
        {
            // Проверяем, является ли полученное сообщение нажатием одной из кнопок
            if (ButtonMenu.Values.Contains(text)) // Если текст сообщения совпадает с одним из значений в словаре buttonMenu
            {
                    // Получаем индекс кнопки из словаря buttonMenu
                    string buttonIndex = ButtonMenu.FirstOrDefault(x => x.Value == text).Key;
                    string buttonName = ButtonMenu[buttonIndex];
                if (buttonIndex == "1" || buttonIndex == "2" || buttonIndex == "5)
                {
                    await _botClient.SendTextMessageAsync(chatId, $"Вы выбрали {buttonName}. Введите комментарий:");
    
                    // Сохраняем информацию о том, что мы ожидаем комментарий от этого пользователя
                    usersAwaitingComment[chatId] = true;
                }
                else
                {
                    await _botClient.SendTextMessageAsync(chatId, $"Вы выбрали {buttonName}. Сохранено!");
                }
                  
                
            }
// Проверяем, ожидает ли бот комментарий от этого пользователя
                if (usersAwaitingComment.TryGetValue(chatId, out bool isAwaitingComment) && isAwaitingComment)
                {
                    // Получаем введённый комментарий
                    string comment = e.Message.Text;
    
                    // Отправляем подтверждение пользователю
                    await _botClient.SendTextMessageAsync(chatId, $"Ваш комментарий: {comment}");
    
                    // Убираем пользователя из списка ожидающих комментариев
                    usersAwaitingComment[chatId] = false;
                }
    
        }

В данном случае бот, в качестве комментария пользователя воспринимает текст самой кнопки, на которую он нажал, поскольку после нажатия на кнопку ее название дублируется в чате, нужно это исправить, при этом не используя вместо этого inline клавиатуру. Хотелось бы найти решение задачи. Спасибо.


Ответы (1 шт):

Автор решения: User12351259599491
        async Task OnMessage(Message msg, UpdateType type)
        {
           




            if (msg.Text == "/start")
            {
                var replyMarkup = new ReplyKeyboardMarkup(true)
                .AddButton("Комментарий 1")
                .AddNewRow("Комментарий 2");

                var sent = await bot.SendMessage(msg.Chat.Id, "Нажмите на кнопку", replyMarkup: replyMarkup);
               
                return;
            }

            if (msg.Text == "Комментарий 1")
            {
                
                var sent = await bot.SendMessage(msg.Chat.Id, "Вы нажали кнопку 1 теперь введите комментарий");
                //далее устанавливаем юзеру состояния ожидания комментария 
                return;
            }
            if (msg.Text == "Комментарий 2")
            {

                var sent = await bot.SendMessage(msg.Chat.Id, "Вы нажали кнопку 2 теперь введите комментарий");
                //далее устанавливаем юзеру состояния ожидания комментария 
                return;
            }
            //тут якобы проверяем ждём ли от пользователя комментарий
            if (true)                 
            {
                var sent = await bot.SendMessage(msg.Chat.Id, $"Ваш комментарий {msg.Text} сохранён.");
                return;
            }

        }
→ Ссылка