diff options
| author | 2019-12-10 05:27:35 +0000 | |
|---|---|---|
| committer | 2019-12-10 05:27:35 +0000 | |
| commit | 638eee0d685c06d258cb55287204ca97bca7c344 (patch) | |
| tree | 33442439317ae2846f1efb7674b7a3758c8990a1 /src/core_modules/line_handler/user.py | |
| parent | move sys.exit() codes to an enum in utils.consts (diff) | |
| signature | ||
move core modules to src/core_modules, make them uneffected by white/black list
Diffstat (limited to 'src/core_modules/line_handler/user.py')
| -rw-r--r-- | src/core_modules/line_handler/user.py | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/core_modules/line_handler/user.py b/src/core_modules/line_handler/user.py new file mode 100644 index 00000000..d1592cd7 --- /dev/null +++ b/src/core_modules/line_handler/user.py @@ -0,0 +1,102 @@ +from src import utils + +def handle_311(event): + nickname = event["line"].args[1] + username = event["line"].args[2] + hostname = event["line"].args[3] + realname = event["line"].args[4] + + if event["server"].is_own_nickname(nickname): + event["server"].username = username + event["server"].hostname = hostname + event["server"].realname = realname + + target = event["server"].get_user(nickname) + target.username = username + target.hostname = hostname + target.realname = realname + +def quit(events, event): + nickname = None + if event["direction"] == utils.Direction.Recv: + nickname = event["line"].source.nickname + reason = event["line"].args.get(0) + + if event["direction"] == utils.Direction.Recv: + nickname = event["line"].source.nickname + if (not event["server"].is_own_nickname(nickname) and + not event["line"].source.hostmask == "*"): + user = event["server"].get_user(nickname) + events.on("received.quit").call(reason=reason, user=user, + server=event["server"]) + event["server"].remove_user(user) + else: + event["server"].disconnect() + else: + events.on("send.quit").call(reason=reason, server=event["server"]) + +def nick(events, event): + new_nickname = event["line"].args.get(0) + user = event["server"].get_user(event["line"].source.nickname) + old_nickname = user.nickname + user.set_nickname(new_nickname) + event["server"].change_user_nickname(old_nickname, new_nickname) + + if not event["server"].is_own_nickname(event["line"].source.nickname): + events.on("received.nick").call(new_nickname=new_nickname, + old_nickname=old_nickname, user=user, server=event["server"]) + else: + events.on("self.nick").call(server=event["server"], + new_nickname=new_nickname, old_nickname=old_nickname) + event["server"].set_own_nickname(new_nickname) + +def away(events, event): + user = event["server"].get_user(event["line"].source.nickname) + message = event["line"].args.get(0) + if message: + user.away = True + user.away_message = message + events.on("received.away.on").call(user=user, server=event["server"], + message=message) + else: + user.away = False + user.away_message = None + events.on("received.away.off").call(user=user, server=event["server"]) + +def chghost(events, event): + nickname = event["line"].source.nickname + username = event["line"].args[0] + hostname = event["line"].args[1] + + if event["server"].is_own_nickname(nickname): + event["server"].username = username + event["server"].hostname = hostname + + target = event["server"].get_user(nickname) + events.on("received.chghost").call(user=target, server=event["server"], + username=username, hostname=hostname) + + target.username = username + target.hostname = hostname + +def setname(event): + nickname = event["line"].source.nickname + realname = event["line"].args[0] + + user = event["server"].get_user(nickname) + user.realname = realname + + if event["server"].is_own_nickname(nickname): + event["server"].realname = realname + +def account(events, event): + user = event["server"].get_user(event["line"].source.nickname) + + if not event["line"].args[0] == "*": + user.account = event["line"].args[0] + events.on("received.account.login").call(user=user, + server=event["server"], account=event["line"].args[0]) + else: + user.account = None + events.on("received.account.logout").call(user=user, + server=event["server"]) |
