Botfather 分步机器人 (telegram/ruby)

Botfather step-by-step bot (telegram/ruby)

我真的一直拖着自己不来这里问这个问题,但在谷歌搜索之后我觉得这是必要的。所以:

我正在尝试构建一个与电报中的 Botfather 具有相似结构的机器人。我想为使用我的机器人的用户启用逐步配置。因此,如果我问 "What's your email?",我希望他们能够自然地回答这个问题,而且我会知道他们回答了什么问题。这就是问题所在,我似乎无法找到一个好的结构来了解他们回答了哪个问题以及触发什么。我扫描过的每个机器人中的所有文档都简单地使用了这样的结构:

if message.text == 'london'
  bot.api.send_message(chat_id: message.chat.id, text: 'Correct!')
end

当我不知道用户会写什么或者如果我对不同的问题有重复的接受答案时,这不是很有用。我试过使用回复和 ForceReply 等,但这也创建了一个奇怪的结构,并且在提要中看起来不像自然消息那样干净。

简单地说:我如何知道消息是否与问题一起出现然后触发了什么?

很抱歉,我的问题有些非结构化,希望你们中的一位好人能回答我的问题。

在我的机器人中,我在数据库中创建了一个 "TelegramChat" 记录,并在 "AwaitingReplyTo" 字段中存储了对 "question" 的引用和一些相关信息(例如帐户 ID)需要更新)。

类似于:

def ask_question(question):
  ...
  telegram_chat_record(chat_id).awaiting_reply_to = "question:" + question
  telegram_chat_record.save_to_db()
  ...

def dispatcher(update):
  telegram_chat_record = get_telegram_chat_record(update)
  if telegram_chat_record.awaiting_reply_to == "question:What is your favorite city?":
    check_reply_to_favorite_city(update)
  ...