Commands

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Feb 2, 2020 License: AGPL-3.0 Imports: 17 Imported by: 0

Documentation

Overview

The Commands package both contains the CommandManager framework and the bot commands. Everything is pretty modular and can be adapted to your own use cases.

Index

Constants

This section is empty.

Variables

View Source
var AboutCommand = &Command{
	Name:            "about",
	Description:     "Get some information about the bot",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend | Shared.PermissionMessagesEmbedLinks,
	Type:            CommandTypeEverywhere,
	Run:             AboutCommandFunc,
}
View Source
var HelpCommand = &Command{
	Name:            "help",
	Aliases:         []string{"h", "halp"},
	Description:     "Get some help with the bot.",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend | Shared.PermissionMessagesEmbedLinks,
	Type:            CommandTypeEverywhere,
	Run:             HelpCommandFunc,
}
View Source
var InviteCommand = &Command{
	Name:            "invite",
	Description:     "Invite Me!",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend | Shared.PermissionMessagesEmbedLinks,
	Type:            CommandTypeEverywhere,
	Run:             InviteCommandFunc,
}
View Source
var OwnerCommand = &Command{
	Name:            "owner",
	Aliases:         []string{"o"},
	Description:     "The general owner command",
	OwnerOnly:       true,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend | Shared.PermissionMessagesEmbedLinks,
	Type:            CommandTypeEverywhere,
	Run:             OwnerCommandFunc,
}
View Source
var PingCommand = &Command{
	Name:            "ping",
	Description:     "Check if the bot is alive",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend,
	Type:            CommandTypeEverywhere,
	Run:             PingCommandFunc,
}
View Source
var SuggestCommand = &Command{
	Name:            "suggest",
	Description:     "Suggest a thing for the bot!",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend,
	Type:            CommandTypeEverywhere,
	Run:             SuggestCommandFunc,
}
View Source
var TagCommand = &Command{
	Name:            "tag",
	Aliases:         []string{"t"},
	Description:     "Get a tag",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend,
	Type:            CommandTypeEverywhere,
	Run:             TagCommandFunc,
}
View Source
var TagsCommand = &Command{
	Name:            "tags",
	Aliases:         []string{"ts"},
	Description:     "Get a list of tags",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend | Shared.PermissionMessagesEmbedLinks,
	Type:            CommandTypeEverywhere,
	Run:             TagsCommandFunc,
}
View Source
var UserInfoCommand = &Command{
	Name:            "userinfo",
	Aliases:         []string{"ui"},
	Description:     "Returns information about a given user",
	OwnerOnly:       false,
	Hidden:          false,
	UserPermissions: 0,
	BotPermissions:  Shared.PermissionMessagesSend | Shared.PermissionMessagesEmbedLinks,
	Type:            CommandTypeEverywhere,
	Run:             UserInfoCommandFunc,
}

Functions

func AboutCommandFunc added in v0.16.0

func AboutCommandFunc(ctx CommandContext, args []string) error

AboutCommandFunc is a CommandRunFunc. It supplies the user who runs it information about the bot. It returns an error if any occurred.

Usage: {prefix}about

func HelpCommandFunc added in v0.16.0

func HelpCommandFunc(ctx CommandContext, args []string) error

HelpCommandFunc is a CommandRunFunc. It supplies the user a list of commands in the CommandManager it is assigned to. It returns an error if any occurred.

Usage: {prefix}help [command]

func InviteCommandFunc added in v0.16.0

func InviteCommandFunc(ctx CommandContext, args []string) error

InviteCommandFunc is a CommandRunFunc. It supplies the user an invite to the bot. It returns an error if any occurred.

Usage: {prefix}invite

func LoadTags

func LoadTags(f string, log *logrus.Logger)

LoadTags loads the tags from a given file. It returns nothing.

func OwnerCommandFunc added in v0.16.0

func OwnerCommandFunc(ctx CommandContext, args []string) error

OwnerCommandFunc is a CommandRunFunc. It currently has no use. It returns an error if any occurred.

Usage: {prefix}owner {reloadtags|updateSuggestion}

func PingCommandFunc added in v0.16.0

func PingCommandFunc(ctx CommandContext, args []string) error

PingCommandFunc is a CommandRunFunc. It supplies the user a message if the bot is alive. It returns an error if any occurred.

Usage: {prefix}ping

func SuggestCommandFunc added in v0.16.0

func SuggestCommandFunc(ctx CommandContext, args []string) error

SuggestCommandFunc is a CommandRunFunc. It submits a suggestion to the channel specific in the config. It returns an error if any occurred.

Usage: {prefix}suggest <suggestion>

func TagCommandFunc added in v0.16.0

func TagCommandFunc(ctx CommandContext, args []string) error

TagCommandFunc is a CommandRunFunc. It supplies the user with the tag description if the tag supplied exists. It returns an error if any occurred.

Usage: {prefix}tag <tag>

func TagsCommandFunc added in v0.16.0

func TagsCommandFunc(ctx CommandContext, _ []string) error

TagsCommandFunc is a CommandRunFunc. It supplies the user with a list of the initialized tags. It returns an error if any occurred.

Usage: {prefix}tags

func UserInfoCommandFunc added in v0.16.0

func UserInfoCommandFunc(ctx CommandContext, args []string) error

UserInfoCommand is a CommandRunFunc. It supplies the user information about another user. It returns an error if any occurred.

Usage: {prefix}userinfo [user]

Types

type Command

