#discord #slash-command #webhook #api-bindings

slashook

基于 webhook 的 Discord slash 命令库

5 个版本 (3 个破坏性更新)

0.4.0 2024 年 6 月 14 日
0.3.0 2023 年 4 月 8 日
0.2.1 2022 年 6 月 20 日
0.2.0 2022 年 2 月 18 日
0.1.0 2021 年 10 月 4 日

#7 in #slash-command

MIT/Apache

290KB
4.5K SLoC

Slashook

基于 webhook 的 Discord slash 命令库。

这是一个 WIP 项目。请注意,在 1.0.0 版本之前,小版本更新中可能会发生破坏性更改。

待办事项

  • 完整的 API 覆盖率的 REST 方法
  • 实用方法
  • 更多库端验证
  • 测试和基准测试

网关(以及由此扩展的语音)功能不在此项目范围内。

许可证

根据以下任一许可证授权:

由您选择。

贡献

除非您明确声明,否则任何提交给您的工作以包含在内的有意贡献,根据 Apache-2.0 许可证定义,应双重许可,如上所述,不附加任何额外的条款或条件。


lib.rs:

基于 webhook 的 Discord slash 命令库

此库专注于使用网络服务器通过交互系统接收命令事件,而不是传统的网关 WebSocket。可以使用任何负载均衡解决方案进行扩展,无需基于公会计数进行分片。

用法

首先,前往 Discord 开发者门户,获取您的应用程序的公钥以及可选的 bot 令牌、客户端 ID 和/或客户端密钥。
以下是一个简单的示例以帮助您开始

#[macro_use] extern crate slashook;
use slashook::{ Client, Config };
use slashook::commands::{ CommandInput, CommandResponder };

#[slashook::main]
async fn main() {
  let config = Config {
    public_key: String::from("your_public_key"),
    bot_token: Some(String::from("your.bot.token")),
    client_id: Some(String::from("your_client_id")),
    ..Default::default()
  };

  #[command(name = "ping", description = "pong")]
  fn ping(input: CommandInput, res: CommandResponder) {
    res.send_message("Pong!").await?;
  }

  let mut client = Client::new(config);
  client.register_command(ping);
  client.sync_commands().await;
  client.start().await;
}

您的 bot 现在将监听 http://0.0.0.0:3000/。有关 IP 和端口选项,请参阅 [配置]。
您现在可以通过反向代理将其路由,并在开发者门户中设置您的交互 URL。

查看 CommandInputCommandResponder,了解您在函数中可用的值和函数。

依赖项

~24–57MB
~1M SLoC