aboutsummaryrefslogtreecommitdiff
path: root/src/core_modules/line_handler/user.py
diff options
context:
space:
mode:
authorGravatar jesopo2019-12-10 05:27:35 +0000
committerGravatar jesopo2019-12-10 05:27:35 +0000
commit638eee0d685c06d258cb55287204ca97bca7c344 (patch)
tree33442439317ae2846f1efb7674b7a3758c8990a1 /src/core_modules/line_handler/user.py
parentmove 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.py102
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"])