mux

package
v0.0.0-...-f4b8ed2 Latest Latest
Warning

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

Go to latest
Published: Feb 16, 2019 License: BSD-3-Clause Imports: 7 Imported by: 0

README

dgMux

Discord Gophers

dgMux is a simple Discord message route multiplexer that parses a message and then executes a matching registered handler. dgMux can be used with Disgord or the DiscordGo library.

If you would like to help the Disgord or DiscordGo package please use this link to add the official DiscordGo test bot dgo to your server. This provides indispensable help to this project.

For help with this program or general Go discussion, please join the Discord Gophers chat server.

NOTE : This is an experimental package and it's likely to have large changes breaking it's API and compatibility with previous versions.

The goal with dgMux is to create a fairly straight forward and simple "command router" that can be added to any DiscordGo bot without much fuss. A secondary goal is to keep the route handlers as close to native DiscordGo handlers as possible. So that each example provided can be used by those just learning the DiscordGo API and easily integrated into their own projects.

Some inspiration was taken from the chi and httprouter routers when creating dgMux.

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

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

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

type HandlerFunc func(*discordgo.Session, *discordgo.Message, *Context)

HandlerFunc is the function signature required for a message route handler.

type Mux

type Mux struct {
	Routes  []*Route
	Default *Route
	Prefix  string
}

Mux is the main struct for all mux methods.

func New

func New() *Mux

New returns a new Discord message route mux

func (*Mux) FuzzyMatch

func (m *Mux) FuzzyMatch(msg string) (*Route, []string)

FuzzyMatch attepts to find the best route match for a givin message.

func (*Mux) Help

func (m *Mux) Help(ds *discordgo.Session, dm *discordgo.Message, ctx *Context)

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) 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) Route

func (m *Mux) Route(pattern, desc string, cb HandlerFunc) (*Route, error)

Route allows you to register a route

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
}

Route holds information about a specific message route handler

Jump to

Keyboard shortcuts

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