2017-08-12 112 views
-1

我想爲月薪製作電報Bot。 用戶發送用戶名,然後發送密碼。 機器人發送工資信息。 的問題是在這裏,用戶發送工資的命令, 我想送如何等待用戶答案並保留選擇的答案

bot: user name 
user: tiger 
bot: password 
user: 985468 

我有問題等待用戶,並保持了第一條消息(用戶名)。

+2

保持您的用戶記錄數據在數據庫,文件或更好的解決方案:redis。 – tashakori

回答

2

電報API不允許你這樣做。 雖然你可以用幾種方法做到這一點。

  • 你可以使用你的數據庫來存儲這個對話的狀態
  • 你可以要求用戶回覆您的郵件,以便您可以檢查的回覆是什麼消息
  • 你可以使用內嵌的鍵盤當它是可能的(選擇選擇),所以你可以檢查callback_data
  • 你可以要求用戶用一個特定的關鍵字開始消息
  • 你可以要求用戶寫一個消息的所有可能分爲字符,然後你分裂該字符

現在有什麼對用戶更好?

  • 用戶更好的第一個選項,讓您存儲會話的狀態在數據庫中,機器人得到消息後,您檢查對話的狀態,你會得到什麼被稱爲

什麼對你更好?

  • 我會說你最好使用回覆黑客,所以你不需要一個數據庫來存儲每個用戶的聊天狀態。你可以使用force_reply參數來讓用戶更清楚。

  • 我會推薦使用內聯鍵盤時,因爲他們使事情更容易使用callback_data。例如你向用戶要求年齡,你可以用80個按鈕回覆(100是限制),他可以按正確的年齡。這更好,因爲當用戶寫文本而不是數字時(例如他寫ten而不是10),您不必擔心奇怪的情況,而且您不需要檢查數據庫狀態或檢查回覆。你只需檢查callback_data。一個想法是,每個按鈕都可以有一個以「age_ {年齡選項}」開頭的callback_data,並且您可以處理callback_data,從age_開始,只接受最後一部分。你不需要檢查答覆,你不需要處理奇怪的情況,當用戶發送錯誤的格式,你只需要處理回調

1

在DataBase中保存User Action StepUser Input Data。 並在每收到郵件檢查User Action Step做正確的工作。

1

您可以發送Hi Sean, please enter your passwordForceReply,並閱讀.message.reply_to_message.text字段。

我認爲這是解決此問題的唯一方法,但我建議您使用自己的數據庫,如其他答案。

+0

首先我應該得到用戶名和密碼 – Morteza