forked from sch/Slixfeed
2f6b86522f
Thank you to Mr. Guus der Kinderen from IgniteRealtime.org for promptly providing an Openfire instance for development.
72 lines
2 KiB
Python
72 lines
2 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
from slixmpp.xmlstream.matcher import MatchXPath
|
|
from slixmpp.xmlstream.handler import Callback
|
|
from slixmpp.xmlstream import ET
|
|
|
|
async def request(self, jid):
|
|
"""
|
|
Ask contant to settle subscription.
|
|
|
|
Parameters
|
|
----------
|
|
jid : str
|
|
Jabber ID.
|
|
|
|
Returns
|
|
-------
|
|
None.
|
|
"""
|
|
# Check whether JID is subscribed; otherwise, ask for presence.
|
|
if self.is_component:
|
|
presence_probe = ET.Element('presence')
|
|
presence_probe.attrib['type'] = 'probe'
|
|
presence_probe.attrib['to'] = jid
|
|
print(presence_probe)
|
|
breakpoint()
|
|
self.send_raw(str(presence_probe))
|
|
presence_probe.send()
|
|
else:
|
|
if not self.client_roster[jid]["to"]:
|
|
self.send_presence_subscription(
|
|
pto=jid,
|
|
pfrom=self.boundjid.bare,
|
|
ptype="subscribe",
|
|
pnick=self.alias
|
|
)
|
|
self.send_message(
|
|
mto=jid,
|
|
mfrom=self.boundjid.bare,
|
|
# mtype="headline",
|
|
msubject="RSS News Bot",
|
|
mbody=(
|
|
"Share online status to receive updates."
|
|
),
|
|
mnick=self.alias
|
|
)
|
|
self.send_presence(
|
|
pto=jid,
|
|
pfrom=self.boundjid.bare,
|
|
# Accept symbol 🉑️ 👍️ ✍
|
|
pstatus=(
|
|
"✒️ Share online status to receive updates."
|
|
),
|
|
# ptype="subscribe",
|
|
pnick=self.alias
|
|
)
|
|
|
|
|
|
async def unsubscribed(self, presence):
|
|
jid = presence["from"].bare
|
|
self.send_message(
|
|
mto=jid,
|
|
mfrom=self.boundjid.bare,
|
|
mbody="You have been unsubscribed."
|
|
)
|
|
self.send_presence(
|
|
pto=jid,
|
|
pfrom=self.boundjid.bare,
|
|
pstatus="🖋️ Subscribe to receive updates",
|
|
pnick=self.alias
|
|
)
|