Skip to content

Commit 45f9f69

Browse files
committed
Add prasing of WHOIS and WHO replies to chan_track.py
1 parent d0734ad commit 45f9f69

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

plugins/chan_track.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -395,3 +395,51 @@ def on_away(conn, nick, irc_paramlist):
395395
reason = None
396396

397397
conn.memory["users"][nick].update(is_away=(reason is not None), away_message=reason)
398+
399+
400+
@hook.irc_raw('352')
401+
def on_who(conn, irc_paramlist):
402+
_, ident, host, server, nick, status, realname = irc_paramlist
403+
realname = realname.split(None, 1)[1]
404+
user = conn.memory["users"][nick]
405+
status = list(status)
406+
is_away = status.pop(0) == "G"
407+
is_oper = status[:1] == "*"
408+
user.update(
409+
ident=ident,
410+
host=host,
411+
server=server,
412+
realname=realname,
413+
is_away=is_away,
414+
is_oper=is_oper,
415+
)
416+
417+
418+
@hook.irc_raw('311')
419+
def on_whois_name(conn, irc_paramlist):
420+
_, nick, ident, host, _, realname = irc_paramlist
421+
conn.memory["users"][nick].update(ident=ident, host=host, realname=realname)
422+
423+
424+
@hook.irc_raw('330')
425+
def on_whois_acct(conn, irc_paramlist):
426+
_, nick, acct = irc_paramlist[:2]
427+
conn.memory["users"][nick]["account"] = acct
428+
429+
430+
@hook.irc_raw('301')
431+
def on_whois_away(conn, irc_paramlist):
432+
_, nick, msg = irc_paramlist
433+
conn.memory["users"][nick].update(is_away=True, away_message=msg)
434+
435+
436+
@hook.irc_raw('312')
437+
def on_whois_server(conn, irc_paramlist):
438+
_, nick, server, _ = irc_paramlist
439+
conn.memory["users"][nick].update(server=server)
440+
441+
442+
@hook.irc_raw('313')
443+
def on_whois_oper(conn, irc_paramlist):
444+
nick = irc_paramlist[1]
445+
conn.memory["users"][nick].update(is_oper=True)

0 commit comments

Comments
 (0)