slidge.plugins.telegram.gateway#

Module Contents#

Classes#

SessionCommandMixin

ListSessions

Abstract base class to implement gateway commands (chatbot and ad-hoc)

TerminateSession

Abstract base class to implement gateway commands (chatbot and ad-hoc)

Gateway

Must be subclassed by a plugin to set up various aspects of the XMPP

Functions#

Attributes#

slidge.plugins.telegram.gateway.REGISTRATION_INSTRUCTIONS = Multiline-String[source]#
Show Value
"""You need to create a telegram account in an official telegram client.

Then you can enter your phone number here, and you will receive a confirmation code in the official telegram client. You can uninstall the telegram client after this if you want."""
class slidge.plugins.telegram.gateway.SessionCommandMixin[source]#
INSTRUCTIONS: str[source]#
async run(session, ifrom, *args)[source]#
Parameters:

ifrom (slixmpp.JID) –

abstract async step2(form_values, _session, _ifrom, tg_sessions)[source]#
Parameters:

tg_sessions (list[aiotdlib.api.Session]) –

class slidge.plugins.telegram.gateway.ListSessions(xmpp)[source]#

Bases: SessionCommandMixin, slidge.core.command.Command

Abstract base class to implement gateway commands (chatbot and ad-hoc)

Parameters:

xmpp (slidge.core.gateway.BaseGateway) –

NAME = 'List telegram sessions'[source]#
ACCESS[source]#
INSTRUCTIONS = 'Pick a session for more details'[source]#
async step2(form_values, _session, _ifrom, tg_sessions)[source]#
Parameters:

tg_sessions (list[aiotdlib.api.Session]) –

class slidge.plugins.telegram.gateway.TerminateSession(xmpp)[source]#

Bases: SessionCommandMixin, slidge.core.command.Command

Abstract base class to implement gateway commands (chatbot and ad-hoc)

Parameters:

xmpp (slidge.core.gateway.BaseGateway) –

NAME = 'Terminate a telegram session'[source]#
ACCESS[source]#
INSTRUCTIONS = 'Pick a session to terminate it'[source]#
async step2(form_values, session, _ifrom, tg_sessions)[source]#
Parameters:

tg_sessions (list[aiotdlib.api.Session]) –

async static finish(session, _ifrom, session_i)[source]#
Parameters:
class slidge.plugins.telegram.gateway.Gateway[source]#

Bases: slidge.BaseGateway

Must be subclassed by a plugin to set up various aspects of the XMPP component behaviour, such as its display name or its registration process.

On slidge launch, a singleton is instantiated, and it will be made available to public classes such LegacyContact or BaseSession as the .xmpp attribute. Since it inherits from slixmpp.componentxmpp.ComponentXMPP, this gives you a hand on low-level XMPP interactions via slixmpp plugins, e.g.:

self.send_presence(
    pfrom="somebody@component.example.com",
    pto="someonwelse@anotherexample.com",
)

However, you should not need to do so often since the classes of the plugin API provides higher level abstractions around most commonly needed use-cases, such as sending messages, or displaying a custom status.

REGISTRATION_INSTRUCTIONS[source]#
REGISTRATION_FIELDS[source]#
REGISTRATION_TYPE[source]#
ROSTER_GROUP = 'Telegram'[source]#
COMPONENT_NAME = 'Telegram (slidge)'[source]#
COMPONENT_TYPE = 'telegram'[source]#
COMPONENT_AVATAR = 'https://web.telegram.org/img/logo_share.png'[source]#
SEARCH_FIELDS[source]#
GROUPS = True[source]#
async validate(user_jid, registration_form)[source]#

Validate a registration form from a user.

Since XEP-0077 is pretty limited in terms of validation, it is OK to validate anything that looks good here and continue the legacy auth process via direct messages to the user (using BaseGateway.input() for instance).

Parameters:
async validate_two_factor_code(user, code)[source]#

Called when the user enters their 2FA code.

Should raise the appropriate XMPPError if the login fails

Parameters:
  • user (slidge.GatewayUser) – The gateway user whose registration is pending Use their .bare_jid and/or``.registration_form`` attributes to get what you need

  • code (str) – The code they entered, either via “chatbot” message or adhoc command

async unregister(user)[source]#

Optionally override this if you need to clean additional stuff after a user has been removed from the permanent user_store.

You may need to manually logout the legacy session in here, Session.logout() will not be called automatically.

Parameters:

user (slidge.GatewayUser) –

slidge.plugins.telegram.gateway.fmt_timestamp(t)[source]#
Parameters:

t (int) –

slidge.plugins.telegram.gateway.log[source]#