diff --git a/catgirl.1 b/catgirl.1 index 501163c..286d4f9 100644 --- a/catgirl.1 +++ b/catgirl.1 @@ -1,4 +1,4 @@ -.Dd March 25, 2020 +.Dd March 29, 2020 .Dt CATGIRL 1 .Os . @@ -330,6 +330,10 @@ Switch to window by number. .Bl -tag -width Ds .It Ic /ban Op Ar mask ... List or ban masks from the channel. +.It Ic /deop Ar nick ... +Revoke channel operator status from users. +.It Ic /devoice Ar nick ... +Revoke voice from users in the channel. .It Ic /except Op Ar mask ... List or add masks to the channel ban exception list. .It Ic /invex Op Ar mask ... @@ -342,12 +346,16 @@ In the .Sy window, show or set user modes. +.It Ic /op Ar nick ... +Grant users channel operator status. .It Ic /unban Ar mask ... Unban masks from the channel. .It Ic /unexcept Ar mask ... Remove masks from the channel ban exception list. .It Ic /uninvex Ar mask ... Remove masks from the channel invite list. +.It Ic /voice Ar nick ... +Grant users voice in the channel. .El . .Sh KEY BINDINGS diff --git a/command.c b/command.c index 7339574..4779a6a 100644 --- a/command.c +++ b/command.c @@ -206,6 +206,26 @@ static void channelListMode(uint id, char pm, char l, char *params) { ircFormat("MODE %s %c%.*s %s\r\n", idNames[id], pm, count, modes, params); } +static void commandOp(uint id, char *params) { + if (!params) return; + channelListMode(id, '+', 'o', params); +} + +static void commandDeop(uint id, char *params) { + if (!params) return; + channelListMode(id, '-', 'o', params); +} + +static void commandVoice(uint id, char *params) { + if (!params) return; + channelListMode(id, '+', 'v', params); +} + +static void commandDevoice(uint id, char *params) { + if (!params) return; + channelListMode(id, '-', 'v', params); +} + static void commandBan(uint id, char *params) { if (params) { channelListMode(id, '+', 'b', params); @@ -379,6 +399,8 @@ static const struct Handler { { "/copy", commandCopy, Restricted }, { "/cs", commandCS, 0 }, { "/debug", commandDebug, Restricted }, + { "/deop", commandDeop, 0 }, + { "/devoice", commandDevoice, 0 }, { "/except", commandExcept, 0 }, { "/exec", commandExec, Multiline | Restricted }, { "/help", commandHelp, 0 }, @@ -395,6 +417,7 @@ static const struct Handler { { "/nick", commandNick, 0 }, { "/notice", commandNotice, Multiline }, { "/ns", commandNS, 0 }, + { "/op", commandOp, 0 }, { "/open", commandOpen, Restricted }, { "/part", commandPart, 0 }, { "/query", commandQuery, Restricted }, @@ -405,6 +428,7 @@ static const struct Handler { { "/unban", commandUnban, 0 }, { "/unexcept", commandUnexcept, 0 }, { "/uninvex", commandUninvex, 0 }, + { "/voice", commandVoice, 0 }, { "/whois", commandWhois, 0 }, { "/window", commandWindow, 0 }, };