33 个版本
0.13.0 | 2024年8月15日 |
---|---|
0.12.2 | 2023年2月15日 |
0.12.0 | 2023年1月17日 |
0.11.3 | 2022年11月28日 |
0.2.0 | 2020年2月25日 |
#73 in 网页编程
12,098 每月下载量
在 53 个 Crates 中使用 (46 个直接使用)
2MB
35K SLoC
请参阅仓库根目录下的 README.md
。
lib.rs
:
一个功能齐全的框架,使您能够轻松使用 Telegram 机器人 和 Rust。它处理所有困难的事情,让您只需关注业务逻辑。目前支持 Telegram Bot API 的第 7.0
版本。
要了解高级概述,请参阅 我们的 GitHub 仓库。
use teloxide::prelude::*;
pretty_env_logger::init();
log::info!("Starting throw dice bot...");
let bot = Bot::from_env();
teloxide::repl(bot, |bot: Bot, msg: Message| async move {
bot.send_dice(msg.chat.id).await?;
Ok(())
})
.await;
处理更新和消息
有许多需要处理的 更新类型 和 消息类型!通常,必须过滤特定的类型并在 handler functions
中处理它们。Teloxide 在 UpdateFilterExt
和 MessageFilterExt
特性中为 Update
和 Message
类型提供了一些 filter methods
。除了过滤之外,这些方法还会将适当类型 inject
到您的处理函数中。例如,如果您使用 Update::filter_message
,则 Message
的实例将作为参数提供给您的处理函数。同样,使用 Message::filter_text
将将 String
注入到上下文中。
此外,filter_map
函数可以根据模式流程注入一些依赖。下面有更多示例!
以下是一个快速示例(筛选文本消息并将文本注入处理函数中)
use teloxide::{prelude::*, types::User};
pub type Error = Box<dyn std::error::Error + Send + Sync>;
#[tokio::main]
async fn main() -> Result<(), Error> {
let bot = Bot::from_env();
let schema = Update::filter_message()
/*
Inject the `User` object representing the author of an incoming
message into every successive handler function (1)
*/
.filter_map(|update: Update| update.from().cloned())
.branch(
/*
Use filter_text method of MessageFilterExt to accept
only textual messages. Others will be ignored by this handler (2)
*/
Message::filter_text().endpoint(process_text_message),
);
Dispatcher::builder(bot, schema).build().dispatch().await;
Ok(())
}
/// Replies to the user's text messages
async fn process_text_message(bot: Bot, user: User, message_text: String) -> Result<(), Error> {
/*
The id of a chat with a user is the same as his telegram_id
from the bot's perspective.
Injected dependencies:
- Bot is provided by the Dispatcher::dispatch
- User is provided by the (1)
- String is provided by the (2)
*/
bot.send_message(user.id, format!("Hi! You sent: {message_text}"));
Ok(())
}
依赖项
~9-32MB
~494K SLoC