diff options
author | Qais Patankar <qaisjp@gmail.com> | 2020-12-05 16:18:06 +0000 |
---|---|---|
committer | Wim <wim@42.be> | 2020-12-13 23:19:48 +0100 |
commit | aef2dcdfddd1a5b0a06e918cc878f3b52f7babf6 (patch) | |
tree | c9fd948f28ba0157dba5407858b29c1ab0ca7008 /bridge/discord/discord.go | |
parent | 0494119bf4e1fb53967aca9be3203d7cf2bbb9a5 (diff) | |
download | matterbridge-msglm-aef2dcdfddd1a5b0a06e918cc878f3b52f7babf6.tar.gz matterbridge-msglm-aef2dcdfddd1a5b0a06e918cc878f3b52f7babf6.tar.bz2 matterbridge-msglm-aef2dcdfddd1a5b0a06e918cc878f3b52f7babf6.zip |
Move webhook specific logic to its own file (discord)
Diffstat (limited to 'bridge/discord/discord.go')
-rw-r--r-- | bridge/discord/discord.go | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go index 70fdaf90..1e6f3751 100644 --- a/bridge/discord/discord.go +++ b/bridge/discord/discord.go @@ -356,97 +356,3 @@ func (b *Bdiscord) handleUploadFile(msg *config.Message, channelID string) (stri } return "", nil } - -// shouldMessageUseWebhooks checks if have a channel specific webhook, if we're not using auto webhooks -func (b *Bdiscord) shouldMessageUseWebhooks(msg *config.Message) bool { - if b.useAutoWebhooks { - return true - } - - b.channelsMutex.RLock() - defer b.channelsMutex.RUnlock() - if ci, ok := b.channelInfoMap[msg.Channel+b.Account]; ok { - if ci.Options.WebhookURL != "" { - return true - } - } - return false -} - -// webhookSend send one or more message via webhook, taking care of file -// uploads (from slack, telegram or mattermost). -// Returns messageID and error. -func (b *Bdiscord) webhookSend(msg *config.Message, channelID string) (*discordgo.Message, error) { - var ( - res *discordgo.Message - err error - ) - - // If avatar is unset, mutate the message to include the local avatar (but only if settings say we should do this) - if msg.Avatar == "" { - msg.Avatar = b.maybeGetLocalAvatar(msg) - } - - // WebhookParams can have either `Content` or `File`. - - // We can't send empty messages. - if msg.Text != "" { - res, err = b.transmitter.Send( - channelID, - &discordgo.WebhookParams{ - Content: msg.Text, - Username: msg.Username, - AvatarURL: msg.Avatar, - }, - ) - if err != nil { - b.Log.Errorf("Could not send text (%s) for message %#v: %s", msg.Text, msg, err) - } - } - - if msg.Extra != nil { - for _, f := range msg.Extra["file"] { - fi := f.(config.FileInfo) - file := discordgo.File{ - Name: fi.Name, - ContentType: "", - Reader: bytes.NewReader(*fi.Data), - } - content := "" - if msg.Text == "" { - content = fi.Comment - } - _, e2 := b.transmitter.Send( - channelID, - &discordgo.WebhookParams{ - Username: msg.Username, - AvatarURL: msg.Avatar, - File: &file, - Content: content, - }, - ) - if e2 != nil { - b.Log.Errorf("Could not send file %#v for message %#v: %s", file, msg, e2) - } - } - } - return res, err -} - -// maybeGetLocalAvatar checks if UseLocalAvatar contains the message's -// account or protocol, and if so, returns the Discord avatar (if exists) -func (b *Bdiscord) maybeGetLocalAvatar(msg *config.Message) string { - for _, val := range b.GetStringSlice("UseLocalAvatar") { - if msg.Protocol != val && msg.Account != val { - continue - } - - member, err := b.getGuildMemberByNick(msg.Username) - if err != nil { - return "" - } - - return member.User.AvatarURL("") - } - return "" -} |