customcommands

package
v1.16.1 Latest Latest
Warning

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

Go to latest
Published: Mar 3, 2019 License: MIT Imports: 40 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MaxCommands        = 100
	MaxCommandsPremium = 250
	MaxUserMessages    = 20
	MaxGroups          = 50
)
View Source
const DBSchema = `` /* 1178-byte string literal not displayed */

Variables

View Source
var (
	CCExecLock        = keylock.NewKeyLock()
	DelayedCCRunLimit = multiratelimit.NewMultiRatelimiter(0.1, 10)
)
View Source
var (
	RegexCache = *ccache.New(ccache.Configure())
)

Functions

func BotCachedGetCommandsWithMessageTriggers added in v1.14.0

func BotCachedGetCommandsWithMessageTriggers(gs *dstate.GuildState, ctx context.Context) ([]*models.CustomCommand, error)

func CalcNextRunTime added in v1.14.0

func CalcNextRunTime(cc *models.CustomCommand, now time.Time) time.Time

func CheckIntervalLimits added in v1.14.0

func CheckIntervalLimits(ctx context.Context, guildID int64, cmdID int64, templateData web.TemplateData) (ok bool, err error)

allow for max 5 triggers with intervals of less than 10 minutes

func CheckLimits

func CheckLimits(in ...string) bool

func CheckMatch

func CheckMatch(globalPrefix string, cmd *models.CustomCommand, msg string) (match bool, stripped string, args []string)

CheckMatch returns true if the given cmd matches, as well as the arguments following the command trigger (arg 0 being the message up to, and including, the trigger).

func CmdRunsForUser added in v1.14.0

func CmdRunsForUser(cc *models.CustomCommand, ms *dstate.MemberState) bool

func CmdRunsInChannel added in v1.14.0

func CmdRunsInChannel(cc *models.CustomCommand, channel int64) bool

func DelNextRunEvent added in v1.14.0

func DelNextRunEvent(guildID int64, cmdID int64) error

func ExecuteCustomCommand

func ExecuteCustomCommand(cmd *models.CustomCommand, tmplCtx *templates.Context) error

