Skip to content

andrewgodwin/asgigram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

asgigram

An ASGI server for Telegram bots. Connects to the Telegram API using the long-polling getUpdates endpoint, and dispatches incoming updates into an ASGI application following the ASGI protocol specification below.

It is currently very much in beta, and should not be used for production code.

Installation

pip install asgigram

Usage

asgigram "01234567:your_token_here" your_project.asgi:application

ASGI Protocol Specification

The Telegram API is exposed with each chat (including private messages from users) as a separate connection scope, and with different event types for the various kinds of update.

Connection Scope

Connection are "scoped" by the chat identifier, which means in practice you will have a different scope per chat or user. Because the Telegram API is stateless, scopes do not last the lifetime of the user or chat's interaction with the bot.

Instead, the scope and application instance will be made when the user first interacts with the bot after process start, and will be lost either when the user has been inactive for some time and it is garbage-collected or when the current process ends.

If you want to manage long-lasting, per-user state, it's recommended you use a database or some kind of session store.

The scope contains:

  • type: telegram
  • chat: Telegram Chat object, containing at minimum an id key with an integer chat ID.
  • user: Telegram User object, containing at minimum an id key with an integer user ID.

Exactly one of chat or user will be present. Event types below include which type of scope they will occur in.

Message (Incoming)

An incoming message in a chat (channel, group, supergroup, private message).

Keys:

Message (Outgoing)

An outgoing message to a chat.

Keys:

  • type: telegram.send_message
  • text: Unicode string of the text to send.
  • chat_id: Optional integer chat ID to send to or unicode string chat name (in format @chatname). If not provided, will default to the current chat scope. If you are in a user scope, you must provide this.
  • parse_mode: Optional Unicode string with value Markdown or HTML if the value of text is to be treated as a markup language.
  • reply_to_message_id: Optional integer Telegram message ID that this is a reply to.

About

ASGI/Telegram protocol server

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages