teloxide
Описание
🤖 An elegant Telegram bots framework for Rust
Языки
- Rust99,9%
- Остальные0,1%
teloxide
A full-featured framework that empowers you to easily build Telegram bots using Rust. It handles all the difficult stuff so you can focus only on your business logic.
Highlights
- Declarative design.
is based uponteloxide, a functional chain of responsibility pattern that allows you to express pipelines of message processing in a highly declarative and extensible style.dptree
-
Feature-rich. You can use both long polling and webhooks, configure an underlying HTTPS client, set a custom URL of a Telegram API server, do graceful shutdown, and much more.
-
Simple dialogues. Our dialogues subsystem is simple and easy-to-use, and, furthermore, is agnostic of how/where dialogues are stored. For example, you can simply replace one line to achieve persistence. Out-of-the-box storages include Redis and Sqlite.
- Strongly typed commands. Define bot commands as an
andenumwill parse them automatically — just like JSON structures inteloxideand command-line arguments inserde-json.structopt
Setting up your environment
- Download Rust.
- Create a new bot using @Botfather to get a token in the format
.123456789:blablabla - Initialise the
environmental variable to your token:TELOXIDE_TOKEN
- Make sure that your Rust compiler is up to date (
currently requires rustc at least version 1.82):teloxide
- Run
, enter the directory and put these lines into yourcargo new my_bot:Cargo.toml
Note: if there is functionality in master that is not released yet, you can pull the Git repository as follows:
API overview
The dices bot
This bot replies with a dice to each received message:
Commands
Commands are strongly typed and defined declaratively, similar to how we define CLI using structopt and JSON structures in serde-json. The following bot accepts these commands:
- /username <your username>
- /usernameandage <your username> <your age>
- /help
Dialogues management
A dialogue is typically described by an enumeration where each variant is one possible state of the dialogue. There are also state handler functions, which may turn a dialogue from one state to another, thereby forming an FSM.
Below is a bot that asks you three questions and then sends the answers back to you:
Testing
The community has made a crate called for testing bots.
Tutorials
starter guide with teloxidedptree- "Migrating my family finance bot from Python to Rust (teloxide) because I am tired of exceptions (part 1)" by Troy Köhler.
- "Migrating my family finance bot from Python to Rust (teloxide) [part 2]" by Troy Köhler.
FAQ
Q: Where I can ask questions?
A:
- Issues is a good place for well-formed questions about the library design, enhancements, and bug reports.
- GitHub Discussions is a place where you can ask us for help in a less formal manner.
- If you need quick help in real-time, you should ask a question in our official Telegram group.
Q: Do you support the Telegram API for clients?
A: No, only the bots API.
Q: Can I use webhooks?
A: You can! has a built-in support for webhooks in module. See how it's used in and .
Q: Can I handle both callback queries and messages within a single dialogue?
A: Yes, see .
Q: How can I organize complex logic?
A: You can use as an example of a bot with a nested dialogue structure distributed across different files.
Q: Where can I find a WebApp example?
A: Check out @TheAwiteb's WebApp example.
Community bots
Feel free to propose your own bot to our collection!
— A bot that sends the top posts of your favorite subreddits to Telegram.raine/tgreddit— Telegram bot for managing reminders.magnickolas/remindee-bot— A bot that notifies about crate updates.WaffleLapkin/crate_upd_bot— Telegram bot that keeps track of user activity in groups.mattrighetti/GroupActivityBot— Telegram bot for searching in Arch User Repository (AUR).alenpaul2001/AurSearchBot— Telegram bot for food menu navigate.ArtHome12/vzmuinebot— Chatting bot with several entertainment features.studiedlist/EddieBot— Anonymous feedback for your Telegram project.modos189/tg_blackbox_bot— Yet another telegram bot to downloading Twitter spaces.0xNima/spacecraft— Simple Telegram Bot for downloading videos from Twitter via their links.0xNima/Twideo— Telegram bot to interface with libgen.mattrighetti/libgen-bot-rs— Telegram bot for searching via C++ proposals.zamazan4ik/npaperbot-telegram— A bot to query definitions of words from the Spanish Language Dictionary.studentenherz/dlebot— Feature rich Telegram game-like bot with pigs 🐽.fr0staman/fr0staman_bot— Telegram bot that notifies of crypto token transfers.franciscofigueira/transferBot
See 2500+ other public repositories using >>
Contributing
See .