From 6f1bc9896bc43e142a70218c396ff2448010aba4 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Fri, 5 Feb 2021 11:02:31 -0500 Subject: [PATCH] fix #1523 Let halfops change the channel topic --- docs/MANUAL.md | 10 +++++----- irc/channel.go | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/MANUAL.md b/docs/MANUAL.md index d3bba1f3..51039c3e 100644 --- a/docs/MANUAL.md +++ b/docs/MANUAL.md @@ -820,31 +820,31 @@ Users on a channel can have different permission levels, which are represented b This prefix means that the given user is the founder of the channel. For example, if `~dan` is on a channel it means that **dan** founded the channel. The 'founder' prefix only appears on channels that are registered. -Founders are able to do anything, and have complete administrative control of the channel. +Founders have complete administrative control of the channel. They can take any action and modify anyone else's privileges. ### +a (&) - Admin This prefix means that the given user is an admin on the channel. For example, if `&tom` is on a channel, then **tom** is an admin on it. The 'admin' prefix only appears on channels that are registered. -Admins can do anything channel operators can do, and they also cannot get kicked by other chanops or admins. +Admins have the same moderation privileges as channel operators (see below), but they can't be kicked or demoted by other admins or channel operators. ### +o (@) - Channel Operator This prefix means that the given user is an operator on the channel (chanop, for short). For example, if `@ruby` is on a channel, then **ruby** is an op. -Chanops are the regular type of channel moderators. They can set the topic, change modes, ban/kick users, etc. +Chanops are the default type of channel moderators. They can change the channel modes, ban/kick users, and add or remove chanop (or lower) privileges from users. ### +h (%) - Halfop This prefix means that the given user is a halfop on the channel (half-operator). For example, if `%twi` is on a channel, then **twi** is a halfop. -Halfops can do some of what channel operators can do, and can't do other things. They can help moderate a channel. +Halfops have some moderation privileges: they can kick users (but not ban them), change the channel topic, and grant voice privileges (see below). ### +v (+) - Voice This prefix means that the given user is 'voiced' on the channel. For example, if `+faust` is on a channel, then **faust** is voiced on that channel. -Voiced users can speak when the channel has `+m - Moderated` mode enabled. They get no other special privs or any moderation abilities. +Voiced users can speak when the channel has `+m` (moderated) mode enabled. They get no other special privileges or any moderation abilities. -------------------------------------------------------------------------------------------- diff --git a/irc/channel.go b/irc/channel.go index 583e87d8..8b5bb14f 100644 --- a/irc/channel.go +++ b/irc/channel.go @@ -1257,7 +1257,7 @@ func (channel *Channel) SetTopic(client *Client, topic string, rb *ResponseBuffe return } - if channel.flags.HasMode(modes.OpOnlyTopic) && !channel.ClientIsAtLeast(client, modes.ChannelOperator) { + if channel.flags.HasMode(modes.OpOnlyTopic) && !channel.ClientIsAtLeast(client, modes.Halfop) { rb.Add(nil, client.server.name, ERR_CHANOPRIVSNEEDED, client.Nick(), channel.Name(), client.t("You're not a channel operator")) return }