我想创建一个telepot
询问用户常见问题的机器人。例如,首先问“你叫什么名字。?” 然后用户回复“用户名”,然后问你几岁?用户回复他的年龄和...
我已经为用户和机器人之间的聊天编写了代码,但有时我会出错。请指导我如何使用telepot
.? 制作这个机器人?
我想在机器人和用户之间进行对话telepot
我不再维护这个库。感谢您考虑 Telepot。 - 维护者,nickoala
您正在寻找的是DelegatorBot
. 考虑本教程。
考虑这种情况。机器人希望与大量用户进行智能对话,如果我们只能使用单行执行来处理消息(就像我们目前所做的那样),我们将不得不维护一些关于外部每个对话的状态变量消息处理函数。在收到每条消息时,我们首先要检查用户是否已经开始了对话,如果是,我们一直在谈论什么。为了避免这种平凡,我们需要一种结构化的方式来维护对话的“线程”。
DelegatorBot 为每个用户提供一个机器人实例,因此您不必考虑多个用户与其交谈时会发生什么。(如果它对您有帮助,请随意看看我是如何使用它的。)
本教程的示例是用户发送了多少消息的简单计数器:
import sys
import time
import telepot
from telepot.loop import MessageLoop
from telepot.delegate import pave_event_space, per_chat_id, create_open
class MessageCounter(telepot.helper.ChatHandler):
def __init__(self, *args, **kwargs):
super(MessageCounter, self).__init__(*args, **kwargs)
self._count = 0
def on_chat_message(self, msg):
self._count += 1
self.sender.sendMessage(self._count)
TOKEN = sys.argv[1] # get token from command-line
bot = telepot.DelegatorBot(TOKEN, [
pave_event_space()(
per_chat_id(), create_open, MessageCounter, timeout=10),
])
MessageLoop(bot).run_as_thread()
while 1:
time.sleep(10)
MessageCounter
此代码为每个单独的用户创建一个实例。
我已经为用户和机器人之间的聊天编写了代码,但有时我会出错。
如果您的问题是关于您遇到的错误而不是关于如何与状态保持对话,您需要提供有关您遇到的错误以及这些错误何时出现的更多信息。