3个不稳定版本

0.5.0 2022年4月29日
0.1.1 2022年1月13日
0.1.0 2022年1月13日

#17 in #ready

MIT 协议

215KB
4K SLoC

只是一个Rust Discord包装器。

项目设计理念

  • 高度可扩展和资源高效的框架
  • 易于使用,直观,通常为高级
  • 高度可定制
  • 非常详细地记录
  • 适用于商业用途的框架

核心功能

  • 使用结构体创建斜杠命令的宏
  • 自动注册命令

我们想要实现的一些酷想法

  • 单元测试集成
    • 这将涉及能够模拟事件到机器人,以便用户可以测试功能
  • 中间件

计划使用

main.rs

use command::Command;
use command_group::CommandGroup;
use command_with_subcommands::ParentCommand;

fn main() {
    Bot::new("BOT_TOKEN")
        .add_commands([CommandGroup, ParentCommand, Command])
        .run();
}

command.rs

#[command]
struct Command;

impl CommandTrait for Command {
    NAME = "my_command";
    DESCRIPTION = "Does some stuff.";
    // OTHER STUFF

    fn run(ctx: CommandContext) {
        // DO SOME THINGS
    }
}

command_group.rs

#[command_group]
struct CommandGroup;

impl CommandGroupTrait for CommandGroup {
    NAME = "command_group";
    DESCRIPTION = "A group of commands.";
    // OTHER STUFF
}

#[command(CommandGroup)]
struct CommandInGroup;

impl CommandTrait for CommandInGroup {
    NAME = "command_in_group";
    DESCRIPTION = "A command in a command group.";
    // OTHER STUFF
    
    fn run(ctx CommandContext) {
        // DO STUFF
    }
}

command_with_subcommands.rs

#[command]
struct ParentCommand;

impl CommandTrait for ParentCommand {
    NAME = "parent_command";
    DESCRIPTION = "A command with a subcommand.";
    // OTHER STUFF

    fn run(ctx CommandContext) {
        // DO STUFF
    }
}

#[command(ParentCommand)]
struct Subcommand;

impl CommandTrait for Subcommand {
    NAME = "subcommand";
    DESCRIPTION = "A subcommand of a parent command.";
    // OTHER STUFF

    fn run(ctx CommandContext) {
        // DO STUFF
    }
}

依赖项

~13–25MB
~405K SLoC