#telegram-bot #telegram-api #bot #telegram #bot-api #hyper-client #api-calls

telexide-fork

(working) Telexide 的分支:一个异步 Rust 库,用于 Telegram 机器人 API

5 个版本

0.2.3 2023 年 8 月 28 日
0.2.2 2023 年 2 月 23 日
0.2.1 2021 年 12 月 3 日
0.2.0 2021 年 12 月 3 日
0.1.11 2021 年 12 月 3 日

#1431 in 网页编程


用于 telegram-raf

自定义许可

375KB
6K SLoC

Crate Docs Build Status Rust Version

telexide

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

查看如何创建和构建机器人的示例:[示例](https://github.com/callieve/telexide/blob/master/examples)

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

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

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

示例机器人

一个基本的 ping-pong 机器人可以写成:

use std::env;
use telexide_fork::{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(), "pong"))
        .await?;
    Ok(())
}

#[tokio::main]
async fn main() -> telexide_fork::Result<()> {
    let token = env::var("BOT_TOKEN").expect("no token environment variable set");

    ClientBuilder::with_framework(
        create_framework!("ping-pong", ping),
        token
    ).start().await
}

更多示例,请参阅示例目录。

功能

  • 易于使用和可定制的客户端
  • 基于长轮询的更新处理
    • 设置自己的超时时间
    • 设置一次获取的更新限制
  • 基于宏的命令框架,易于使用
  • 易于使用且高度可定制的 API 客户端
    • 使用自己的 hyper 客户端
    • 使用您自己的API结构,以便您控制GET和POST方法
    • 包含所有Telegram API端点
  • 基于webhook的更新处理

计划中

  • 使用功能标志从库中选择您想要的
  • 使用命令(或类似)框架订阅非消息事件
    • 在接收到内联查询或对其的回答时运行命令
    • 在接收到符合您要求的投票时运行命令
  • 使用类似wait_for风格的Context方法等待符合您标准的更新
  • 更多用于创建API数据的构建器方法
  • 模型上的方法,便于调用API端点(如ChatMember::kick

安装

将以下内容添加到您的Cargo.toml文件中

[dependencies]
telexide = "0.1.6"

支持的Rust版本

最低支持版本是1.46。当前Telexide版本不保证在低于最低支持版本的Rust版本上构建。

依赖项

~10–22MB
~309K SLoC