diff options
author | Qais Patankar <qaisjp@gmail.com> | 2019-07-15 02:53:09 +0900 |
---|---|---|
committer | Wim <wim@42.be> | 2019-07-14 19:53:09 +0200 |
commit | 5551f9d56f2270c58738d3d43b3f4ef82507a3b9 (patch) | |
tree | 1c39c430d7be90831c101f9039fe347bfad42552 /bridge/discord | |
parent | 1fb91c6316f86426d62d38562f957963a522cdd1 (diff) | |
download | matterbridge-msglm-5551f9d56f2270c58738d3d43b3f4ef82507a3b9.tar.gz matterbridge-msglm-5551f9d56f2270c58738d3d43b3f4ef82507a3b9.tar.bz2 matterbridge-msglm-5551f9d56f2270c58738d3d43b3f4ef82507a3b9.zip |
Fix discord channel & category name clash. #860 (#861)
Diffstat (limited to 'bridge/discord')
-rw-r--r-- | bridge/discord/discord.go | 8 | ||||
-rw-r--r-- | bridge/discord/helpers.go | 22 |
2 files changed, 24 insertions, 6 deletions
diff --git a/bridge/discord/discord.go b/bridge/discord/discord.go index 4c1c0f46..66c8134c 100644 --- a/bridge/discord/discord.go +++ b/bridge/discord/discord.go @@ -95,12 +95,14 @@ func (b *Bdiscord) Connect() error { b.channelsMutex.Lock() for _, guild := range guilds { if guild.Name == serverName || guild.ID == serverName { - b.channels, err = b.c.GuildChannels(guild.ID) - b.guildID = guild.ID - guildFound = true + var chans []*discordgo.Channel + chans, err = b.c.GuildChannels(guild.ID) if err != nil { break } + b.channels = filterChannelsByType(chans, discordgo.ChannelTypeGuildText, false) + b.guildID = guild.ID + guildFound = true } } b.channelsMutex.Unlock() diff --git a/bridge/discord/helpers.go b/bridge/discord/helpers.go index e150d192..5bf6931d 100644 --- a/bridge/discord/helpers.go +++ b/bridge/discord/helpers.go @@ -88,13 +88,13 @@ var ( func (b *Bdiscord) replaceChannelMentions(text string) string { replaceChannelMentionFunc := func(match string) string { - var err error channelID := match[2 : len(match)-1] - channelName := b.getChannelName(channelID) + // If we don't have the channel refresh our list. if channelName == "" { - b.channels, err = b.c.GuildChannels(b.guildID) + chans, err := b.c.GuildChannels(b.guildID) + b.channels = filterChannelsByType(chans, discordgo.ChannelTypeGuildCategory, true) if err != nil { return "#unknownchannel" } @@ -211,3 +211,19 @@ func (b *Bdiscord) webhookExecute(webhookID, token string, wait bool, data *disc return st, nil } + +func filterChannelsByType(chans []*discordgo.Channel, t discordgo.ChannelType, filterOut bool) []*discordgo.Channel { + cs := []*discordgo.Channel{} + for _, c := range chans { + keep := c.Type == t + if filterOut { + keep = c.Type != t + } + + if keep { + cs = append(cs, c) + } + } + return cs + +} |