diff options
author | Wim <wim@42.be> | 2015-10-28 00:04:57 +0100 |
---|---|---|
committer | Wim <wim@42.be> | 2015-10-28 00:04:57 +0100 |
commit | 008ea94b533988c58f14403fa4100f3893cf1f4b (patch) | |
tree | 5ed780ff34bec0664bee81fcbcc3e65a61cd73c1 | |
parent | 693f1946b7ef34b430466d1de7dc9a0d445c3894 (diff) | |
download | matterbridge-msglm-008ea94b533988c58f14403fa4100f3893cf1f4b.tar.gz matterbridge-msglm-008ea94b533988c58f14403fa4100f3893cf1f4b.tar.bz2 matterbridge-msglm-008ea94b533988c58f14403fa4100f3893cf1f4b.zip |
Add giphy support. !gif <query>
-rw-r--r-- | README.md | 4 | ||||
-rw-r--r-- | config.go | 3 | ||||
-rw-r--r-- | matterbridge.conf.sample | 3 | ||||
-rw-r--r-- | matterbridge.go | 19 |
4 files changed, 28 insertions, 1 deletions
@@ -61,6 +61,10 @@ showjoinpart=true #show irc users joining and parting token=yourtokenfrommattermost #disable certificate checking (selfsigned certificates) #SkipTLSVerify=true + +[general] +#request your API key on https://github.com/giphy/GiphyAPI. This is a public beta key +GiphyApiKey="dc6zaTOxFJmzC" ``` ### mattermost @@ -23,6 +23,9 @@ type Config struct { IconURL string SkipTLSVerify bool } + General struct { + GiphyAPIKey string + } } func NewConfig(cfgfile string) *Config { diff --git a/matterbridge.conf.sample b/matterbridge.conf.sample index bac921ce..f910e019 100644 --- a/matterbridge.conf.sample +++ b/matterbridge.conf.sample @@ -13,3 +13,6 @@ showjoinpart=true #token=yourtokenfrommattermost IconURL="http://youricon.png" #SkipTLSVerify=true + +[general] +GiphyAPIKey=dc6zaTOxFJmzC diff --git a/matterbridge.go b/matterbridge.go index 734904cf..b9f34c7c 100644 --- a/matterbridge.go +++ b/matterbridge.go @@ -3,6 +3,7 @@ package main import ( "crypto/tls" "github.com/42wim/matterbridge/matterhook" + "github.com/peterhellberg/giphy" "github.com/thoj/go-ircevent" "log" "strconv" @@ -80,10 +81,14 @@ func (b *Bridge) Send(nick string, message string) error { func (b *Bridge) handleMatter() { for { message := b.m.Receive() - switch message.Text { + cmd := strings.Fields(message.Text)[0] + switch cmd { case "!users": log.Println("received !users from", message.UserName) b.i.SendRaw("NAMES " + b.Config.IRC.Channel) + case "!gif": + message.Text = b.giphyRandom(strings.Fields(strings.Replace(message.Text, "!gif ", "", 1))) + b.Send(b.Config.IRC.Nick, "![img]("+message.Text+")") } texts := strings.Split(message.Text, "\n") for _, text := range texts { @@ -92,6 +97,18 @@ func (b *Bridge) handleMatter() { } } +func (b *Bridge) giphyRandom(query []string) string { + g := giphy.DefaultClient + if b.Config.General.GiphyAPIKey != "" { + g.APIKey = b.Config.General.GiphyAPIKey + } + res, err := g.Random(query) + if err != nil { + return "error" + } + return res.Data.FixedHeightDownsampledURL +} + func main() { NewBridge("matterbot", NewConfig("matterbridge.conf")) select {} |