如何使用python和xmppy自动接受订阅?

2024-04-20 05:50:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为我玩的游戏制作一个聊天机器人,这个机器人本身工作得很好,现在我需要做的是让机器人自动添加它收到的任何请求。在

我不知道该怎么办,通过谷歌搜索我发现有人说 def add_friend(self, user): self._send(xmpp.Presence(to=user, typ='subscribed')) self._send(xmpp.Presence(to=user, typ='subscribe')) return True

会成功的,但我不知道如何在代码中实现它。在

以下是我使用Python的消息传递系统的代码基础:

import xmpp

conn = xmpp.Client("domain here..")
if not conn.connect(server=("<server here>", 5223)):
    print "connect failed."
    exit()

if not conn.auth("USER ID", "PASS HERE", "xiff"):
    print "auth failed."
    exit()

roster = None

def message_handler(conn, msg):
    user = roster.getName(str(msg.getFrom()))
    text = msg.getBody()

    print "[%s] %s" % (user, text)

    reply = msg.buildReply("[ECHO] %s" % (text))
    reply.setType("chat")
    conn.send(reply)

conn.RegisterHandler("message", message_handler)
conn.sendInitPresence(requestRoster=1)
roster = conn.getRoster()

while conn.isConnected():
    try:
        conn.Process(10)
    except keyboardInterrupt:
        break

当用户尝试添加bot时,将显示以下内容:

^{pr2}$

有什么想法吗,我已经在这上面呆了几天了!在


Tags: totextselfsendmessagedef机器人xmpp
1条回答
网友
1楼 · 发布于 2024-04-20 05:50:43

应实现用于接受订阅的状态处理程序:

def presence(conn, event):
    if event.getType() == 'subscribe':
        conn.send(xmpp.Presence(to=event.getFrom(), typ='subscribed'))

conn.RegisterHandler('presence', presence)

相关问题 更多 >