From 80295590af8e779682236ff6d21931b79fcb11d7 Mon Sep 17 00:00:00 2001 From: Chris Sexton Date: Mon, 18 Mar 2013 17:21:37 -0400 Subject: [PATCH] Adding your plugin --- main.go | 1 + plugins/your.go | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 plugins/your.go diff --git a/main.go b/main.go index 756fbd1..1ea488e 100644 --- a/main.go +++ b/main.go @@ -52,6 +52,7 @@ func main() { b.AddHandler("counter", plugins.NewCounterPlugin(b)) b.AddHandler("remember", plugins.NewRememberPlugin(b)) b.AddHandler("skeleton", plugins.NewSkeletonPlugin(b)) + b.AddHandler("your", plugins.NewYourPlugin(b)) // catches anything left, will always return true b.AddHandler("factoid", plugins.NewFactoidPlugin(b)) diff --git a/plugins/your.go b/plugins/your.go new file mode 100644 index 0000000..1505344 --- /dev/null +++ b/plugins/your.go @@ -0,0 +1,56 @@ +package plugins + +import ( + "fmt" + "math/rand" + "strings" + + "bitbucket.org/phlyingpenguin/godeepintir/bot" +) + +type YourPlugin struct { + Bot *bot.Bot +} + +// NewYourPlugin creates a new YourPlugin with the Plugin interface +func NewYourPlugin(bot *bot.Bot) *YourPlugin { + return &YourPlugin{ + Bot: bot, + } +} + +// Message responds to the bot hook on recieving messages. +// This function returns true if the plugin responds in a meaningful way to the users message. +// Otherwise, the function returns false and the bot continues execution of other plugins. +func (p *YourPlugin) Message(message bot.Message) bool { + fmt.Println("Your got a message!") + lower := strings.ToLower(message.Body) + if strings.Contains(lower, "your") || strings.Contains(lower, "you're") { + if rand.Float64() < 0.2 { + r := strings.NewReplacer("Your", "You're", "your", "you're", "You're", + "Your", "you're", "your", "Youre", "Your", "youre", "your") + msg := r.Replace(message.Body) + fmt.Println(msg) + p.Bot.SendMessage(message.Channel, msg) + return true + } + } + return false +} + +// LoadData imports any configuration data into the plugin. This is not strictly necessary other +// than the fact that the Plugin interface demands it exist. This may be deprecated at a later +// date. +func (p *YourPlugin) LoadData() { + rand.Seed(time.Now().Unix()) +} + +// Help responds to help requests. Every plugin must implement a help function. +func (p *YourPlugin) Help(channel string, parts []string) { + p.Bot.SendMessage(channel, "Your corrects people's grammar.") +} + +// Empty event handler because this plugin does not do anything on event recv +func (p *YourPlugin) Event(kind string, message bot.Message) bool { + return false +}