summaryrefslogtreecommitdiffstats
path: root/bridge/discord
diff options
context:
space:
mode:
authorQais Patankar <qaisjp@gmail.com>2020-02-09 21:07:26 +0000
committerGitHub <noreply@github.com>2020-02-09 22:07:26 +0100
commitc91bfd08d855d07eccf5319e8881c816edf598ea (patch)
tree886c0d59e048135ccb98290df6af874ab10a41c9 /bridge/discord
parent49110a58729fcbecaffcb0202f9a9474d98c9cde (diff)
downloadmatterbridge-msglm-c91bfd08d855d07eccf5319e8881c816edf598ea.tar.gz
matterbridge-msglm-c91bfd08d855d07eccf5319e8881c816edf598ea.tar.bz2
matterbridge-msglm-c91bfd08d855d07eccf5319e8881c816edf598ea.zip
Add ability to procure avatars from the destination bridge (#1000)
* remote_avatar: add UseLocalAvatar * remote_avatar: make sure msg.Protocol is always set correctly * remote_avatars: support msg.Account * remote_avatar: add to matterbridge.toml.sample * remote_avatar: clarify something
Diffstat (limited to 'bridge/discord')
-rw-r--r--bridge/discord/discord.go21
1 files changed, 21 insertions, 0 deletions
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go
index e81d0783..e37208b7 100644
--- a/bridge/discord/discord.go
+++ b/bridge/discord/discord.go
@@ -381,6 +381,19 @@ func (b *Bdiscord) webhookSend(msg *config.Message, webhookID, token string) (*d
err error
)
+ // If avatar is unset, check if UseLocalAvatar contains the message's
+ // account or protocol, and if so, try to find a local avatar
+ if msg.Avatar == "" {
+ for _, val := range b.GetStringSlice("UseLocalAvatar") {
+ if msg.Protocol == val || msg.Account == val {
+ if avatar := b.findAvatar(msg); avatar != "" {
+ msg.Avatar = avatar
+ }
+ break
+ }
+ }
+ }
+
// WebhookParams can have either `Content` or `File`.
// We can't send empty messages.
@@ -430,3 +443,11 @@ func (b *Bdiscord) webhookSend(msg *config.Message, webhookID, token string) (*d
}
return res, err
}
+
+func (b *Bdiscord) findAvatar(m *config.Message) string {
+ member, err := b.getGuildMemberByNick(m.Username)
+ if err != nil {
+ return ""
+ }
+ return member.User.AvatarURL("")
+}