summary refs log tree commit diff
path: root/handle.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-02-20 01:52:58 -0500
committerJune McEnroe <june@causal.agency>2020-02-20 01:52:58 -0500
commit1b01045bf03522e6c57f544b454ce32583d7b2d2 (patch)
treece1f6dd5dfbbf4e541533d929d56a50f0f174064 /handle.c
parentAdd generic error reply handler (diff)
downloadcatgirl-1b01045bf03522e6c57f544b454ce32583d7b2d2.tar.gz
catgirl-1b01045bf03522e6c57f544b454ce32583d7b2d2.zip
Add handlers for user-in-channel errors
Diffstat (limited to 'handle.c')
-rw-r--r--handle.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/handle.c b/handle.c
index 61e3d50..23a6f48 100644
--- a/handle.c
+++ b/handle.c
@@ -367,6 +367,15 @@ static void handleQuit(struct Message *msg) {
 	completeRemove(None, msg->nick);
 }
 
+static void handleErrorUserNotInChannel(struct Message *msg) {
+	require(msg, false, 4);
+	uiFormat(
+		idFor(msg->params[2]), Cold, tagTime(msg),
+		"%s\tis not in \3%02d%s\3",
+		msg->params[1], hash(msg->params[2]), msg->params[2]
+	);
+}
+
 static void handleReplyNames(struct Message *msg) {
 	require(msg, false, 4);
 	uint id = idFor(msg->params[2]);
@@ -489,6 +498,17 @@ static void handleInvite(struct Message *msg) {
 	}
 }
 
+static void handleErrorUserOnChannel(struct Message *msg) {
+	require(msg, false, 4);
+	uint id = idFor(msg->params[2]);
+	uiFormat(
+		id, Cold, tagTime(msg),
+		"\3%02d%s\3 is already in \3%02d%s\3",
+		completeColor(id, msg->params[1]), msg->params[1],
+		hash(msg->params[2]), msg->params[2]
+	);
+}
+
 static void handleReplyList(struct Message *msg) {
 	require(msg, false, 4);
 	if (!replies.list) return;
@@ -772,6 +792,8 @@ static const struct Handler {
 	{ "379", handleReplyWhoisGeneric },
 	{ "432", handleErrorErroneousNickname },
 	{ "433", handleErrorNicknameInUse },
+	{ "441", handleErrorUserNotInChannel },
+	{ "443", handleErrorUserOnChannel },
 	{ "671", handleReplyWhoisGeneric },
 	{ "900", handleReplyLoggedIn },
 	{ "904", handleErrorSASLFail },