diff options
author | Wim <wim@42.be> | 2020-03-21 21:27:17 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-21 21:27:17 +0100 |
commit | 281016a5014146387e38d268aa271d539fd562e8 (patch) | |
tree | ead89e88d5d22f24eab80bd6192570cb66b2b824 /bridge | |
parent | d4acdf2f896f46e78916ba34b3cb942e6b677d7b (diff) | |
download | matterbridge-msglm-281016a5014146387e38d268aa271d539fd562e8.tar.gz matterbridge-msglm-281016a5014146387e38d268aa271d539fd562e8.tar.bz2 matterbridge-msglm-281016a5014146387e38d268aa271d539fd562e8.zip |
Fix duplicate separator on empty description/url (discord). Fixes #1008 (#1035)
Make this work for all possible cases.
Add tests
Diffstat (limited to 'bridge')
-rw-r--r-- | bridge/discord/handlers.go | 32 | ||||
-rw-r--r-- | bridge/discord/handlers_test.go | 58 |
2 files changed, 89 insertions, 1 deletions
diff --git a/bridge/discord/handlers.go b/bridge/discord/handlers.go index 2313390e..1ce402c5 100644 --- a/bridge/discord/handlers.go +++ b/bridge/discord/handlers.go @@ -103,7 +103,7 @@ func (b *Bdiscord) messageCreate(s *discordgo.Session, m *discordgo.MessageCreat // if we have embedded content add it to text if b.GetBool("ShowEmbeds") && m.Message.Embeds != nil { for _, embed := range m.Message.Embeds { - rmsg.Text = rmsg.Text + "embed: " + embed.Title + " - " + embed.Description + " - " + embed.URL + "\n" + rmsg.Text += handleEmbed(embed) } } @@ -192,3 +192,33 @@ func (b *Bdiscord) memberRemove(s *discordgo.Session, m *discordgo.GuildMemberRe b.Log.Debugf("<= Message is %#v", rmsg) b.Remote <- rmsg } + +func handleEmbed(embed *discordgo.MessageEmbed) string { + var t []string + var result string + + t = append(t, embed.Title) + t = append(t, embed.Description) + t = append(t, embed.URL) + + i := 0 + for _, e := range t { + if e == "" { + continue + } + + i++ + if i == 1 { + result += "embed: " + e + continue + } + + result += " - " + e + } + + if result != "" { + result += "\n" + } + + return result +} diff --git a/bridge/discord/handlers_test.go b/bridge/discord/handlers_test.go new file mode 100644 index 00000000..af821ad0 --- /dev/null +++ b/bridge/discord/handlers_test.go @@ -0,0 +1,58 @@ +package bdiscord + +import ( + "testing" + + "github.com/matterbridge/discordgo" + "github.com/stretchr/testify/assert" +) + +func TestHandleEmbed(t *testing.T) { + testcases := map[string]struct { + embed *discordgo.MessageEmbed + result string + }{ + "allempty": { + embed: &discordgo.MessageEmbed{}, + result: "", + }, + "one": { + embed: &discordgo.MessageEmbed{ + Title: "blah", + }, + result: "embed: blah\n", + }, + "two": { + embed: &discordgo.MessageEmbed{ + Title: "blah", + Description: "blah2", + }, + result: "embed: blah - blah2\n", + }, + "three": { + embed: &discordgo.MessageEmbed{ + Title: "blah", + Description: "blah2", + URL: "blah3", + }, + result: "embed: blah - blah2 - blah3\n", + }, + "twob": { + embed: &discordgo.MessageEmbed{ + Description: "blah2", + URL: "blah3", + }, + result: "embed: blah2 - blah3\n", + }, + "oneb": { + embed: &discordgo.MessageEmbed{ + URL: "blah3", + }, + result: "embed: blah3\n", + }, + } + + for name, tc := range testcases { + assert.Equalf(t, tc.result, handleEmbed(tc.embed), "Testcases %s", name) + } +} |