#telegram-bot #bot #bot-api #telegram-api #telegram #bot-framework #hyper-client

telexide

异步 Rust 库,用于 Telegram 机器人 API

17 个版本

0.1.17 2023年10月3日
0.1.14 2023年4月21日
0.1.13 2023年3月21日
0.1.9 2022年11月22日
0.1.3 2020年6月6日

#6 in #hyper-client

Download history

每月106次下载

自定义许可

485KB
7.5K SLoC

telexide

Crate Docs Build Status Rust Version

Telexide 是一个易于使用的库,用于创建 Telegram 机器人,基于 tokio 和 hyper 构建。

查看如何创建和构建机器人的示例:示例

使用 ClientBuilder 创建一个符合您偏好的 Client 对象,并通过 create_framework 宏和/或注册您自己的更新处理器,然后运行 Client::start 来启动您的机器人。所有这些都旨在高度可定制。有关客户端的更多信息,请参阅 客户端的模块级文档

使用 APIClient 和 API 数据模型或通过实现 API 特性来创建并使用您自己的 API 客户端,轻松进行 API 调用。有关 API 客户端的更多信息,请参阅 API 的模块级文档

使用 Framework 对象提供了默认的命令框架,便于处理用户发送的 Telegram 机器人命令。有关框架的更多信息,请参阅 框架的模块级文档

示例机器人

一个基本的 ping-pong 机器人可以编写如下:

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客户端
    • 使用您自己的超客户端
    • 使用您自己的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.64。当前Telexide版本不一定能在低于最低支持版本的Rust版本上构建。

依赖关系

~9–22MB
~331K SLoC