🤖
adam
  • Getting started
  • First Steps
    • Creating Your First Command
    • Grouping Commands in Modules
    • Middlewares
    • Argument Parsing
  • Errors
    • Error Handling 101
    • Error Types
    • Changing How Errors Are Handled
  • Localization
    • Getting Started
    • How to Localize
  • Restrictions
    • What Are Restrictions?
    • Creating Custom Restrictions
Powered by GitBook
On this page
  • What are Modules?
  • Creating a Module
  • Adding Plugins

Was this helpful?

Export as PDF
  1. First Steps

Grouping Commands in Modules

PreviousCreating Your First CommandNextMiddlewares

Last updated 3 years ago

Was this helpful?

What are Modules?

Apart from commands, adam also provides modules as a way of grouping commands. You might know command groups from other bot frameworks, however, modules are a bit more strict. Each module has its own name and every command in it can only be invoked if prefixed by its module's name.

Creating a Module

Just as commands, a module is also abstracted through the plugin.Module interface. Luckily, using a module is even easier than a command, and one can be created by calling module.New.

plugins/mod/mod.go
package mod

import (
    "github.com/mavolin/adam/pkg/impl/module"
    "github.com/mavolin/adam/pkg/plugin"
)

// New creates a new moderation module.
func New() plugin.Module {
    return module.New(module.Meta{Name: "mod"}})
}

Just like with command.Meta, module.Meta also offers some more fields. Refer to its for more information.

Adding Plugins

Similarly tobot.Bot, module.Module also provides a AddCommand and AddModule method to add plugins.

plugins/mod/mod.go
package mod

import (
    "github.com/mavolin/myBot/plugin/mod/ban"
    "github.com/mavolin/myBot/plugin/mod/kick"

    "github.com/mavolin/adam/pkg/impl/module"
    "github.com/mavolin/adam/pkg/plugin"
)

// New creates a new moderation module.
func New() plugin.Module {
    m := module.New(module.Meta{Name: "mod"}})
    
    m.AddCommand(ban.New())
    m.AddCommand(kick.New())
    
    return m
}
documentation