summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md4
-rw-r--r--config.go3
-rw-r--r--matterbridge.conf.sample3
-rw-r--r--matterbridge.go19
4 files changed, 28 insertions, 1 deletions
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 {}