diff options
-rw-r--r-- | catgirl.1 | 4 | ||||
-rw-r--r-- | chat.h | 1 | ||||
-rw-r--r-- | command.c | 7 | ||||
-rw-r--r-- | handle.c | 14 |
4 files changed, 21 insertions, 5 deletions
@@ -1,4 +1,4 @@ -.Dd September 6, 2020 +.Dd September 30, 2020 .Dt CATGIRL 1 .Os . @@ -292,6 +292,8 @@ Change nicknames. Send a notice. .It Ic /ns Ar command Send a command to NickServ. +.It Ic /ops +List channel operators. .It Ic /part Op Ar message Leave the channel. .It Ic /query Ar nick @@ -246,6 +246,7 @@ extern struct Replies { uint list; uint mode; uint names; + uint ops; uint topic; uint whois; } replies; @@ -174,6 +174,12 @@ static void commandNames(uint id, char *params) { replies.names++; } +static void commandOps(uint id, char *params) { + (void)params; + ircFormat("NAMES %s\r\n", idNames[id]); + replies.ops++; +} + static void commandInvite(uint id, char *params) { if (!params) return; char *nick = strsep(¶ms, " "); @@ -468,6 +474,7 @@ static const struct Handler { { "/o", commandOpen, Restricted }, { "/op", commandOp, 0 }, { "/open", commandOpen, Restricted }, + { "/ops", commandOps, 0 }, { "/part", commandPart, 0 }, { "/query", commandQuery, Restricted }, { "/quit", commandQuit, 0 }, @@ -499,20 +499,26 @@ static void handleReplyNames(struct Message *msg) { char *user = strsep(&name, "@"); enum Color color = (user ? hash(user) : Default); completeAdd(id, nick, color); - if (!replies.names) continue; + if (replies.ops && (prefixes == nick || prefixes[0] == '+')) continue; + if (!replies.ops && !replies.names) continue; catf(&cat, "%s\3%02d%s\3", (buf[0] ? ", " : ""), color, prefixes); } - if (!replies.names) return; + if (!cat.len) return; uiFormat( id, Cold, tagTime(msg), - "In \3%02d%s\3 are %s", + "%s \3%02d%s\3 are %s", + (replies.ops ? "The operators of" : "In"), hash(msg->params[2]), msg->params[2], buf ); } static void handleReplyEndOfNames(struct Message *msg) { (void)msg; - if (replies.names) replies.names--; + if (replies.ops) { + replies.ops--; + } else if (replies.names) { + replies.names--; + } } static void handleReplyNoTopic(struct Message *msg) { |