type Command struct {
	// The name of the command (What it will be triggered by).
	Name string

	// Command aliases
	Aliases []string

	// The command's description.
	Description string

	// If the command is only able to be ran by an owner.
	OwnerOnly bool

	// If the command is hidden from help.
	Hidden bool

	// The permissions the user is required to have to execute the command.
	UserPermissions Shared.Permission

	// The permissions the bot is required to have to execute the command.
	BotPermissions Shared.Permission

	// The CommandType designates where the command can be ran.
	Type CommandType

	// The function that will be executed whenever a message fits the criteria to execute the command.
	Run CommandFunc
}

A Command represents any given command contained in a bot.

func RemoveCommandFromSlice added in v0.11.0

func RemoveCommandFromSlice(s []*Command, i int) []*Command

type CommandContext

type CommandContext struct {
	// The connection to Discord.
	Session *discordgo.Session

	// The event that fired the CommandHandler.
	Event *discordgo.MessageCreate

	// The CommandManager that handled this command.
	Manager *CommandManager

	// The bot's StatusManager.
	StatusManager *Status.StatusManager

	// The Message that fired this event.
	Message *discordgo.Message

	// The User that fired this event.
	User *discordgo.User

	// The Channel the event was fired in.
	Channel *discordgo.Channel

	// The guild the Channel belongs to.
	Guild *discordgo.Guild

	// The User's guild member.
	Member *discordgo.Member
}

A CommandContext is passed to a CommandRunFunc. It contains the information needed for a command to execute.

func (*CommandContext) Reply

func (ctx *CommandContext) Reply(message string) (*discordgo.Message, error)

Reply sends a message to the channel a CommandContext was initiated for.

func (*CommandContext) ReplyEmbed

func (ctx *CommandContext) ReplyEmbed(embed *discordgo.MessageEmbed) (*discordgo.Message, error)

ReplyEmbed sends an embed to the channel a CommandContext was initiated for.

func (*CommandContext) ReplyFile

func (ctx *CommandContext) ReplyFile(filename string, file io.Reader) (*discordgo.Message, error)

ReplyFile sends a file to the channel a CommandContext was initiated for.

type CommandFunc

type CommandFunc func(CommandContext, []string) error

A CommandFunc is ran whenever a CommandManager gets a message supposed to run the given command.

type CommandManager

type CommandManager struct {
	// The bot configuration
	Config Configuration.Configuration

	// The bot database
	DB *gorm.DB

	// The array of prefixes a CommandManager will respond to.
	Prefixes []string

	// The array of IDs that will be considered a bot owner.
	Owners []string

	// The bot's StatusManager.
	StatusManager *Status.StatusManager

	// The bot instance Logger.
	Logger *logrus.Logger

	// The map of Commands in the CommandManager.
	Commands *[]*Command

	// If the CommandManager ignores bots or not.
	IgnoreBots bool

	// The function that will be ran when the CommandManager encounters an error.
	OnErrorFunc CommandManagerOnErrorFunc
}

A CommandManager represents a set of prefixes, owners and commands, with some extra utility to create a command handler.

func NewCommandManager

func NewCommandManager(c Configuration.Configuration, db *gorm.DB, sm *Status.StatusManager, l *logrus.Logger, ignoreBots bool, errorFunc CommandManagerOnErrorFunc) CommandManager

NewCommandManager instantiates a new CommandManager. It returns a CommandManager.

func (*CommandManager) AddCommand

func (cmdm *CommandManager) AddCommand(cmd *Command)

AddCommand adds an existent command to the CommandManager's command list. It returns nothing.

func (*CommandManager) AddNewCommand

func (cmdm *CommandManager) AddNewCommand(name string, aliases []string, desc string, owneronly, hidden bool, userperms, botperms Shared.Permission,
	cmdType CommandType, run CommandFunc)

AddNewCommand adds a new command to the CommandManager's command list. It returns nothing.

func (*CommandManager) AddPrefix

func (cmdm *CommandManager) AddPrefix(prefix string)

AddPrefix adds a new prefix to the CommandManager's prefix list. It returns nothing.

func (*CommandManager) CommandHandler

func (cmdm *CommandManager) CommandHandler(s *discordgo.Session, m *discordgo.MessageCreate)

CommandHandler works as the CommandManager's message listener. It returns nothing.

func (*CommandManager) GetCommand added in v0.11.0

func (cmdm *CommandManager) GetCommand(name string) (cmd *Command, exists bool, index int)

func (*CommandManager) GetPrefixes

func (cmdm *CommandManager) GetPrefixes() []string

GetPrefixes gets the CommandManager's prefix list. It returns a string array.

func (*CommandManager) IsOwner

func (cmdm *CommandManager) IsOwner(id string) bool

IsOwner checks if a user ID is is in the owner list. It returns a bool.

func (*CommandManager) RemoveCommand

func (cmdm *CommandManager) RemoveCommand(name string)

RemoveCommand removes a command from the CommandManager's command list. It returns nothing.

func (*CommandManager) RemovePrefix

func (cmdm *CommandManager) RemovePrefix(prefix string)

RemovePrefix removes a prefix from the CommandManager's prefix list. It returns nothing.

func (*CommandManager) SetPrefixes

func (cmdm *CommandManager) SetPrefixes(prefixes []string)

SetPrefixes sets the CommandManager's prefix list. It returns nothing.

type CommandManagerOnErrorFunc

type CommandManagerOnErrorFunc func(cmdm *CommandManager, ctx CommandContext, err error)

A CommandManagerOnErrorFunc is a function that will run whenever the CommandManager encounters an error.

type CommandType

type CommandType int

A CommandType represents the locations commands can be used.

const (
	// A Command that is only supposed to run in a personal message
	CommandTypePM CommandType = iota

	// A command that is only supposed to run in a Guild
	CommandTypeGuild

	// A Command that is able to run anywhere
	CommandTypeEverywhere
)

Jump to

Keyboard shortcuts

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