func ExecuteCustomCommand(cmd *models.CustomCommand, cmdArgs []string, stripped string, s *discordgo.Session, m *discordgo.MessageCreate) (resp string, tmplCtx *templates.Context, err error) {

func ExecuteCustomCommandFromMessage added in v1.14.0

func ExecuteCustomCommandFromMessage(cmd *models.CustomCommand, member *dstate.MemberState, cs *dstate.ChannelState, cmdArgs []string, stripped string, m *discordgo.Message) error

func FindCommands

func FindCommands(ccs []*models.CustomCommand, data *dcmd.Data) (foundCCS []*models.CustomCommand, provided bool)

func HandleCommands

func HandleCommands(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleDeleteCommand

func HandleDeleteCommand(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleDeleteGroup added in v1.14.0

func HandleDeleteGroup(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleGetCommandsGroup added in v1.14.0

func HandleGetCommandsGroup(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleMessageCreate

func HandleMessageCreate(evt *eventsystem.EventData)

func HandleNewCommand

func HandleNewCommand(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleNewGroup added in v1.14.0

func HandleNewGroup(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleUpdateCommand

func HandleUpdateCommand(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func HandleUpdateGroup added in v1.14.0

func HandleUpdateGroup(w http.ResponseWriter, r *http.Request) (web.TemplateData, error)

func KeyCommands

func KeyCommands(guildID int64) string

func MaxCommandsForContext added in v1.6.0

func MaxCommandsForContext(ctx context.Context) int

func RegisterPlugin

func RegisterPlugin()

func ServeGroupSelected added in v1.14.0

func ServeGroupSelected(r *http.Request, templateData web.TemplateData, groupID int64, guildID int64) (web.TemplateData, error)

func StringCommands

func StringCommands(ccs []*models.CustomCommand) string

func UpdateCommandNextRunTime added in v1.14.0

func UpdateCommandNextRunTime(cc *models.CustomCommand, updateLastRun bool) error

TODO: Run this all in a transaction?

Types

type CCExecKey added in v1.16.0

type CCExecKey struct {
	GuildID int64
	CCID    int64
}

type CacheKey added in v1.14.0

type CacheKey int
const (
	CacheKeyCommands CacheKey = iota
)

type CommandTriggerType

type CommandTriggerType int
const (
	CommandTriggerCommand    CommandTriggerType = 0
	CommandTriggerStartsWith CommandTriggerType = 1
	CommandTriggerContains   CommandTriggerType = 2
	CommandTriggerRegex      CommandTriggerType = 3
	CommandTriggerExact      CommandTriggerType = 4

	CommandTriggerInterval CommandTriggerType = 5
)

func TriggerTypeFromForm

func TriggerTypeFromForm(str string) CommandTriggerType

func (CommandTriggerType) String

func (t CommandTriggerType) String() string

type CustomCommand

type CustomCommand struct {
	TriggerType     CommandTriggerType `json:"trigger_type"`
	TriggerTypeForm string             `json:"-" schema:"type"`
	Trigger         string             `json:"trigger" schema:"trigger" valid:",0,1000"`
	// TODO: Retire the legacy Response field.
	Response      string   `json:"response,omitempty" schema:"response" valid:"template,10000"`
	Responses     []string `json:"responses" schema:"responses" valid:"template,10000"`
	CaseSensitive bool     `json:"case_sensitive" schema:"case_sensitive"`
	ID            int64    `json:"id"`

	ContextChannel int64 `schema:"context_channel" valid:"channel,true"`

	TimeTriggerInterval       int     `schema:"time_trigger_interval"`
	TimeTriggerExcludingDays  []int64 `schema:"time_trigger_excluding_days"`
	TimeTriggerExcludingHours []int64 `schema:"time_trigger_excluding_hours"`

	// If set, then the following channels are required, otherwise they are ignored
	RequireChannels bool    `json:"require_channels" schema:"require_channels"`
	Channels        []int64 `json:"channels" schema:"channels"`

	// If set, then one of the following channels are required, otherwise they are ignored
	RequireRoles bool    `json:"require_roles" schema:"require_roles"`
	Roles        []int64 `json:"roles" schema:"roles"`

	GroupID int64
}

func LegacyGetCommands added in v1.14.0

func LegacyGetCommands(guild int64) ([]*CustomCommand, int64, error)

func (*CustomCommand) Migrate added in v0.29.1

func (cc *CustomCommand) Migrate() *CustomCommand

Migrate modifies a CustomCommand to remove legacy fields.

func (*CustomCommand) ToDBModel added in v1.14.0

func (cc *CustomCommand) ToDBModel() *models.CustomCommand

func (*CustomCommand) Validate added in v1.14.0

func (cc *CustomCommand) Validate(tmpl web.TemplateData) (ok bool)

type CustomCommandSlice

type CustomCommandSlice []*CustomCommand

func (CustomCommandSlice) Len

func (c CustomCommandSlice) Len() int

Len is the number of elements in the collection.

func (CustomCommandSlice) Less

func (c CustomCommandSlice) Less(i, j int) bool

Less reports whether the element with index i should sort before the element with index j.

func (CustomCommandSlice) Swap

func (c CustomCommandSlice) Swap(i, j int)

Swap swaps the elements with indexes i and j.

type DelayedRunCCData added in v1.16.0

type DelayedRunCCData struct {
	ChannelID int64  `json:"channel_id"`
	CmdID     int64  `json:"cmd_id"`
	UserData  []byte `json:"data"`

	Message *discordgo.Message
	Member  *dstate.MemberState
}

type DelayedRunLimitKey added in v1.16.0

type DelayedRunLimitKey struct {
	GuildID   int64
	ChannelID int64
}

type GroupForm added in v1.14.0

type GroupForm struct {
	ID                int64
	Name              string  `valid:",100"`
	WhitelistChannels []int64 `valid:"channel,true"`
	BlacklistChannels []int64 `valid:"channel,true"`

	WhitelistRoles []int64 `valid:"role,true"`
	BlacklistRoles []int64 `valid:"role,true"`
}

type NextRunScheduledEvent added in v1.14.0

type NextRunScheduledEvent struct {
	CmdID int64 `json:"cmd_id"`
}

type ParsedArgs added in v1.12.0

type ParsedArgs struct {
	Defs   []*dcmd.ArgDef
	Parsed []*dcmd.ParsedArg
}

func (*ParsedArgs) Get added in v1.12.0

func (pa *ParsedArgs) Get(index int) interface{}

func (*ParsedArgs) IsSet added in v1.12.0

func (pa *ParsedArgs) IsSet(index int) interface{}

type Plugin

type Plugin struct{}

func (*Plugin) AddCommands added in v1.4.1

func (p *Plugin) AddCommands()

func (*Plugin) BotInit added in v1.4.1

func (p *Plugin) BotInit()

func (*Plugin) InitWeb

func (p *Plugin) InitWeb()

func (*Plugin) Name

func (p *Plugin) Name() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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