Documentation ¶
Overview ¶
Package mux provides a simple Discord message route multiplexer that parses messages and then executes a matching registered handler, if found. mux can be used with both Disgord and the DiscordGo library.
Index ¶
- Variables
- func AddMessageToText(message *discordgo.Message, text *string)
- func EightHourRange(t time.Time) string
- func GetAccessSymbol(access int) string
- func GetEditor(ds *discordgo.Session, dm *discordgo.Message) func(msg string) *discordgo.Message
- func GetResponder(ds *discordgo.Session, dm *discordgo.Message) func(msg string) *discordgo.Message
- func HasAccess(ds *discordgo.Session, dm *discordgo.MessageCreate, access int) bool
- func ImageCopyEmbeds(ds *discordgo.Session, msg *discordgo.Message) []*discordgo.MessageEmbed
- func IsModerator(ds *discordgo.Session, dm *discordgo.MessageCreate) bool
- func IsStaff(ds *discordgo.Session, guildID, userID string) bool
- func NumLength(in int) int
- func PadString(str string, length int) string
- func RemoveUnwantedElements(text string) (string, bool)
- func StartCopyEmbed(cp config.CopyPipeline) *discordgo.MessageEmbed
- func StickyEmbed(sticky models.Sticky) *discordgo.MessageEmbed
- func StreamsEmbed(mans []ManualStream, recs []models.YoutubeStreamRecord) *discordgo.MessageEmbed
- func TimeBefore(t time.Time) string
- type Context
- type EmbedToUpdate
- type HandlerFunc
- type ManualStream
- type MessageLog
- type Mux
- func (m *Mux) AddGuerrilla(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) AddReaction(ds *discordgo.Session, ra *discordgo.MessageReactionAdd)
- func (m *Mux) AddStream(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) AlphaRole(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Avatar(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) CancelExtraction(ds *discordgo.Session, e config.Extraction)
- func (m *Mux) CancelTweetUpdate(ds *discordgo.Session, tu config.TweetUpdate)
- func (m *Mux) ClearUntil(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Config(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) ConfirmTweet(ds *discordgo.Session, st models.SyncedTweet)
- func (m *Mux) CopyMessageToYoutube(ds *discordgo.Session, dm *discordgo.Message, cp config.CopyPipeline)
- func (m *Mux) CountMembers(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) DoClear(ds *discordgo.Session, channelID string, deleteMessageIDs []string)
- func (m *Mux) DoExtraction(ds *discordgo.Session, e config.Extraction)
- func (m *Mux) DoTweetUpdate(ds *discordgo.Session, tu config.TweetUpdate)
- func (m *Mux) DoTweetUpdateByReply(ds *discordgo.Session, dm *discordgo.Message, ref *discordgo.MessageReference)
- func (m *Mux) DoubleTL(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) EightBall(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) EndYoutubeCopy(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) EnsureSticky(db *mgo.Database, ds *discordgo.Session, dm *discordgo.Message) bool
- func (m *Mux) ExtractMessages(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) FanboxRole(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) FormerRole(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) FuzzyMatch(msg string) (*Route, []string)
- func (m *Mux) Headpat(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Help(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) InitScanForUpdates(ds *discordgo.Session)
- func (m *Mux) LogMessageCreate(db *mgo.Database, ds *discordgo.Session, mc *discordgo.MessageCreate, ...)
- func (m *Mux) Mods(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) MuteRole(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Nickname(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) OnMessageCreate(ds *discordgo.Session, mc *discordgo.MessageCreate)
- func (m *Mux) OnMessageDelete(ds *discordgo.Session, md *discordgo.MessageDelete)
- func (m *Mux) OnMessageDeleteBulk(ds *discordgo.Session, mdb *discordgo.MessageDeleteBulk)
- func (m *Mux) OnMessageUpdate(ds *discordgo.Session, mu *discordgo.MessageUpdate)
- func (m *Mux) PromoteMembers(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Proposal(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) RefreshConfig(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) RemoveReaction(ds *discordgo.Session, rr *discordgo.MessageReactionRemove)
- func (m *Mux) RemoveStream(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) RoleGrant(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) RoleRemove(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Route(pattern, desc string, cb HandlerFunc, access int) (*Route, error)
- func (m *Mux) ScanForUpdates(ds *discordgo.Session)
- func (m *Mux) SpecialRole(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Sticky(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Stream(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Streams(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) SyncSheet(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) TestMsg(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) TestSync(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Translate(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) TweetEdit(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) TweetTranslate(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Unsticky(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) UpdateProposal(ds *discordgo.Session, guildID, channelID, messageID string)
- func (m *Mux) VDebug(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) Verify(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) VerifyFormer(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) WhaleRole(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- func (m *Mux) YoutubeCopy(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)
- type Route
Constants ¶
This section is empty.
Variables ¶
var EmbedsToUpdate = []EmbedToUpdate{}
var MembersTLChannel = "776620304888889374"
var PublicTLChannel = "796526853442895915"
var Pushpin = "\U0001F4CC"
var ThumbsUp = "\U0001F44D"
var Triangle = "\U0001F53A"
var YTSvc *youtubesvc.UserYoutubeService
Functions ¶
func AddMessageToText ¶
func EightHourRange ¶
func GetAccessSymbol ¶
func GetResponder ¶
func ImageCopyEmbeds ¶
func IsModerator ¶
func IsModerator(ds *discordgo.Session, dm *discordgo.MessageCreate) bool
IsModerator check if a user is a moderator
func RemoveUnwantedElements ¶
func StartCopyEmbed ¶
func StartCopyEmbed(cp config.CopyPipeline) *discordgo.MessageEmbed
func StickyEmbed ¶
func StickyEmbed(sticky models.Sticky) *discordgo.MessageEmbed
func StreamsEmbed ¶
func StreamsEmbed(mans []ManualStream, recs []models.YoutubeStreamRecord) *discordgo.MessageEmbed
func TimeBefore ¶
Types ¶
type Context ¶
type Context struct { Fields []string Content string IsDirected bool IsPrivate bool HasPrefix bool HasMention bool HasMentionFirst bool }
Context holds a bit of extra data we pass along to route handlers This way processing some of this only needs to happen once.
type HandlerFunc ¶
HandlerFunc is the function signature required for a message route handler.
type ManualStream ¶
type ManualStream struct { Time time.Time `json:"time" bson:"time"` Title string `json:"title" bson:"title"` GuerrillaTime string `json:"guerrilla_time" bson:"guerrilla_time"` }
func (*ManualStream) ReplacedBy ¶
func (ms *ManualStream) ReplacedBy(recs []models.YoutubeStreamRecord) bool
type MessageLog ¶
type Mux ¶
Mux is the main struct for all mux methods.
func (*Mux) AddGuerrilla ¶
func (*Mux) AddReaction ¶
func (m *Mux) AddReaction(ds *discordgo.Session, ra *discordgo.MessageReactionAdd)
func (*Mux) CancelExtraction ¶
func (m *Mux) CancelExtraction(ds *discordgo.Session, e config.Extraction)
func (*Mux) CancelTweetUpdate ¶
func (m *Mux) CancelTweetUpdate(ds *discordgo.Session, tu config.TweetUpdate)
func (*Mux) ClearUntil ¶
func (*Mux) ConfirmTweet ¶
func (m *Mux) ConfirmTweet(ds *discordgo.Session, st models.SyncedTweet)
func (*Mux) CopyMessageToYoutube ¶
func (*Mux) CountMembers ¶
func (*Mux) DoExtraction ¶
func (m *Mux) DoExtraction(ds *discordgo.Session, e config.Extraction)
func (*Mux) DoTweetUpdate ¶
func (m *Mux) DoTweetUpdate(ds *discordgo.Session, tu config.TweetUpdate)
func (*Mux) DoTweetUpdateByReply ¶
func (*Mux) EndYoutubeCopy ¶
func (*Mux) EnsureSticky ¶
func (*Mux) ExtractMessages ¶
func (*Mux) FanboxRole ¶
func (*Mux) FormerRole ¶
func (*Mux) FuzzyMatch ¶
FuzzyMatch attempts to find the best route match for a given message.
func (*Mux) Help ¶
Help function provides a build in "help" command that will display a list of all registered routes (commands). To use this function it must first be registered with the Mux.Route function.
func (*Mux) InitScanForUpdates ¶
func (*Mux) LogMessageCreate ¶
func (*Mux) OnMessageCreate ¶
func (m *Mux) OnMessageCreate(ds *discordgo.Session, mc *discordgo.MessageCreate)
OnMessageCreate is a DiscordGo Event Handler function. This must be registered using the DiscordGo.Session.AddHandler function. This function will receive all Discord messages and parse them for matches to registered routes.
func (*Mux) OnMessageDelete ¶
func (m *Mux) OnMessageDelete(ds *discordgo.Session, md *discordgo.MessageDelete)
func (*Mux) OnMessageDeleteBulk ¶
func (m *Mux) OnMessageDeleteBulk(ds *discordgo.Session, mdb *discordgo.MessageDeleteBulk)
func (*Mux) OnMessageUpdate ¶
func (m *Mux) OnMessageUpdate(ds *discordgo.Session, mu *discordgo.MessageUpdate)
func (*Mux) PromoteMembers ¶
func (*Mux) RefreshConfig ¶
func (*Mux) RemoveReaction ¶
func (m *Mux) RemoveReaction(ds *discordgo.Session, rr *discordgo.MessageReactionRemove)
func (*Mux) RemoveStream ¶
func (*Mux) RoleRemove ¶
func (*Mux) ScanForUpdates ¶
func (*Mux) SpecialRole ¶
func (*Mux) TweetTranslate ¶
func (*Mux) UpdateProposal ¶
func (*Mux) VerifyFormer ¶
type Route ¶
type Route struct { Pattern string // match pattern that should trigger this route handler Description string // short description of this route Help string // detailed help string for this route Run HandlerFunc // route handler function to call Access int // access level for the command }
Route holds information about a specific message route handler
Source Files ¶
- c_avatar.go
- c_clearuntil.go
- c_config.go
- c_countmembers.go
- c_doubletl.go
- c_eightball.go
- c_extract.go
- c_headpat.go
- c_help.go
- c_mods.go
- c_nickname.go
- c_promotemembers.go
- c_proposal.go
- c_roles.go
- c_sticky.go
- c_streams.go
- c_testmsg.go
- c_testsync.go
- c_tl.go
- c_ttl.go
- c_verify.go
- c_ytcopy.go
- common.go
- mux.go