matteridge.group

Classes

Bookmarks

This is instantiated once per BaseSession

Participant

A legacy participant of a legacy group chat.

MUC

A room, a.k.a. a Multi-User Chat.

Module Contents

class matteridge.group.Bookmarks(*a, **k)[source]

Bases: slidge.LegacyBookmarks[str, MUC]

This is instantiated once per BaseSession

session: matteridge.session.Session[source]
channels[source]
async fill()[source]

Establish a user’s known groups.

This has to be overridden in plugins with group support and at the minimum, this should await self.by_legacy_id(group_id) for all the groups a user is part of.

Slidge internals will call this on successful BaseSession.login()

class matteridge.group.Participant(*a, **kw)[source]

Bases: matteridge.util.UserMixin, slidge.LegacyParticipant

A legacy participant of a legacy group chat.

contact: matteridge.contact.Contact[source]
mm_id()[source]
class matteridge.group.MUC(session, legacy_id, jid)[source]

Bases: slidge.LegacyMUC[str, str, Participant, str]

A room, a.k.a. a Multi-User Chat.

MUC instances are obtained by calling slidge.group.bookmarks.LegacyBookmarks() on the user’s slidge.core.session.BaseSession.

Parameters:
  • session (slidge.core.session.BaseSession)

  • legacy_id (slidge.util.types.LegacyGroupIdType)

  • jid (slixmpp.JID)

session: matteridge.session.Session[source]
xmpp: matteridge.gateway.Gateway[source]
async update_info(channel=None)[source]

Fetch information about this group from the legacy network

This is awaited on MUC instantiation, and should be overridden to update the attributes of the group chat, like title, subject, number of participants etc.

To take advantage of the slidge avatar cache, you can check the .avatar property to retrieve the “legacy file ID” of the cached avatar. If there is no change, you should not call slidge.core.mixins.avatar.AvatarMixin.set_avatar() or attempt to modify the :attr:.avatar property.

Parameters:

channel (Optional[mattermost_api_reference_client.models.Channel])

async __set_team_icon(team)[source]
Parameters:

team (mattermost_api_reference_client.models.Team)

async fetch_channel()[source]
Return type:

mattermost_api_reference_client.models.Channel

async fill_participants()[source]

This method should yield the list of all members of this group.

Typically, use participant = self.get_participant(), self.get_participant_by_contact(), of self.get_user_participant(), and update their affiliation, hats, etc. before yielding them.

async backfill(after=None, before=None)[source]

Override this if the legacy network provide server-side group archives.

In it, send history messages using self.get_participant(xxx).send_xxxx, with the archive_only=True kwarg. This is only called once per slidge run for a given group.

Parameters:
  • after (Optional[slidge.util.types.HoleBound]) – Fetch messages after this one. If None, it’s up to you to decide how far you want to go in the archive. If it’s not None, it means slidge has some messages in this archive and you should really try to complete it to avoid “holes” in the history of this group.

  • before (Optional[slidge.util.types.HoleBound]) – Fetch messages before this one. If None, fetch all messages up to the most recent one

async get_participant_by_mm_user_id(user_id)[source]
Parameters:

user_id (str)

Return type:

Participant