我需要有一个命令,询问用户的问题,并在下午记录他们的响应,但我不确定如何通过基于线程的命令在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
等。如果可以的话,我会坚持如何做到这一点。
答案 0 :(得分:0)
因为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
,您将使自己和用户的生活更轻松可以按任何顺序处理。
您仍然必须确保每个事件以线程安全的方式写入集合,并且您在某个时刻序列化集合。与此同时,这绝对应该让你朝着正确的方向前进。