Fix discord channel & category name clash. #860 (#861)

This commit is contained in:
Qais Patankar 2019-07-15 02:53:09 +09:00 committed by Wim
parent 1fb91c6316
commit 5551f9d56f
2 changed files with 24 additions and 6 deletions

View File

@ -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()

View File

@ -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
}