diff --git a/irc/channel.go b/irc/channel.go index a95ebeba..7254eea2 100644 --- a/irc/channel.go +++ b/irc/channel.go @@ -166,7 +166,7 @@ func (channel *Channel) Part(client *Client, message string) { } channel.Quit(client) - if channel.IsEmpty() { + if !channel.flags[Persistent] && channel.IsEmpty() { channel.server.channels.Remove(channel) } } @@ -296,7 +296,7 @@ func (channel *Channel) applyMode(client *Client, change *ChannelModeChange) boo } client.RplEndOfMaskList(change.mode, channel) - case Moderated, NoOutside, OpOnlyTopic, Private: + case Moderated, NoOutside, OpOnlyTopic, Persistent, Private: return channel.applyModeFlag(client, change.mode, change.op) case Key: diff --git a/irc/constants.go b/irc/constants.go index a831c6d2..fbec13e2 100644 --- a/irc/constants.go +++ b/irc/constants.go @@ -223,6 +223,7 @@ const ( Moderated ChannelMode = 'm' // flag NoOutside ChannelMode = 'n' // flag OpOnlyTopic ChannelMode = 't' // flag + Persistent ChannelMode = 'P' // flag Private ChannelMode = 'p' // flag Quiet ChannelMode = 'q' // flag ReOp ChannelMode = 'r' // flag