0

我想创建一个telepot询问用户常见问题的机器人。例如,首先问“你叫什么名字。?” 然后用户回复“用户名”,然后问你几岁?用户回复他的年龄和...

我已经为用户和机器人之间的聊天编写了代码,但有时我会出错。请指导我如何使用telepot.? 制作这个机器人?

我想在机器人和用户之间进行对话telepot

4

1 回答 1

2

我不再维护这个库。感谢您考虑 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此代码为每个单独的用户创建一个实例。

我已经为用户和机器人之间的聊天编写了代码,但有时我会出错。

如果您的问题是关于您遇到的错误而不是关于如何与状态保持对话,您需要提供有关您遇到的错误以及这些错误何时出现的更多信息。

于 2018-03-19T08:44:42.190 回答