Add /op, /deop, /voice, /devoice

This collides with using /o for /open which I'm sad about, but I think
these commands should exist...
master
C. McEnroe 2020-03-29 12:43:53 -04:00
parent bb2f3c7a01
commit ebbb5ad4d2
2 changed files with 33 additions and 1 deletions

View File

@ -1,4 +1,4 @@
.Dd March 25, 2020 .Dd March 29, 2020
.Dt CATGIRL 1 .Dt CATGIRL 1
.Os .Os
. .
@ -330,6 +330,10 @@ Switch to window by number.
.Bl -tag -width Ds .Bl -tag -width Ds
.It Ic /ban Op Ar mask ... .It Ic /ban Op Ar mask ...
List or ban masks from the channel. 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 ... .It Ic /except Op Ar mask ...
List or add masks to the channel ban exception list. List or add masks to the channel ban exception list.
.It Ic /invex Op Ar mask ... .It Ic /invex Op Ar mask ...
@ -342,12 +346,16 @@ In the
.Sy <network> .Sy <network>
window, window,
show or set user modes. show or set user modes.
.It Ic /op Ar nick ...
Grant users channel operator status.
.It Ic /unban Ar mask ... .It Ic /unban Ar mask ...
Unban masks from the channel. Unban masks from the channel.
.It Ic /unexcept Ar mask ... .It Ic /unexcept Ar mask ...
Remove masks from the channel ban exception list. Remove masks from the channel ban exception list.
.It Ic /uninvex Ar mask ... .It Ic /uninvex Ar mask ...
Remove masks from the channel invite list. Remove masks from the channel invite list.
.It Ic /voice Ar nick ...
Grant users voice in the channel.
.El .El
. .
.Sh KEY BINDINGS .Sh KEY BINDINGS

View File

@ -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); 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) { static void commandBan(uint id, char *params) {
if (params) { if (params) {
channelListMode(id, '+', 'b', params); channelListMode(id, '+', 'b', params);
@ -379,6 +399,8 @@ static const struct Handler {
{ "/copy", commandCopy, Restricted }, { "/copy", commandCopy, Restricted },
{ "/cs", commandCS, 0 }, { "/cs", commandCS, 0 },
{ "/debug", commandDebug, Restricted }, { "/debug", commandDebug, Restricted },
{ "/deop", commandDeop, 0 },
{ "/devoice", commandDevoice, 0 },
{ "/except", commandExcept, 0 }, { "/except", commandExcept, 0 },
{ "/exec", commandExec, Multiline | Restricted }, { "/exec", commandExec, Multiline | Restricted },
{ "/help", commandHelp, 0 }, { "/help", commandHelp, 0 },
@ -395,6 +417,7 @@ static const struct Handler {
{ "/nick", commandNick, 0 }, { "/nick", commandNick, 0 },
{ "/notice", commandNotice, Multiline }, { "/notice", commandNotice, Multiline },
{ "/ns", commandNS, 0 }, { "/ns", commandNS, 0 },
{ "/op", commandOp, 0 },
{ "/open", commandOpen, Restricted }, { "/open", commandOpen, Restricted },
{ "/part", commandPart, 0 }, { "/part", commandPart, 0 },
{ "/query", commandQuery, Restricted }, { "/query", commandQuery, Restricted },
@ -405,6 +428,7 @@ static const struct Handler {
{ "/unban", commandUnban, 0 }, { "/unban", commandUnban, 0 },
{ "/unexcept", commandUnexcept, 0 }, { "/unexcept", commandUnexcept, 0 },
{ "/uninvex", commandUninvex, 0 }, { "/uninvex", commandUninvex, 0 },
{ "/voice", commandVoice, 0 },
{ "/whois", commandWhois, 0 }, { "/whois", commandWhois, 0 },
{ "/window", commandWindow, 0 }, { "/window", commandWindow, 0 },
}; };