Add giphy support. !gif <query>

This commit is contained in:
Wim 2015-10-28 00:04:57 +01:00
parent 693f1946b7
commit 008ea94b53
4 changed files with 28 additions and 1 deletions

View File

@ -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

View File

@ -23,6 +23,9 @@ type Config struct {
IconURL string
SkipTLSVerify bool
}
General struct {
GiphyAPIKey string
}
}
func NewConfig(cfgfile string) *Config {

View File

@ -13,3 +13,6 @@ showjoinpart=true
#token=yourtokenfrommattermost
IconURL="http://youricon.png"
#SkipTLSVerify=true
[general]
GiphyAPIKey=dc6zaTOxFJmzC

View File

@ -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 {}