Appendix

This page serves as a set of miscellaneous documents referenced elsewhere.

Python requirements

  Core features Plugs Hooks
aioconsole     Shell (async)
aiohttp  
Discord
GitHub
Hangouts
IRC
Slack
Telegram
Web
Web UI
aiohttp_jinja2 (optional)    
Web
Web UI
anyconfig [1] Run as module    
discord.py 1.x   Discord  
emoji  
Discord
Slack
 
jinja2 (optional)    
When-Do
Sync
hangups   Hangouts  
peewee 3.x    
Database
Alerts
Identity
ptpython (optional)     Shell (sync)
telethon (optional)   Telegram  
[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.

Plug compatibility

  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] [12]
Mention     [13]
[2](1, 2, 3, 4, 5) 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]Listing users is typically unavailable on most public servers.
[5](1, 2) 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](1, 2) 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](1, 2, 3) 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.