Вопрос \ ответ Telegram.Bot C#
Разрабатываю бота цель которого собрать информацию о пользователе, суть такова бот задаёт вопрос "Ваше Имя" после ответа пользователя бот должен зать следующий вопрос "Сколько Вам лет" опять ждёт ответа пользователя и после задаёт следующий вопрос. Не до конца понимаю реализацию данного действия. У меня бот выпуливает из списка всё что можно:
if(messageText == "1️⃣ - Акт согласования" || messageText == "1")
{
Message questionN_1 = await botClient.SendTextMessageAsync(
chatId: chatId,
text: ConnectBotDB()[0],
replyMarkup: replyMenuKeyboardMarkup,
cancellationToken: cancellationToken);
if (questionN_1.Text == ConnectBotDB()[0])
{
Message questionN_2 = await botClient.SendTextMessageAsync(
chatId: chatId,
text: ConnectBotDB()[1],
replyMarkup: replyMenuKeyboardMarkup,
cancellationToken: cancellationToken);
}
}
Подскажите пожалуйста или поделитесь примером реализации данного действия. Возможно нужно сравнивать questionN_1 и messageText ? Но тогда я буду натыкаться на то что MessageText никогда не будет null. Спасибо большое всем за идеи и подсказки
Ответы (1 шт):
Самый простой вариант - это отвечать на сообщения бота. Т.е. бот отправляет какое-то сообщение и предлагает пользователю ответить на это сообщение, и если пользователь ответит на это сообщение, то бот поймет, на какой вопрос ответил пользователь
if (update.Message.Text.ToLower() == "/start")
{
await botClient.SendTextMessageAsync(chatId: update.Message.Chat.Id, text: "Ваше имя", replyMarkup: new ForceReplyMarkup { Selective = true });
return;
}
if (update.Message.ReplyToMessage != null && message.ReplyToMessage.Text.Contains("Ваше имя"))
{
//записываете куда-либо введенное имя
await botClient.SendTextMessageAsync(chatId: update.Message.Chat.Id, text: "Сколько вам лет", replyMarkup: new ForceReplyMarkup { Selective = true });
return;
}
if (update.Message.ReplyToMessage != null && message.ReplyToMessage.Text.Contains("Сколько вам лет"))
{
//ваша дальнейшая обработка
}