From 80c2f3c775d7a7dd5a59068f1cefe55370f56529 Mon Sep 17 00:00:00 2001 From: dequis Date: Fri, 20 Nov 2015 12:33:34 -0300 Subject: 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. --- irc_send.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'irc_send.c') 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); + } +} + -- cgit v1.2.3