1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
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:
event["server"].set_own_nickname(new_nickname)
events.on("self.nick").call(server=event["server"],
new_nickname=new_nickname, old_nickname=old_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)
old_username = target.username
old_hostname = target.hostname
target.username = username
target.hostname = hostname
events.on("received.chghost").call(user=target, server=event["server"],
old_username=old_username, old_hostname=old_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"])
|