Add /whowas
parent
05fbcb41c9
commit
8b6a476c35
|
@ -1,4 +1,4 @@
|
||||||
.Dd December 29, 2020
|
.Dd December 30, 2020
|
||||||
.Dt CATGIRL 1
|
.Dt CATGIRL 1
|
||||||
.Os
|
.Os
|
||||||
.
|
.
|
||||||
|
@ -339,6 +339,8 @@ Press
|
||||||
twice to copy the current topic.
|
twice to copy the current topic.
|
||||||
.It Ic /whois Ar nick
|
.It Ic /whois Ar nick
|
||||||
Query information about a user.
|
Query information about a user.
|
||||||
|
.It Ic /whowas Ar nick
|
||||||
|
Query past information about a user.
|
||||||
.El
|
.El
|
||||||
.
|
.
|
||||||
.Ss UI Commands
|
.Ss UI Commands
|
||||||
|
|
1
chat.h
1
chat.h
|
@ -260,6 +260,7 @@ extern struct Replies {
|
||||||
uint topic;
|
uint topic;
|
||||||
uint who;
|
uint who;
|
||||||
uint whois;
|
uint whois;
|
||||||
|
uint whowas;
|
||||||
} replies;
|
} replies;
|
||||||
|
|
||||||
void handle(struct Message *msg);
|
void handle(struct Message *msg);
|
||||||
|
|
|
@ -316,6 +316,13 @@ static void commandWhois(uint id, char *params) {
|
||||||
replies.whois += count;
|
replies.whois += count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void commandWhowas(uint id, char *params) {
|
||||||
|
(void)id;
|
||||||
|
if (!params) return;
|
||||||
|
ircFormat("WHOWAS %s\r\n", params);
|
||||||
|
replies.whowas++;
|
||||||
|
}
|
||||||
|
|
||||||
static void commandNS(uint id, char *params) {
|
static void commandNS(uint id, char *params) {
|
||||||
(void)id;
|
(void)id;
|
||||||
if (params) ircFormat("PRIVMSG NickServ :%s\r\n", params);
|
if (params) ircFormat("PRIVMSG NickServ :%s\r\n", params);
|
||||||
|
@ -500,6 +507,7 @@ static const struct Handler {
|
||||||
{ "/uninvex", commandUninvex, 0 },
|
{ "/uninvex", commandUninvex, 0 },
|
||||||
{ "/voice", commandVoice, 0 },
|
{ "/voice", commandVoice, 0 },
|
||||||
{ "/whois", commandWhois, 0 },
|
{ "/whois", commandWhois, 0 },
|
||||||
|
{ "/whowas", commandWhowas, 0 },
|
||||||
{ "/window", commandWindow, 0 },
|
{ "/window", commandWindow, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
28
handle.c
28
handle.c
|
@ -1058,12 +1058,12 @@ static void handleReplyWhoisUser(struct Message *msg) {
|
||||||
|
|
||||||
static void handleReplyWhoisServer(struct Message *msg) {
|
static void handleReplyWhoisServer(struct Message *msg) {
|
||||||
require(msg, false, 4);
|
require(msg, false, 4);
|
||||||
if (!replies.whois) return;
|
if (!replies.whois && !replies.whowas) return;
|
||||||
uiFormat(
|
uiFormat(
|
||||||
Network, Warm, tagTime(msg),
|
Network, Warm, tagTime(msg),
|
||||||
"\3%02d%s\3\tis connected to %s (%s)",
|
"\3%02d%s\3\t%s connected to %s (%s)",
|
||||||
completeColor(Network, msg->params[1]), msg->params[1],
|
completeColor(Network, msg->params[1]), msg->params[1],
|
||||||
msg->params[2], msg->params[3]
|
(replies.whowas ? "was" : "is"), msg->params[2], msg->params[3]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1135,6 +1135,26 @@ static void handleReplyEndOfWhois(struct Message *msg) {
|
||||||
replies.whois--;
|
replies.whois--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void handleReplyWhowasUser(struct Message *msg) {
|
||||||
|
require(msg, false, 6);
|
||||||
|
if (!replies.whowas) return;
|
||||||
|
completeTouch(Network, msg->params[1], hash(msg->params[2]));
|
||||||
|
uiFormat(
|
||||||
|
Network, Warm, tagTime(msg),
|
||||||
|
"\3%02d%s\3\twas %s!%s@%s (%s)",
|
||||||
|
hash(msg->params[2]), msg->params[1],
|
||||||
|
msg->params[1], msg->params[2], msg->params[3], msg->params[5]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void handleReplyEndOfWhowas(struct Message *msg) {
|
||||||
|
require(msg, false, 2);
|
||||||
|
if (strcmp(msg->params[1], self.nick)) {
|
||||||
|
completeRemove(Network, msg->params[1]);
|
||||||
|
}
|
||||||
|
if (replies.whowas) replies.whowas--;
|
||||||
|
}
|
||||||
|
|
||||||
static void handleReplyAway(struct Message *msg) {
|
static void handleReplyAway(struct Message *msg) {
|
||||||
require(msg, false, 3);
|
require(msg, false, 3);
|
||||||
// Might be part of a WHOIS response.
|
// Might be part of a WHOIS response.
|
||||||
|
@ -1300,6 +1320,7 @@ static const struct Handler {
|
||||||
{ "311", handleReplyWhoisUser },
|
{ "311", handleReplyWhoisUser },
|
||||||
{ "312", handleReplyWhoisServer },
|
{ "312", handleReplyWhoisServer },
|
||||||
{ "313", handleReplyWhoisGeneric },
|
{ "313", handleReplyWhoisGeneric },
|
||||||
|
{ "314", handleReplyWhowasUser },
|
||||||
{ "315", handleReplyEndOfWho },
|
{ "315", handleReplyEndOfWho },
|
||||||
{ "317", handleReplyWhoisIdle },
|
{ "317", handleReplyWhoisIdle },
|
||||||
{ "318", handleReplyEndOfWhois },
|
{ "318", handleReplyEndOfWhois },
|
||||||
|
@ -1320,6 +1341,7 @@ static const struct Handler {
|
||||||
{ "366", handleReplyEndOfNames },
|
{ "366", handleReplyEndOfNames },
|
||||||
{ "367", handleReplyBanList },
|
{ "367", handleReplyBanList },
|
||||||
{ "368", handleReplyEndOfBanList },
|
{ "368", handleReplyEndOfBanList },
|
||||||
|
{ "369", handleReplyEndOfWhowas },
|
||||||
{ "372", handleReplyMOTD },
|
{ "372", handleReplyMOTD },
|
||||||
{ "378", handleReplyWhoisGeneric },
|
{ "378", handleReplyWhoisGeneric },
|
||||||
{ "379", handleReplyWhoisGeneric },
|
{ "379", handleReplyWhoisGeneric },
|
||||||
|
|
Loading…
Reference in New Issue