Documentation ¶
Index ¶
- Constants
- Variables
- func CreateButton(values ...interface{}) (*discordgo.Button, error)
- func CreateComponent(expectedType discordgo.ComponentType, values ...interface{}) (discordgo.MessageComponent, error)
- func CreateEmbed(values ...interface{}) (*discordgo.MessageEmbed, error)
- func CreateMessageEdit(values ...interface{}) (*discordgo.MessageEdit, error)
- func CreateMessageSend(values ...interface{}) (*discordgo.MessageSend, error)
- func CreateModal(values ...interface{}) (*discordgo.InteractionResponse, error)
- func CreateSelectMenu(values ...interface{}) (*discordgo.SelectMenu, error)
- func KindOf(input interface{}, flag ...bool) (string, error)
- func LimitWriter(w io.Writer, n int64) io.Writer
- func MaybeScheduledDeleteMessage(guildID, channelID, messageID int64, delaySeconds int)
- func RegisterSetupFunc(f ContextSetupFunc)
- func StringKeyValueSlices(values ...interface{}) (dictKeys []string, dictValues []interface{}, err error)
- func TargetUserID(input interface{}) int64
- func ToByte(from interface{}) []byte
- func ToDuration(from interface{}) time.Duration
- func ToFloat64(from interface{}) float64
- func ToInt64(from interface{}) int64
- func ToRune(from interface{}) []rune
- func ToString(from interface{}) string
- type Context
- func (c *Context) ChannelArg(v interface{}) int64
- func (c *Context) ChannelArgNoDM(v interface{}) int64
- func (c *Context) ChannelArgNoDMNoThread(v interface{}) int64
- func (c *Context) Execute(source string) (string, error)
- func (c *Context) ExecuteAndSendWithErrors(source string, channelID int64) error
- func (c *Context) FindRole(role interface{}) *discordgo.Role
- func (c *Context) IncreaseCheckCallCounter(key string, limit int) bool
- func (c *Context) IncreaseCheckCallCounterPremium(key string, normalLimit, premiumLimit int) bool
- func (c *Context) IncreaseCheckGenericAPICall() bool
- func (c *Context) LogEntry() *logrus.Entry
- func (c *Context) MessageSend(content string) *discordgo.MessageSend
- func (c *Context) Parse(source string) (*template.Template, error)
- func (c *Context) SendResponse(content string) (m *discordgo.Message, err error)
- type ContextFrame
- type ContextSetupFunc
- type CtxChannel
- type CustomCommandInteraction
- type Dict
- type ExecutedFromType
- type SDict
- type Slice
Constants ¶
const ( MaxOpsNormal = 1000000 MaxOpsPremium = 2500000 MaxOpsEvalNormal = 5000 MaxOpsEvalPremium = 10000 )
const DiscordRoleLimit = 250
const MaxStringLength = 1000000
Variables ¶
var ( ErrTooManyCalls = errors.New("too many calls to this function") ErrTooManyAPICalls = errors.New("too many potential discord api calls function") )
var ErrStringTooLong = errors.NewPlain("String is too long (max 1MB)")
var GuildPremiumFunc func(guildID int64) (bool, error)
set by the premium package to return wether this guild is premium or not
var ( StandardFuncMap = map[string]interface{}{ "str": ToString, "toString": ToString, "toInt": tmplToInt, "toInt64": ToInt64, "toFloat": ToFloat64, "toDuration": ToDuration, "toRune": ToRune, "toByte": ToByte, "hasPrefix": strings.HasPrefix, "hasSuffix": strings.HasSuffix, "joinStr": joinStrings, "lower": strings.ToLower, "slice": slice, "split": strings.Split, "title": strings.Title, "trimSpace": strings.TrimSpace, "upper": strings.ToUpper, "urlescape": url.PathEscape, "urlunescape": url.PathUnescape, "print": withOutputLimit(fmt.Sprint, MaxStringLength), "println": withOutputLimit(fmt.Sprintln, MaxStringLength), "printf": withOutputLimitF(fmt.Sprintf, MaxStringLength), "sanitizeText": confusables.SanitizeText, "reQuoteMeta": regexp.QuoteMeta, "add": add, "cbrt": tmplCbrt, "div": tmplDiv, "fdiv": tmplFDiv, "log": tmplLog, "mathConst": tmplMathConstant, "max": tmplMax, "min": tmplMin, "mod": tmplMod, "mult": tmplMult, "pow": tmplPow, "round": tmplRound, "roundCeil": tmplRoundCeil, "roundEven": tmplRoundEven, "roundFloor": tmplRoundFloor, "sqrt": tmplSqrt, "sub": tmplSub, "bitwiseAnd": tmplBitwiseAnd, "bitwiseOr": tmplBitwiseOr, "bitwiseXor": tmplBitwiseXor, "bitwiseNot": tmplBitwiseNot, "bitwiseAndNot": tmplBitwiseAndNot, "bitwiseLeftShift": tmplBitwiseLeftShift, "bitwiseRightShift": tmplBitwiseRightShift, "humanizeThousands": tmplHumanizeThousands, "dict": Dictionary, "sdict": StringKeyDictionary, "structToSdict": StructToSdict, "cembed": CreateEmbed, "cbutton": CreateButton, "cmenu": CreateSelectMenu, "cmodal": CreateModal, "cslice": CreateSlice, "complexMessage": CreateMessageSend, "complexMessageEdit": CreateMessageEdit, "kindOf": KindOf, "adjective": common.RandomAdjective, "in": in, "inFold": inFold, "json": tmplJson, "jsonToSdict": tmplJSONToSDict, "noun": common.RandomNoun, "randInt": randInt, "roleAbove": roleIsAbove, "seq": sequence, "shuffle": shuffle, "verb": common.RandomVerb, "currentTime": tmplCurrentTime, "parseTime": tmplParseTime, "formatTime": tmplFormatTime, "loadLocation": time.LoadLocation, "newDate": tmplNewDate, "snowflakeToTime": tmplSnowflakeToTime, "timestampToTime": tmplTimestampToTime, "weekNumber": tmplWeekNumber, "humanizeDurationHours": tmplHumanizeDurationHours, "humanizeDurationMinutes": tmplHumanizeDurationMinutes, "humanizeDurationSeconds": tmplHumanizeDurationSeconds, "humanizeTimeSinceDays": tmplHumanizeTimeSinceDays, } )
Functions ¶
func CreateButton ¶ added in v2.39.0
func CreateComponent ¶ added in v2.39.0
func CreateComponent(expectedType discordgo.ComponentType, values ...interface{}) (discordgo.MessageComponent, error)
func CreateEmbed ¶
func CreateEmbed(values ...interface{}) (*discordgo.MessageEmbed, error)
func CreateMessageEdit ¶
func CreateMessageEdit(values ...interface{}) (*discordgo.MessageEdit, error)
func CreateMessageSend ¶
func CreateMessageSend(values ...interface{}) (*discordgo.MessageSend, error)
func CreateModal ¶ added in v2.39.0
func CreateModal(values ...interface{}) (*discordgo.InteractionResponse, error)
func CreateSelectMenu ¶ added in v2.39.0
func CreateSelectMenu(values ...interface{}) (*discordgo.SelectMenu, error)
func LimitWriter ¶
LimitWriter works like io.LimitReader. It writes at most n bytes to the underlying Writer. It returns io.ErrShortWrite if more than n bytes are attempted to be written.
func RegisterSetupFunc ¶
func RegisterSetupFunc(f ContextSetupFunc)
func StringKeyValueSlices ¶ added in v2.39.0
func StringKeyValueSlices(values ...interface{}) (dictKeys []string, dictValues []interface{}, err error)
StringKeyValueSlices parses given input of key-value pairs but returns the keys and the values as separate slices. this is used when you need to have duplicate keys and therefore cannot use a map.
func TargetUserID ¶ added in v2.24.0
func TargetUserID(input interface{}) int64
func ToDuration ¶
Types ¶
type Context ¶
type Context struct { Name string GS *dstate.GuildSet MS *dstate.MemberState Msg *discordgo.Message BotUser *discordgo.User DisabledContextFuncs []string ContextFuncs map[string]interface{} Data map[string]interface{} Counters map[string]int FixedOutput string IsPremium bool RegexCache map[string]*regexp.Regexp CurrentFrame *ContextFrame ExecutedFrom ExecutedFromType // contains filtered or unexported fields }
func NewContext ¶
func NewContext(gs *dstate.GuildSet, cs *dstate.ChannelState, ms *dstate.MemberState) *Context
func (*Context) ChannelArg ¶
ChannelArg converts a variety of types of argument into a channel, verifying that it exists
func (*Context) ChannelArgNoDM ¶
ChannelArgNoDM is the same as ChannelArg but will not accept DM channels
func (*Context) ChannelArgNoDMNoThread ¶
func (*Context) ExecuteAndSendWithErrors ¶
func (*Context) FindRole ¶ added in v2.39.0
c.FindRole accepts all possible role inputs (names, IDs and mentions) and tries to find them on the current context
func (*Context) IncreaseCheckCallCounter ¶
IncreaseCheckCallCounter Returns true if key is above the limit
func (*Context) IncreaseCheckCallCounterPremium ¶
IncreaseCheckCallCounter Returns true if key is above the limit
func (*Context) IncreaseCheckGenericAPICall ¶
func (*Context) MessageSend ¶
func (c *Context) MessageSend(content string) *discordgo.MessageSend
type ContextFrame ¶ added in v2.4.0
type ContextFrame struct { CS *dstate.ChannelState MentionEveryone bool MentionHere bool MentionRoles []int64 DelResponse bool PublishResponse bool EphemeralResponse bool DelResponseDelay int EmbedsToSend []*discordgo.MessageEmbed AddResponseReactionNames []string SendResponseInDM bool Interaction *CustomCommandInteraction // contains filtered or unexported fields }
type ContextSetupFunc ¶
type ContextSetupFunc func(ctx *Context)
type CtxChannel ¶
type CtxChannel struct { // These fields never change ID int64 GuildID int64 IsPrivate bool IsThread bool IsForum bool Name string `json:"name"` Type discordgo.ChannelType `json:"type"` Topic string `json:"topic"` NSFW bool `json:"nsfw"` Position int `json:"position"` Bitrate int `json:"bitrate"` PermissionOverwrites []*discordgo.PermissionOverwrite `json:"permission_overwrites"` ParentID int64 `json:"parent_id"` OwnerID int64 `json:"owner_id"` AvailableTags []discordgo.ForumTag `json:"available_tags"` AppliedTags []int64 `json:"applied_tags"` Flags discordgo.ChannelFlags `json:"flags"` Archived bool `json:"archived"` Locked bool `json:"locked"` }
CtxChannel is almost a 1:1 copy of dstate.ChannelState, its needed because we cant axpose all those state methods we also cant use discordgo.Channel because that would likely break a lot of custom commands at this point.
func CtxChannelFromCS ¶
func CtxChannelFromCS(cs *dstate.ChannelState) *CtxChannel
func (*CtxChannel) Mention ¶
func (c *CtxChannel) Mention() (string, error)
type CustomCommandInteraction ¶ added in v2.39.0
type CustomCommandInteraction struct { *discordgo.Interaction RespondedTo bool }
type Dict ¶
type Dict map[interface{}]interface{}
func Dictionary ¶
dictionary creates a map[string]interface{} from the given parameters by walking the parameters and treating them as key-value pairs. The number of parameters must be even.
func (Dict) MarshalJSON ¶
type ExecutedFromType ¶ added in v2.30.0
type ExecutedFromType int
Defines where a template was executed from to enable certain restrictions
const ( ExecutedFromStandard ExecutedFromType = 0 ExecutedFromJoin ExecutedFromType = 1 ExecutedFromLeave ExecutedFromType = 2 ExecutedFromEvalCC ExecutedFromType = 3 )
type Slice ¶
type Slice []interface{}