diff options
author | Qais Patankar <qaisjp@gmail.com> | 2020-02-09 21:07:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-09 22:07:26 +0100 |
commit | c91bfd08d855d07eccf5319e8881c816edf598ea (patch) | |
tree | 886c0d59e048135ccb98290df6af874ab10a41c9 /bridge | |
parent | 49110a58729fcbecaffcb0202f9a9474d98c9cde (diff) | |
download | matterbridge-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')
-rw-r--r-- | bridge/config/config.go | 1 | ||||
-rw-r--r-- | bridge/discord/discord.go | 21 |
2 files changed, 22 insertions, 0 deletions
diff --git a/bridge/config/config.go b/bridge/config/config.go index 84e8f75f..2d20c11f 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -138,6 +138,7 @@ type Protocol struct { Topic string // zulip URL string // mattermost, slack // DEPRECATED UseAPI bool // mattermost, slack + UseLocalAvatar []string // discord UseSASL bool // IRC UseTLS bool // IRC UseDiscriminator bool // discord 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("") +} |