有一个用 C# 实现的电报机器人,它有一个带有回复按钮的菜单。有必要配置按下多个按钮的正确处理,即确保单击此按钮后,机器人会向用户发送一条消息,要求他输入评论,然后用户必须输入一条消息,机器人必须将其保存为评论。我附上当前解决方案的代码:
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;
}
}
在这种情况下,机器人将他单击的按钮本身的文本视为用户评论,因为单击按钮后其名称在聊天中重复,您需要在不使用内联键盘的情况下修复此问题。我想找到解决问题的方法。谢谢。