Add /away

master
C. McEnroe 2020-02-14 21:10:40 -05:00
parent 0d23f8f1b8
commit 8aa6dd86f6
4 changed files with 24 additions and 1 deletions

View File

@ -1,4 +1,4 @@
.Dd February 13, 2020
.Dd February 14, 2020
.Dt CATGIRL 1
.Os
.
@ -240,6 +240,8 @@ can be typed
.
.Ss Chat Commands
.Bl -tag -width Ds
.It Ic /away Op Ar message
Set or clear your away status.
.It Ic /join Ar channel
Join a channel.
.It Ic /list Op Ar channel

1
chat.h
View File

@ -131,6 +131,7 @@ void ircFormat(const char *format, ...)
void ircClose(void);
extern struct Replies {
size_t away;
size_t join;
size_t list;
size_t names;

View File

@ -110,6 +110,16 @@ static void commandNick(size_t id, char *params) {
ircFormat("NICK :%s\r\n", params);
}
static void commandAway(size_t id, char *params) {
(void)id;
if (params) {
ircFormat("AWAY :%s\r\n", params);
} else {
ircFormat("AWAY\r\n");
}
replies.away++;
}
static void commandTopic(size_t id, char *params) {
if (params) {
ircFormat("TOPIC %s :%s\r\n", idNames[id], params);
@ -235,6 +245,7 @@ static const struct Handler {
Command *fn;
bool restricted;
} Commands[] = {
{ "/away", .fn = commandAway },
{ "/close", .fn = commandClose },
{ "/copy", .fn = commandCopy, .restricted = true },
{ "/debug", .fn = commandDebug, .restricted = true },

View File

@ -549,6 +549,13 @@ static void handleReplyAway(struct Message *msg) {
);
}
static void handleReplyNowAway(struct Message *msg) {
require(msg, false, 2);
if (!replies.away) return;
uiFormat(Network, Warm, tagTime(msg), "%s", msg->params[1]);
replies.away--;
}
static bool isAction(struct Message *msg) {
if (strncmp(msg->params[1], "\1ACTION ", 8)) return false;
msg->params[1] += 8;
@ -675,6 +682,8 @@ static const struct Handler {
{ "005", handleReplyISupport },
{ "276", handleReplyWhoisGeneric },
{ "301", handleReplyAway },
{ "305", handleReplyNowAway },
{ "306", handleReplyNowAway },
{ "307", handleReplyWhoisGeneric },
{ "311", handleReplyWhoisUser },
{ "312", handleReplyWhoisServer },