怎样才能用机器人与机器人和用户进行对话

时间:2017-11-13 15:09:18

标签: python telepot

我想用telepot创建机器人,询问用户经常提问。 例如,首先询问'你的名字是什么。?'然后用户回复'用户名',然后问你多大了?并且用户回复他的年龄和......

我为用户和机器人之间的聊天编写了一个代码,但有时我会收到错误。请指导我如何使用telepot制作此机器人。?

我希望使用telepot

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

1 个答案:

答案 0 :(得分:0)

您正在寻找的是DelegatorBot。 考虑this tutorial

  

考虑这种情况。机器人想拥有智能   与很多用户交谈,如果我们只能使用一个   处理消息的执行行(就像我们到目前为止所做的那样),   我们必须维护每个对话的一些状态变量   在消息处理功能之外。收到每条消息后,   我们首先要检查用户是否已经进行了对话   开始了,如果是的话,我们一直在谈论什么。避免这样的   世俗,我们需要一种结构化的方式来维持“线程”   会话。

DelegatorBot为每个用户提供了一个机器人实例,因此您不必考虑多个用户与之交谈时会发生什么。 (如果它对您有所帮助,请随时查看how I am using it。)
本教程的示例是用户发送了多少消息的简单计数器:

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的实例。

  

我为用户和机器人之间的聊天编写了一个代码,但有时我会收到错误。

如果您的问题与您所遇到的错误相关,而不是如何与州保持对话,则需要提供有关您所遇到的错误以及何时出现错误的详细信息。