slidge.group.participant#

Module Contents#

Classes#

LegacyParticipant

A legacy participant of a legacy group chat.

class slidge.group.participant.LegacyParticipant(muc, nickname=None, is_user=False, is_system=False, role='participant', affiliation='member')#

A legacy participant of a legacy group chat.

Parameters:
  • muc (slidge.group.room.LegacyMUC) –

  • nickname (Optional[str]) –

  • role (slidge.util.types.MucRole) –

  • affiliation (slidge.util.types.MucAffiliation) –

send_initial_presence(full_jid, nick_change=False, presence_id=None)#

Called when the user joins a MUC, as a mechanism to indicate to the joining XMPP client the list of “participants”.

Can be called this to trigger a “participant has joined the group” event.

Parameters:
  • full_jid (slixmpp.JID) – Set this to only send to a specific user XMPP resource.

  • nick_change – Used when the user joins and the MUC renames them (code 210)

  • presence_id (Optional[str]) – set the presence ID. used internally by slidge

leave()#

Call this when the participant leaves the room

kick()#

Call this when the participant is kicked from the room

ban()#

Call this when the participant is banned from the room

online(status=None, last_seen=None)#

Send an “online” presence from this contact to the user.

Parameters:
  • status (Optional[str]) – Arbitrary text, details of the status, eg: “Listening to Britney Spears”

  • last_seen (Optional[datetime.datetime]) – For XEP-0319

away(status=None, last_seen=None)#

Send an “away” presence from this contact to the user.

This is a global status, as opposed to LegacyContact.inactive() which concerns a specific conversation, ie a specific “chat window”

Parameters:
  • status (Optional[str]) – Arbitrary text, details of the status, eg: “Gone to fight capitalism”

  • last_seen (Optional[datetime.datetime]) – For XEP-0319

extended_away(status=None, last_seen=None)#

Send an “extended away” presence from this contact to the user.

This is a global status, as opposed to LegacyContact.inactive() which concerns a specific conversation, ie a specific “chat window”

Parameters:
  • status (Optional[str]) – Arbitrary text, details of the status, eg: “Gone to fight capitalism”

  • last_seen (Optional[datetime.datetime]) – For XEP-0319

busy(status=None, last_seen=None)#

Send a “busy” (ie, “dnd”) presence from this contact to the user,

Parameters:
offline(status=None, last_seen=None)#

Send an “offline” presence from this contact to the user.

Parameters:
invite_to(muc, reason=None, password=None, **send_kwargs)#

Send an invitation to join a group (XEP-0249) from this XMPP Entity.

Parameters:
  • muc (slidge.group.LegacyMUC) – the muc the user is invited to

  • reason (Optional[str]) – a text explaining why the user should join this muc

  • password (Optional[str]) – maybe this will make sense later? not sure

  • send_kwargs – additional kwargs to be passed to _send() (internal use by slidge)

active(**kwargs)#

Send an “active” chat state (XEP-0085) from this XMPP Entity.

composing(**kwargs)#

Send a “composing” (ie “typing notification”) chat state (XEP-0085) from this XMPP Entity.

paused(**kwargs)#

Send a “paused” (ie “typing paused notification”) chat state (XEP-0085) from this XMPP Entity.

inactive(**kwargs)#

Send an “inactive” (ie “contact has not interacted with the chat session interface for an intermediate period of time”) chat state (XEP-0085) from this XMPP Entity.

gone(**kwargs)#

Send a “gone” (ie “contact has not interacted with the chat session interface, system, or device for a relatively long period of time”) chat state (XEP-0085) from this XMPP Entity.

ack(legacy_msg_id, **kwargs)#

Send an “acknowledged” message marker (XEP-0333) from this XMPP Entity.

Parameters:

legacy_msg_id (slidge.util.types.LegacyMessageType) – The message this marker refers to

received(legacy_msg_id, **kwargs)#

Send a “received” message marker (XEP-0333) from this XMPP Entity. If called on a LegacyContact, also send a delivery receipt marker (XEP-0184).

Parameters:

legacy_msg_id (slidge.util.types.LegacyMessageType) – The message this marker refers to

displayed(legacy_msg_id, **kwargs)#

Send a “displayed” message marker (XEP-0333) from this XMPP Entity.

Parameters:

legacy_msg_id (slidge.util.types.LegacyMessageType) – The message this marker refers to

send_text(body, legacy_msg_id=None, *, when=None, reply_to=None, thread=None, hints=None, carbon=False, archive_only=False, correction=False, correction_event_id=None, link_previews=None, **send_kwargs)#

Send a text message from this XMPP Entity.

