2023-12-28 15:50:23 +01:00
|
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
TODO
|
|
|
|
|
|
|
|
|
|
1) Send message to inviter that bot has joined to groupchat.
|
|
|
|
|
|
|
|
|
|
2) If groupchat requires captcha, send the consequent message.
|
|
|
|
|
|
|
|
|
|
3) If groupchat error is received, send that error message to inviter.
|
|
|
|
|
|
|
|
|
|
"""
|
2024-01-03 11:37:33 +01:00
|
|
|
|
import logging
|
2023-12-28 17:22:32 +01:00
|
|
|
|
import slixfeed.xmpp.bookmark as bookmark
|
2024-01-02 12:42:41 +01:00
|
|
|
|
import slixfeed.xmpp.process as process
|
2024-01-18 21:57:49 +01:00
|
|
|
|
from slixfeed.dt import current_time
|
2023-12-28 15:50:23 +01:00
|
|
|
|
|
2024-01-02 12:42:41 +01:00
|
|
|
|
# async def accept_muc_invite(self, message, ctr=None):
|
|
|
|
|
# # if isinstance(message, str):
|
|
|
|
|
# if not ctr:
|
|
|
|
|
# ctr = message["from"].bare
|
|
|
|
|
# jid = message['groupchat_invite']['jid']
|
|
|
|
|
# else:
|
|
|
|
|
# jid = message
|
|
|
|
|
async def accept_invitation(self, message):
|
|
|
|
|
# operator muc_chat
|
|
|
|
|
inviter = message["from"].bare
|
|
|
|
|
muc_jid = message['groupchat_invite']['jid']
|
|
|
|
|
await join(self, inviter, muc_jid)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
async def autojoin(self, event):
|
|
|
|
|
result = await self.plugin['xep_0048'].get_bookmarks()
|
|
|
|
|
bookmarks = result["private"]["bookmarks"]
|
|
|
|
|
conferences = bookmarks["conferences"]
|
|
|
|
|
for conference in conferences:
|
|
|
|
|
if conference["autojoin"]:
|
|
|
|
|
muc_jid = conference["jid"]
|
2024-01-03 11:37:33 +01:00
|
|
|
|
logging.debug("Autojoin groupchat", muc_jid)
|
2024-01-02 12:42:41 +01:00
|
|
|
|
self.plugin['xep_0045'].join_muc(
|
|
|
|
|
muc_jid,
|
|
|
|
|
self.nick,
|
|
|
|
|
# If a room password is needed, use:
|
|
|
|
|
# password=the_room_password,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
async def join(self, inviter, muc_jid):
|
2023-12-28 15:50:23 +01:00
|
|
|
|
# token = await initdb(
|
|
|
|
|
# muc_jid,
|
|
|
|
|
# get_settings_value,
|
|
|
|
|
# "token"
|
|
|
|
|
# )
|
|
|
|
|
# if token != "accepted":
|
|
|
|
|
# token = randrange(10000, 99999)
|
|
|
|
|
# await initdb(
|
|
|
|
|
# muc_jid,
|
2024-01-14 13:46:38 +01:00
|
|
|
|
# update_settings_value,
|
2023-12-28 15:50:23 +01:00
|
|
|
|
# ["token", token]
|
|
|
|
|
# )
|
|
|
|
|
# self.send_message(
|
|
|
|
|
# mto=inviter,
|
|
|
|
|
# mbody=(
|
|
|
|
|
# "Send activation token {} to groupchat xmpp:{}?join."
|
|
|
|
|
# ).format(token, muc_jid)
|
|
|
|
|
# )
|
|
|
|
|
print("muc_jid")
|
|
|
|
|
print(muc_jid)
|
|
|
|
|
self.plugin['xep_0045'].join_muc(
|
|
|
|
|
muc_jid,
|
|
|
|
|
self.nick,
|
|
|
|
|
# If a room password is needed, use:
|
|
|
|
|
# password=the_room_password,
|
|
|
|
|
)
|
2023-12-28 17:22:32 +01:00
|
|
|
|
await bookmark.add(self, muc_jid)
|
2024-01-02 12:42:41 +01:00
|
|
|
|
process.greet(self, muc_jid, chat_type="groupchat")
|
2023-12-28 15:50:23 +01:00
|
|
|
|
|
|
|
|
|
|
2024-01-02 12:42:41 +01:00
|
|
|
|
async def leave(self, muc_jid):
|
2023-12-28 15:50:23 +01:00
|
|
|
|
messages = [
|
|
|
|
|
"Whenever you need an RSS service again, "
|
|
|
|
|
"please don’t hesitate to contact me.",
|
|
|
|
|
"My personal contact is xmpp:{}?message".format(self.boundjid.bare),
|
|
|
|
|
"Farewell, and take care."
|
|
|
|
|
]
|
|
|
|
|
for message in messages:
|
|
|
|
|
self.send_message(
|
|
|
|
|
mto=muc_jid,
|
|
|
|
|
mbody=message,
|
|
|
|
|
mtype="groupchat"
|
|
|
|
|
)
|
2023-12-28 17:22:32 +01:00
|
|
|
|
await bookmark.remove(self, muc_jid)
|
2023-12-28 15:50:23 +01:00
|
|
|
|
self.plugin['xep_0045'].leave_muc(
|
|
|
|
|
muc_jid,
|
|
|
|
|
self.nick,
|
|
|
|
|
"Goodbye!",
|
|
|
|
|
self.boundjid.bare
|
|
|
|
|
)
|
|
|
|
|
|