簡體   English   中英

基於Cinch的機器人中基於狀態的命令

[英]State based commands in a cinch based bot

我需要一個命令來詢問用戶問題,並在pm中記錄他們的響應,但是由於基於線程的命令,我不確定如何在cinch上執行此操作。 像這樣

!profile create
Bot: Please tell me your age
27
Bot: Thank you. Please tell me your gender.
Female
Bot: Okay. Please tell me your location. Where do you live?
Somewhere

等等,我堅持如何使用cinch來做到這一點。

為每個設置使用唯一的前綴

因為Cinch是線程化的,所以最簡單的方法是使鍵/值對成為冪等。 例如,運行!setup可能會提示用戶輸入帶前綴的值,每個前綴值都作為一個單獨的事件處理而不是鏈接在一起。 考慮以下:

# Reply to `!setup` with list of async prefixes.
on :message, /^!setup/ do |m|
  m.reply "Set age with '!age'"
  m.reply "Set location with '!loc'"
end

on :message, /^!age\s+(\d+)/ do |m|
  m.reply "Age: #{$1}"
end

on :message, /^!loc\s+(.*)/ do |m|
  m.reply "Location: #{$1.strip}"
end

盡管您可以通過使每個設置提示都成為下一個鍵/值對來鏈接提示,但通過以一系列可以按任何順序處理的異步命令來響應!setup ,可以使您自己和用戶的工作更加輕松。

您仍然必須確保每個事件都以線程安全的方式寫入集合,並在某個時候序列化集合。 同時,這肯定會讓您朝正確的方向前進。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM