3 个版本
0.1.2 | 2023 年 8 月 18 日 |
---|---|
0.1.1 | 2022 年 10 月 2 日 |
0.1.0 | 2020 年 4 月 28 日 |
#1151 在 过程宏
用于 telexide
18KB
417 行
telexide
Telexide 是一个易于使用的库,用于创建 Telegram 机器人,基于 tokio 和 hyper 构建。
查看如何创建和结构化机器人的示例:示例。
使用 ClientBuilder
创建一个符合您偏好的 Client
对象,并使用 create_framework
宏注册命令,或者注册您自己的更新处理器,然后在运行 Client::start
以启动您的机器人之前完成所有这些操作。所有这些都旨在高度可定制。有关客户端的更多信息,请参阅 客户端的模块级文档。
使用 APIClient
和 api 数据模型轻松进行 API 调用,或者通过实现 API
特性创建并使用您自己的 api 客户端。有关 api 客户端的更多信息,请参阅 api 的模块级文档。
使用 Framework
对象提供默认命令框架,方便处理用户发送的 Telegram 机器人命令。有关框架的更多信息,请参阅 框架的模块级文档。
示例机器人
一个基本的乒乓球机器人可以这样编写
use std::env;
use telexide::{api::types::SendMessage, prelude::*};
#[command(description = "just a ping-pong command")]
async fn ping(context: Context, message: Message) -> CommandResult {
context
.api
.send_message(SendMessage::new(message.chat.get_id().into(), "pong"))
.await?;
Ok(())
}
#[tokio::main]
async fn main() -> telexide::Result<()> {
let token = env::var("BOT_TOKEN").expect("no token environment variable set");
let bot_name = "ping-pong";
ClientBuilder::new()
.set_token(&token)
.set_framework(create_framework!(bot_name, ping))
.build()
.start()
.await
}
更多示例,请参阅示例目录。
特点
- 支持所有Telegram机器人API,包括6.9版本
- 易于使用和可定制的客户端
- 基于长轮询的更新处理
- 设置自己的超时时间
- 设置一次获取更新的限制
- 易于使用,基于宏的命令框架
- 易于使用且高度可定制的API客户端
- 使用自己的Hyper客户端
- 使用自己的API结构,以便您控制GET和POST方法
- 包含所有Telegram API端点
- 基于Webhook的更新处理
- 创建所有API调用有效负载的构建器方法
计划中
- 使用功能标志从库中选择您想要的功能
- 使用命令(或类似)框架订阅非消息事件
- 收到内联查询或对其的回答时运行命令
- 收到符合您要求的投票时运行命令
- 使用wait_for风格的Context方法等待符合您标准的通知
- 在模型上提供方法,以便更轻松地调用API端点(例如
ChatMember::kick
)
安装
将以下内容添加到您的Cargo.toml
文件中
[dependencies]
telexide = "0.1.17"
功能标志
Telexide使用一组功能标志,允许在rustls和native-tls之间切换以支持TLS。将来可能会添加标志来启用或禁用crate的可选部分。
rustls
:使API客户端使用hyper-rustls
创建TLS连接器。默认启用。native-tls
:使API客户端使用hyper-tls
创建TLS连接器。如果启用,将覆盖rustls
功能。
支持的Rust版本
最低支持版本为1.70。当前Telexide版本不能保证在低于最低支持版本的Rust版本上构建。
lib.rs
:
在telexide中订阅事件的宏
依赖项
~300–760KB
~18K SLoC