Documentation ¶
Index ¶
- Constants
- Variables
- func CreateEmbed(values ...interface{}) (*discordgo.MessageEmbed, error)
- func CreateMessageEdit(values ...interface{}) (*discordgo.MessageEdit, error)
- func CreateMessageSend(values ...interface{}) (*discordgo.MessageSend, 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 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) 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) (*discordgo.Message, error)
- type ContextFrame
- type ContextSetupFunc
- type CtxChannel
- type Dict
- type SDict
- type Slice
Constants ¶
const ( MaxOpsNormal = 1000000 MaxOpsPremium = 2500000 MaxOpsEvalNormal = 5000 MaxOpsEvalPremium = 10000 )
const DiscordRoleLimit = 250
const MaxStringLength = 1000000
Variables ¶
var ErrStringTooLong = errors.NewPlain("String is too long (max 1MB)")
var ErrTooManyAPICalls = errors.New("too many potential discord api calls function")
var ErrTooManyCalls = errors.New("too many calls to this function")
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, "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 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 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 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 IsExecedByLeaveMessage bool IsExecedByJoinMessage bool IsExecedByEvalCC bool // 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) 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 DelResponseDelay int EmbedsToSend []*discordgo.MessageEmbed AddResponseReactionNames []string SendResponseInDM bool // 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 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"` }
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 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 Slice ¶
type Slice []interface{}