slidcord.group#
Classes#
This is instantiated once per |
|
A legacy participant of a legacy group chat. |
|
A room, a.k.a. a Multi-User Chat. |
Module Contents#
- class slidcord.group.Bookmarks(session)[source]#
Bases:
slidge.LegacyBookmarks
[int
,MUC
]This is instantiated once per
BaseSession
- Parameters:
session (slidge.core.session.BaseSession) –
- session: slidcord.session.Session[source]#
- class slidcord.group.Participant(*a, **k)[source]#
Bases:
slidcord.util.StatusMixin
,slidcord.util.MessageMixin
,slidge.LegacyParticipant
A legacy participant of a legacy group chat.
- session: slidcord.session.Session[source]#
- contact: slidcord.contact.Contact[source]#
- property discord_user: discord.User | discord.ClientUser[source]#
- Return type:
Union[discord.User, discord.ClientUser]
- class slidcord.group.MUC(session, legacy_id, jid)[source]#
Bases:
slidge.LegacyMUC
[int
,int
,Participant
,int
]A room, a.k.a. a Multi-User Chat.
MUC instances are obtained by calling
slidge.group.bookmarks.LegacyBookmarks()
on the user’sslidge.core.session.BaseSession
.- Parameters:
session (slidge.core.session.BaseSession) –
legacy_id (slidge.util.types.LegacyGroupIdType) –
jid (slixmpp.JID) –
- session: slidcord.session.Session[source]#
- async get_user_participant(**kwargs)[source]#
Get the participant representing the gateway user
- Parameters:
kwargs – additional parameters for the
Participant
construction (optional)- Returns:
- Return type:
- 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 update_info()[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.
- async _update_guild_channel(chan)[source]#
- Parameters:
chan (discord.TextChannel) –
- async _update_group(chan)[source]#
- Parameters:
chan (discord.GroupChannel) –
- 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 thearchive_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 notNone
, 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 history(after, before)[source]#
- Parameters:
after (Optional[slidge.util.types.HoleBound]) –
before (Optional[slidge.util.types.HoleBound]) –
- async get_participant_by_discord_user(user)[source]#
- Parameters:
user (Union[discord.User, discord.Member]) –