From 561d36133fd8dcea24f5c59e10cdb5d953544038 Mon Sep 17 00:00:00 2001 From: "Schimon Jehudah, Adv." Date: Mon, 16 Sep 2024 15:37:51 +0300 Subject: [PATCH] Invoke KaikOut by its alias in a given group chat. --- kaikout/version.py | 4 ++-- kaikout/xmpp/chat.py | 11 +++++++---- kaikout/xmpp/utilities.py | 6 ++++++ 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/kaikout/version.py b/kaikout/version.py index a464306..f2bc63c 100644 --- a/kaikout/version.py +++ b/kaikout/version.py @@ -1,2 +1,2 @@ -__version__ = '0.0.5' -__version_info__ = (0, 0, 5) +__version__ = '0.0.6' +__version_info__ = (0, 0, 6) diff --git a/kaikout/xmpp/chat.py b/kaikout/xmpp/chat.py index 4d329a9..31fd53c 100644 --- a/kaikout/xmpp/chat.py +++ b/kaikout/xmpp/chat.py @@ -47,16 +47,20 @@ class XmppChat: # Process commands. message_type = message['type'] message_body = message['body'] + jid = message['from'] + jid_bare = jid.bare if message_type == 'groupchat': alias = message['mucnick'] room = message['mucroom'] + alias_of_kaikout = XmppUtilities.get_self_alias(self, jid_bare) if (message['mucnick'] == self.alias or not XmppUtilities.is_moderator(self, room, alias) or - not message_body.startswith('%')): + not message_body.startswith(alias_of_kaikout)): return + alias_of_kaikout_length = len(alias_of_kaikout) + 1 + command = message_body[alias_of_kaikout_length:].lstrip() elif message_type in ('chat', 'normal'): - jid = message['from'] - jid_bare = jid.bare + command = message_body jid_full = jid.full room = self.sessions[jid_bare] if jid_bare in self.sessions else message_body status_mode,status_text, message_response = None, None, None @@ -185,7 +189,6 @@ class XmppChat: command_time_start = time.time() - command = message_body[1:] if message_type == 'groupchat' else message_body command_lowercase = command.lower() # if not self.settings[room]['enabled']: diff --git a/kaikout/xmpp/utilities.py b/kaikout/xmpp/utilities.py index 02f1cd1..89f604d 100644 --- a/kaikout/xmpp/utilities.py +++ b/kaikout/xmpp/utilities.py @@ -10,6 +10,12 @@ logger = Logger(__name__) class XmppUtilities: + def get_self_alias(self, room): + """Get self alias of a given group chat""" + jid_full = self.plugin['xep_0045'].get_our_jid_in_room(room) + alias = jid_full.split('/')[1] + return alias + async def is_jid_of_moderators(self, room, jid_full): # try: moderators = await XmppMuc.get_role_list(self, room, 'moderator')