4 个稳定版本

1.0.5 2024 年 5 月 4 日
1.0.4 2024 年 4 月 16 日
1.0.2 2024 年 4 月 14 日
1.0.1 2024 年 4 月 6 日

#1 in #bots

MIT 许可证

1.5MB
6K SLoC

VTG - 双平台机器人库

VTG 是一个功能齐全的库,用于创建 VK 和 Telegram 的机器人。提供了统一的上下文和方法,便于舒适地处理双平台机器人。

功能

  • 支持回调和长轮询更新
  • 90% VK 和 TG API 覆盖率(消息)
  • 两个平台的统一上下文
  • 两个平台的统一上下文方法
  • 两个平台的统一附件和文件上传
  • 两个平台的统一键盘
  • 易于使用
  • 易于理解
  • 易于贡献

用法

使用长轮询客户端的示例

use std::env;

use vtg::{
    client::start_longpoll_client,
    structs::{config::Config, context::UnifyedContext, middleware::MiddlewareChain},
};

async fn catch_new_message(ctx: UnifyedContext) -> UnifyedContext {
    ctx
}

#[tokio::main]
async fn main() {
    let config = Config {
        vk_access_token: env::var("VK_ACCESS_TOKEN").unwrap(),
        vk_group_id: env::var("VK_GROUP_ID").unwrap().parse().unwrap(),
        tg_access_token: env::var("TG_ACCESS_TOKEN").unwrap(), // token starts with "bot", like: bot1234567890:ABCDEFGHIJKL
        ..Default::default()
    };

    let mut middleware_chain = MiddlewareChain::new();
    middleware_chain.add_middleware(|ctx| Box::pin(catch_new_message(ctx)));

    start_longpoll_client(middleware_chain, config).await;
}

使用回调服务器的示例

use std::env;

use vtg::{
    server::start_callback_server,
    structs::{
        config::{CallbackSettings, Config},
        context::UnifyedContext,
        middleware::MiddlewareChain,
    },
};

async fn catch_new_message(ctx: UnifyedContext) -> UnifyedContext {
    ctx
}

#[tokio::main]
async fn main() {
    let config = Config {
        vk_access_token: env::var("VK_ACCESS_TOKEN").unwrap(),
        vk_group_id: env::var("VK_GROUP_ID").unwrap().parse().unwrap(),
        tg_access_token: env::var("TG_ACCESS_TOKEN").unwrap(), // token starts with "bot", like: bot1234567890:ABCDEFGHIJKL
        vk_api_version: "5.199".to_owned(),
        callback: Some(CallbackSettings {
            port: 1234,
            callback_url: "https://valnesfjord.com".to_string(),
            secret: "secret".to_string(),
            path: "yourcallbacksecretpathwithoutslashinstartandend".to_string(),
        }),
    };

    let mut middleware_chain = MiddlewareChain::new();
    middleware_chain.add_middleware(|ctx| Box::pin(catch_new_message(ctx)));

    start_callback_server(middleware_chain, config).await;
}

示例

您可以在 示例文件夹 中找到示例机器人

尝试使用 vtg 运作的机器人

您可以使用测试机器人,它在 vtg 的实际版本中运行:tgvk

文档

您可以在 此处 找到文档

尚未完成

  • 添加更多测试
  • 添加更多示例
  • 添加 VK 和 TG API 文档
  • 添加更多功能(如更多 API 覆盖率等)

联系维护者

Telegram: @valnesfjord Discord: valnesfjord VK: https://vk.com/cyournamec

讨论

贡献

欢迎贡献!如果您有任何想法、建议或问题,请随时贡献。您可以复制仓库并创建带有更改的拉取请求,或者在发现任何错误或有改进建议时创建问题。

我们感谢您为使此项目变得更好而提供的帮助!

依赖项

~7–18MB
~242K SLoC