From 008ea94b533988c58f14403fa4100f3893cf1f4b Mon Sep 17 00:00:00 2001 From: Wim Date: Wed, 28 Oct 2015 00:04:57 +0100 Subject: [PATCH] Add giphy support. !gif --- README.md | 4 ++++ config.go | 3 +++ matterbridge.conf.sample | 3 +++ matterbridge.go | 19 ++++++++++++++++++- 4 files changed, 28 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 5946908f..db9d47b4 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/config.go b/config.go index e40b0e9a..ecdf65fa 100644 --- a/config.go +++ b/config.go @@ -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 {}