Source code for slixmpp.plugins.xep_0502.muc_activity
# Slixmpp: The Slick XMPP Library
# Copyright (C) 2025 Mathieu Pasquet
# This file is part of Slixmpp.
# See the file LICENSE for copying permission.
from slixmpp import JID
from slixmpp.plugins import BasePlugin
from slixmpp.exceptions import IqError, IqTimeout
MUC_ROOMINFO = 'http://jabber.org/protocol/muc#roominfo'
[docs]
class XEP_0502(BasePlugin):
"""
XEP-0502: MUC Activity Indicator
"""
name = "xep_0502"
description = "XEP-0502: MUC Activity Indicator"
dependencies = {"xep_0030", "xep_0128"}
namespace = 'urn:xmpp:muc-activity'
[docs]
async def get_activity(self, jid: JID, **iqargs) -> float | None:
"""
Return the activity of a room, or None if the activity is not found
"""
try:
info_iq = await self.xmpp.plugin['xep_0030'].get_info(
jid=jid,
**iqargs,
)
except (IqError, IqTimeout):
return None
disco = info_iq.get_plugin('disco_info', check=True)
if not disco:
return None
if 'forms' not in disco:
return None
forms = disco['forms']
if not forms:
return None
field = '{%s}message-activity' % self.namespace
for form in forms:
values = form.get_values()
if values.get('FORM_TYPE') == [MUC_ROOMINFO]:
return values.get(field, None)
return None