aboutsummaryrefslogtreecommitdiffstats
path: root/irc_send.c
diff options
context:
space:
mode:
authordequis <dx@dxzone.com.ar>2015-11-20 12:33:34 -0300
committerdequis <dx@dxzone.com.ar>2015-11-20 12:51:45 -0300
commit80c2f3c775d7a7dd5a59068f1cefe55370f56529 (patch)
tree1bfdc0ed361aa8fcbdb6c6ea1c5e5af0b0920112 /irc_send.c
parent0d8a9bb00abe74164cd643e003f4285a299d62a5 (diff)
IRCv3 away-notify capability
Neat lightweight notifications of the awayness of contacts. In practice, this means weechat/hexchat users can see away people in their nick list and change show_users to 'online,special,away' to avoid the mode spam completely. These are also sent on online/offline changes, since offline_user_quits can be turned off, and you'd need something when they come back.
Diffstat (limited to 'irc_send.c')
-rw-r--r--irc_send.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/irc_send.c b/irc_send.c
index 86975605..af432d4d 100644
--- a/irc_send.c
+++ b/irc_send.c
@@ -469,3 +469,27 @@ void irc_send_cap(irc_t *irc, char *subcommand, char *body)
irc_write(irc, ":%s CAP %s %s :%s", irc->root->host, nick, subcommand, body);
}
+
+void irc_send_away_notify(irc_user_t *iu)
+{
+ bee_user_t *bu = iu->bu;
+
+ if (!bu) {
+ return;
+ }
+
+ if (bu->flags & BEE_USER_AWAY || !(bu->flags & BEE_USER_ONLINE)) {
+ char *msg1, *msg2;
+
+ get_status_message(bu, &msg1, &msg2);
+
+ if (msg2) {
+ irc_write(iu->irc, ":%s!%s@%s AWAY :%s (%s)", iu->nick, iu->user, iu->host, msg1, msg2);
+ } else {
+ irc_write(iu->irc, ":%s!%s@%s AWAY :%s", iu->nick, iu->user, iu->host, msg1);
+ }
+ } else {
+ irc_write(iu->irc, ":%s!%s@%s AWAY", iu->nick, iu->user, iu->host);
+ }
+}
+