From d1e8ff814b616d38ad778f8b85e38caf53c33552 Mon Sep 17 00:00:00 2001 From: Wim Date: Fri, 3 Nov 2017 00:05:10 +0100 Subject: [PATCH] Add support to upload files to discord, from bridges with private urls like slack/mattermost/telegram. (discord) --- bridge/discord/discord.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go index d8320c76..c82844a4 100644 --- a/bridge/discord/discord.go +++ b/bridge/discord/discord.go @@ -1,6 +1,7 @@ package bdiscord import ( + "bytes" "github.com/42wim/matterbridge/bridge/config" log "github.com/Sirupsen/logrus" "github.com/bwmarrin/discordgo" @@ -141,6 +142,23 @@ func (b *bdiscord) Send(msg config.Message) (string, error) { _, err := b.c.ChannelMessageEdit(channelID, msg.ID, msg.Username+msg.Text) return msg.ID, err } + + if msg.Extra != nil { + // check if we have files to upload (from slack, telegram or mattermost) + if len(msg.Extra["file"]) > 0 { + for _, f := range msg.Extra["file"] { + fi := f.(config.FileInfo) + files := []*discordgo.File{} + files = append(files, &discordgo.File{fi.Name, "", bytes.NewReader(*fi.Data)}) + res, err := b.c.ChannelMessageSendComplex(channelID, &discordgo.MessageSend{Content: msg.Text, Files: files}) + if err != nil { + flog.Debugf("ERROR channelMessageSendComplex: %#v", err) + return "", err + } + return res.ID, err + } + } + } res, err := b.c.ChannelMessageSend(channelID, msg.Username+msg.Text) if err != nil { return "", err