订阅新收件人:update_roster()似乎挂起

时间:2017-07-10 11:06:17

标签: python xmpp sleekxmpp

我有一个小的python脚本将xmpp-messages发送给给定的收件人。如果收件人已有订阅,这种情况很有效 - 否则邮件将无法传递。

由于系统定期有新用户,我有意使用update_roster(recipient,block=False,subscription="both")自动订阅新收件人。但不幸的是,剧本似乎就在那里。

为什么?

请参阅下面的代码......

class SendMsgBot(sleekxmpp.ClientXMPP):

  def __init__(self, jid, password, recipient, message):
    sleekxmpp.ClientXMPP.__init__(self, jid, password)

    self.recipient = recipient
    self.msg = message

    self.add_event_handler("session_start", self.start)

  def start(self, event):
    self.send_presence()
    self.get_roster()
    if self.msg =="":
      # HERE IT IS ....
      self.update_roster(recipient,block=False,subscription="both")
    else:
      self.send_message(mto=self.recipient,
                        mbody=self.msg,
                        mtype='chat')

    self.disconnect(wait=True)

1 个答案:

答案 0 :(得分:0)

好吧,显然我自己就解决了这个问题。已将subscription="both"更改为subscription="to" - 因此语句如下所示:

     self.update_roster(recipient,block=False,subscription="to")

: - )