Мне необходимо реализовать простой функционал в зависимости от ответа пользователя мне нужно отправлять определенное сообщение и получать на него ответ, как мне в case "да" получать новое сообщение от пользователя?
u := tgbotapi.NewUpdate(0)
u.Timeout = 60
updates := bot.GetUpdatesChan(u)
for update := range updates {
if update.Message == nil {
continue
}
switch strings.ToLower(update.Message.Text) {
case "/start":
msg := tgbotapi.NewMessage(update.Message.Chat.ID, fmt.Sprintf(model.MessageHi, update.Message.From.FirstName))
bot.Send(msg)
case "да":
msg := tgbotapi.NewMessage(update.Message.Chat.ID, model.MessageQuestion)
bot.Send(msg)
// Хочу получить ответ от пользователя
case "нет":
}
}
Нужно сохранить id пользователя в стейт, и когда придёт новое сообщение - проверить было ли предыдущее «да» или нет
При помощи конечных автоматом, стейт сохранять куда-то в базу чтобы понимать на каком состоянии он остановился
https://github.com/wintermonth2298/tgbotapi-conversation-extension Может интересно будет) Поглядел идею в питоновской библиотеке. Решение занимает 80 строк, а дальше пользовательский код. Можно скопировать и доработать, т.к там самый простой вариант без обработки изображений и тд
Обсуждают сегодня