adam

module
v0.0.0-...-4e18fe8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 9, 2021 License: MIT

README

adam

Go Reference GitHub Workflow Status (branch) codecov Go Report Card License


About

Adam is a bot framework for Discord, built on top of arikawa. I originally started working on this because I needed a simple command router with support for localization, but along the way of building it, it turned into a fully-featured bot framework. You can do everything from a simple ping bot to a localized bot with custom commands.

Main Features

  • 🖥️ Typed (variadic) arguments and flags, as well as out-of-the-box parsing for shellword, and delimiter-based notations
  • 🌍 Support for localization
  • 🗒️ Utilities for permission handling, emojis, and awaiting responses, component interactions and reactions
  • ⚡ Error handling with automatic stack trace generation
  • 👪 Command grouping through modules
  • ⏳ Command throttling/cooldowns
  • ✏️ Support for message edits
  • 🤝 Middlewares
  • 🛑 Powerful access control system
  • 🔌 Custom command sources for commands available at runtime
  • ✨ Abstracted - Don't like something? Swap it out for a custom implementation

Getting Started

Have a look at the example bots or use the official guide and get your first bot up and running!

Contributing

Contributions through both pull requests and issues are much appreciated. Check out the contributing guidelines for more information.

You can also help to localize adam on our POEditor page.

License

Built with ❤️ by Maximilian von Lindern. Available under the MIT License.

Directories

Path Synopsis
examples
localized_bot/plugins/mod
Package mod provides the moderation module.
Package mod provides the moderation module.
localized_bot/plugins/mod/ban
Package ban provides the ban command.
Package ban provides the ban command.
localized_bot/plugins/mod/kick
Package kick provides the kick command.
Package kick provides the kick command.
localized_bot/plugins/ping
Package ping provides the ping command.
Package ping provides the ping command.
localized_bot/plugins/say
Package say provides the say command.
Package say provides the say command.
plain_bot/plugins/mod
Package mod provides the moderation module.
Package mod provides the moderation module.
plain_bot/plugins/mod/ban
Package ban provides the ban command.
Package ban provides the ban command.
plain_bot/plugins/mod/kick
Package kick provides the kick command.
Package kick provides the kick command.
plain_bot/plugins/ping
Package ping provides the ping command.
Package ping provides the ping command.
plain_bot/plugins/say
Package say provides the say command.
Package say provides the say command.
internal
capbuilder
Package capbuilder provides the CappedBuilder.
Package capbuilder provides the CappedBuilder.
errorutil
Package errorutil provides utilities to handle errors.
Package errorutil provides utilities to handle errors.
mock
Package mock splits up the functions and types found in the exported package mock, into individual internal packages, so that other packages can still use some mocks without import cycles.
Package mock splits up the functions and types found in the exported package mock, into individual internal packages, so that other packages can still use some mocks without import cycles.
resolved
Package resolved provides implementations for plugin.ResolvedCommand and plugin.ResolvedModule as well a plugin.Provider implementation that generates the plugins.
Package resolved provides implementations for plugin.ResolvedCommand and plugin.ResolvedModule as well a plugin.Provider implementation that generates the plugins.
shared
Package shared provides variables and constants used across multiple packages.
Package shared provides variables and constants used across multiple packages.
pkg
bot
Package bot provides the Bot handling all commands.
Package bot provides the Bot handling all commands.
errors
Package errors is a drop-in replacement of the stdlib's errors package.
Package errors is a drop-in replacement of the stdlib's errors package.
i18n
Package i18n provides abstractions for field-based localization libraries.
Package i18n provides abstractions for field-based localization libraries.
impl/arg
Package arg provides implementations for the argument abstractions found in Package plugins.
Package arg provides implementations for the argument abstractions found in Package plugins.
impl/command
Package command provides implementations for the command abstractions found in package plugin.
Package command provides implementations for the command abstractions found in package plugin.
impl/command/help
Package help provides the default help command.
Package help provides the default help command.
impl/module
Package module provides implementations for the module abstractions found in package plugin.
Package module provides implementations for the module abstractions found in package plugin.
impl/replier
Package replier provides implementations for the plugin.Replier interface.
Package replier provides implementations for the plugin.Replier interface.
impl/restriction
Package restriction provides implementations for the plugin.RestrictionFunc.
Package restriction provides implementations for the plugin.RestrictionFunc.
impl/throttler
Package throttler provides implementations for the plugin.Throttler interface.
Package throttler provides implementations for the plugin.Throttler interface.
plugin
Package plugin provides abstractions for commands and modules and all types associated with them.
Package plugin provides abstractions for commands and modules and all types associated with them.
utils/channelutil
Package channelutil provides utilities for interacting with channels.
Package channelutil provides utilities for interacting with channels.
utils/discorderr
Package discorderr provides utilities for interacting with Discord API errors.
Package discorderr provides utilities for interacting with Discord API errors.
utils/duration
Package duration provides utilities for interacting with durations.
Package duration provides utilities for interacting with durations.
utils/emoji
Package emoji provides utilities for interacting with unicode emojis.
Package emoji provides utilities for interacting with unicode emojis.
utils/mock
Package mock provides mocks for key types to aid in unit testing.
Package mock provides mocks for key types to aid in unit testing.
utils/msgbuilder
Package msgbuilder provides builders to create messages, embeds and components.
Package msgbuilder provides builders to create messages, embeds and components.
utils/permutil
Package permutil provides utilities to interact with and check for permissions.
Package permutil provides utilities to interact with and check for permissions.
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL