Appendix ======== This page serves as a set of miscellaneous documents referenced elsewhere. Python requirements ------------------- .. table:: :widths: auto +-----------------------------------+-------------------+---------------+---------------------+ | | Core features | Plugs | Hooks | +===================================+===================+===============+=====================+ | aioconsole_ | | | Shell (async) | +-----------------------------------+-------------------+---------------+---------------------+ | aiohttp_ | | | Discord | | Web | | | | | GitHub | | *Web UI* | | | | | Hangouts | | | | | | Slack | | | | | | Telegram | | +-----------------------------------+-------------------+---------------+---------------------+ | aiohttp_jinja2_ | | | | Web *(optional)* | | | | | | *Web UI* | +-----------------------------------+-------------------+---------------+---------------------+ | anyconfig_ *(optional)* [1]_ | Run as module | | | +-----------------------------------+-------------------+---------------+---------------------+ | discord.py_ **1.x** | | Discord | | +-----------------------------------+-------------------+---------------+---------------------+ | emoji | | | Discord | | | | | | Slack | | +-----------------------------------+-------------------+---------------+---------------------+ | jinja2_ *(optional)* | | | | When-Do | | | | | | Sync | +-----------------------------------+-------------------+---------------+---------------------+ | hangups_ | | Hangouts | | +-----------------------------------+-------------------+---------------+---------------------+ | peewee_ **3.x** | | | Database (legacy) | +-----------------------------------+-------------------+---------------+---------------------+ | ptpython *(optional)* | | | Shell (sync) | +-----------------------------------+-------------------+---------------+---------------------+ | telethon_ *(optional)* | | Telegram | | +-----------------------------------+-------------------+---------------+---------------------+ | tortoise-orm_ | | | | Database | | | | | | *Alerts* | | | | | | *Local identity* | | | | | | *Notes* | | | | | | *Sync (optional)* | +-----------------------------------+-------------------+---------------+---------------------+ | uvloop_ *(optional)* | Optimisation | | | +-----------------------------------+-------------------+---------------+---------------------+ .. [1] This will only provide JSON out of the box. For e.g. YAML, you'll also need a supported parser like PyYAML_ or ruamel.yaml_. .. _aioconsole: https://aioconsole.readthedocs.io/en/latest/ .. _aiohttp: https://aiohttp.readthedocs.io/en/latest/ .. _aiohttp_jinja2: https://aiohttp-jinja2.readthedocs.io/en/latest/ .. _anyconfig: https://python-anyconfig.readthedocs.io/en/latest/ .. _discord.py: https://discordpy.readthedocs.io/en/rewrite/ .. _hangups: https://hangups.readthedocs.io/en/latest/ .. _jinja2: http://jinja.pocoo.org/docs/latest/ .. _peewee: https://peewee.readthedocs.io/en/latest/ .. _PyYAML: https://pyyaml.org/ .. _ruamel.yaml: https://yaml.readthedocs.io/en/latest/ .. _telethon: https://telethon.readthedocs.io/en/latest/ .. _tortoise-orm: https://tortoise-orm.readthedocs.io/en/latest/ .. _uvloop: https://uvloop.readthedocs.io/ Plug compatibility ------------------ ✔ Feature is supported by the plug. --- No such feature in the underlying network. .. table:: :widths: auto +-----------------------------------+----------+----------+----------+----------+-------------+ | | Discord | Hangouts | IRC | Slack | Telegram | +===================================+==========+==========+==========+==========+=============+ | **Features** | +-----------------------------------+----------+----------+----------+----------+-------------+ | External profile URL | ✔ | ✔ | --- | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Fetch user by ID | ✔ | ✔ | --- | ✔ | ✔ [2]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Fetch user by username | ✔ [3]_ | --- | ✔ | ✔ | ✔ [2]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | List known public channels | ✔ | ✔ | ✔ | ✔ | ✔ [2]_ [5]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | List known private channels | ✔ | ✔ | ✔ [4]_ | ✔ | ✔ [2]_ [5]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Retrieve private channel | ✔ | ✔ | ✔ | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Create new private channel | ✔ | ✔ [6]_ | ✔ | ✔ | | +-----------------------------------+----------+----------+----------+----------+-------------+ | Retrieve channel member list | ✔ [7]_ | ✔ | ✔ | ✔ | ✔ [2]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Add member to channel | [8]_ | ✔ | | ✔ | | +-----------------------------------+----------+----------+----------+----------+-------------+ | Remove member from channel | [8]_ | ✔ | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | **Message actions** | +-----------------------------------+----------+----------+----------+----------+-------------+ | Edit | ✔ | --- | --- | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Delete | ✔ | --- | --- | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Pin | ✔ | --- | --- | ✔ | ✔ [9]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Reply | | --- | --- | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Forward | --- | --- | --- | ✔ | ✔ [10]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | React | ✔ | --- | --- | ✔ | --- | +-----------------------------------+----------+----------+----------+----------+-------------+ | **Content types** | +-----------------------------------+----------+----------+----------+----------+-------------+ | Text | ✔ | ✔ | ✔ | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Image | ✔ | ✔ | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Audio | ✔ | | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Video | ✔ | | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Document | ✔ | | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Location | | ✔ | | | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Any | ✔ | | | ✔ | | +-----------------------------------+----------+----------+----------+----------+-------------+ | **Text formatting** | +-----------------------------------+----------+----------+----------+----------+-------------+ | Bold | ✔ | ✔ | ✔ | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Italic | ✔ | ✔ | ✔ | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Underline | ✔ | ✔ | ✔ | | | +-----------------------------------+----------+----------+----------+----------+-------------+ | Strikethrough | ✔ | ✔ | | ✔ | | +-----------------------------------+----------+----------+----------+----------+-------------+ | Inline code | ✔ | | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Preformatted | ✔ | | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Link | ✔ | ✔ [11]_ | | ✔ | ✔ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Action | [12]_ | ✔ | ✔ | ✔ | [12]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ | Mention | ✔ | | | ✔ | ✔ [13]_ | +-----------------------------------+----------+----------+----------+----------+-------------+ .. [2] Not available from any bot API endpoints, though can be done over the MTProto client APIs using bot authorisation in conjunction with a user API ID/hash. .. [3] Only if the user and bot have a mutual server. .. [4] Implemented, though listing users is typically unavailable on most public servers. .. [5] Even over MTProto, bots can't acquire a full list -- the client must maintain a list of "seen" chats and their corresponding access hashes (without which the ID is useless). .. [6] Requires sending a message with the invite. .. [7] In large servers, only online members can be retrieved. .. [8] Channel access is granted via roles; DMs have participants but are limited to at most 10. .. [9] Only one message can be pinned, a new pin replaces the current one. .. [10] Forwarded messages lose their context -- no source ID or chat is included, only the author (which may also be omitted depending on the user's privacy settings). .. [11] Only if the label text matches the URL. .. [12] Actions are emulated as a plain message in italic. .. [13] Implicit using ``@`` syntax if the user has a public username set, or explicit using a hyperlink to a ``tg://user`` URI.