Parameters:
  • body (str) – Content of the message

  • legacy_msg_id (Optional[slidge.util.types.LegacyMessageType]) – If you want to be able to transport read markers from the gateway user to the legacy network, specify this

  • when (Optional[datetime.datetime]) – when the message was sent, for a “delay” tag (XEP-0203)

  • reply_to (Optional[slidge.util.types.MessageReference]) – Quote another message (XEP-0461)

  • hints (Optional[Iterable[slidge.util.types.ProcessingHint]]) –

  • thread (Optional[slidge.util.types.LegacyThreadType]) –

  • carbon – (only used if called on a LegacyContact) Set this to True if this is actually a message sent to the LegacyContact by the User. Use this to synchronize outgoing history for legacy official apps.

  • correction – whether this message is a correction or not

  • correction_event_id (Optional[slidge.util.types.LegacyMessageType]) – in the case where an ID is associated with the legacy ‘correction event’, specify it here to use it on the XMPP side. If not specified, a random ID will be used.

  • link_previews (Optional[list[slidge.util.types.LinkPreview]]) – A little of sender (or server, or gateway)-generated previews of URLs linked in the body.

  • archive_only – (only in groups) Do not send this message to user, but store it in the archive. Meant to be used during MUC.backfill()

correct(legacy_msg_id, new_text, *, when=None, reply_to=None, thread=None, hints=None, carbon=False, archive_only=False, correction_event_id=None, link_previews=None, **send_kwargs)#

Modify a message that was previously sent by this XMPP Entity.

Uses last message correction (XEP-0308)

Parameters:
  • new_text (str) – New content of the message

  • legacy_msg_id (slidge.util.types.LegacyMessageType) – The legacy message ID of the message to correct

  • when (Optional[datetime.datetime]) – when the message was sent, for a “delay” tag (XEP-0203)

  • reply_to (Optional[slidge.util.types.MessageReference]) – Quote another message (XEP-0461)

  • hints (Optional[Iterable[slidge.util.types.ProcessingHint]]) –

  • thread (Optional[slidge.util.types.LegacyThreadType]) –

  • carbon – (only in 1:1) Reflect a message sent to this Contact by the user. Use this to synchronize outgoing history for legacy official apps.

  • archive_only – (only in groups) Do not send this message to user, but store it in the archive. Meant to be used during MUC.backfill()

  • correction_event_id (Optional[slidge.util.types.LegacyMessageType]) – in the case where an ID is associated with the legacy ‘correction event’, specify it here to use it on the XMPP side. If not specified, a random ID will be used.

  • link_previews (Optional[list[slidge.util.types.LinkPreview]]) – A little of sender (or server, or gateway)-generated previews of URLs linked in the body.

react(legacy_msg_id, emojis=(), thread=None, **kwargs)#

Send a reaction (XEP-0444) from this XMPP Entity.

Parameters:
  • legacy_msg_id (slidge.util.types.LegacyMessageType) – The message which the reaction refers to.

  • emojis (Iterable[str]) – An iterable of emojis used as reactions

  • thread (Optional[slidge.util.types.LegacyThreadType]) –

retract(legacy_msg_id, thread=None, **kwargs)#

Send a message retraction (XEP-0424) from this XMPP Entity.

Parameters:
  • legacy_msg_id (slidge.util.types.LegacyMessageType) – Legacy ID of the message to delete

  • thread (Optional[slidge.util.types.LegacyThreadType]) –

async send_file(file_path=None, legacy_msg_id=None, *, data_stream=None, data=None, file_url=None, file_name=None, content_type=None, reply_to=None, when=None, caption=None, legacy_file_id=None, thread=None, **kwargs)#

Send a single file from this XMPP Entity.

Parameters:
  • file_path (Optional[Union[pathlib.Path, str]]) – Path to the attachment

  • data_stream (Optional[IO[bytes]]) – Alternatively, a stream of bytes (such as a File object)

  • data (Optional[bytes]) – Alternatively, a bytes object

  • file_url (Optional[str]) – Alternatively, a URL

  • file_name (Optional[str]) – How the file should be named.

  • content_type (Optional[str]) – MIME type, inferred from filename if not given

  • legacy_msg_id (Optional[slidge.util.types.LegacyMessageType]) – If you want to be able to transport read markers from the gateway user to the legacy network, specify this

  • reply_to (Optional[slidge.util.types.MessageReference]) – Quote another message (XEP-0461)

  • when (Optional[datetime.datetime]) – when the file was sent, for a “delay” tag (XEP-0203)

  • caption (Optional[str]) – an optional text that is linked to the file

  • legacy_file_id (Optional[Union[str, int]]) – A unique identifier for the file on the legacy network. Plugins should try their best to provide it, to avoid duplicates.

  • thread (Optional[slidge.util.types.LegacyThreadType]) –

Return type:

tuple[Optional[str], list[slixmpp.Message]]