10
10
11
11
12
12
# Auto-join on Invite (Configurable, defaults to True)
13
- @hook .irc_raw (' INVITE' )
13
+ @hook .irc_raw (" INVITE" )
14
14
async def invite (irc_paramlist , conn ):
15
15
"""
16
16
:type irc_paramlist: list[str]
17
17
:type conn: cloudbot.client.Client
18
18
"""
19
- invite_join = conn .config .get (' invite_join' , True )
19
+ invite_join = conn .config .get (" invite_join" , True )
20
20
chan = irc_paramlist [- 1 ]
21
21
22
22
if invite_join :
23
23
conn .join (chan )
24
24
25
25
26
- @hook .irc_raw (' JOIN' )
26
+ @hook .irc_raw (" JOIN" )
27
27
def on_join (chan , conn , nick ):
28
28
if conn .nick .casefold () == nick .casefold ():
29
29
conn .cmd ("MODE" , chan )
30
30
31
31
32
- @hook .irc_raw (' 324' )
32
+ @hook .irc_raw (" 324" )
33
33
def check_mode (irc_paramlist , conn , message ):
34
34
# message(", ".join(irc_paramlist), "bloodygonzo")
35
35
mode = irc_paramlist [2 ]
36
- require_reg = conn .config .get (' require_registered_channels' , False )
36
+ require_reg = conn .config .get (" require_registered_channels" , False )
37
37
if "r" not in mode and require_reg :
38
38
message ("I do not stay in unregistered channels" , irc_paramlist [1 ])
39
39
conn .part (irc_paramlist [1 ])
40
40
41
41
42
- @hook .irc_raw (' MODE' )
42
+ @hook .irc_raw (" MODE" )
43
43
def on_mode_change (conn , irc_paramlist , message ):
44
- require_reg = conn .config .get (' require_registered_channels' , False )
44
+ require_reg = conn .config .get (" require_registered_channels" , False )
45
45
chan = irc_paramlist [0 ]
46
46
modes = irc_paramlist [1 ]
47
47
new_modes = {}
48
48
adding = True
49
49
for c in modes :
50
- if c == '+' :
50
+ if c == "+" :
51
51
adding = True
52
- elif c == '-' :
52
+ elif c == "-" :
53
53
adding = False
54
54
else :
55
55
new_modes [c ] = adding
56
56
57
- if chan [0 ] == '#' and require_reg and not new_modes .get ("r" , True ):
57
+ if chan [0 ] == "#" and require_reg and not new_modes .get ("r" , True ):
58
58
message ("I do not stay in unregistered channels" , chan )
59
59
conn .part (chan )
60
60
61
61
62
62
# Identify to NickServ (or other service)
63
- @hook .irc_raw (' 004' )
63
+ @hook .irc_raw (" 004" )
64
64
async def onjoin (conn , bot ):
65
65
"""
66
66
:type conn: cloudbot.clients.clients.IrcClient
67
67
:type bot: cloudbot.bot.CloudBot
68
68
"""
69
69
logger .info ("[%s|misc] Bot is sending join commands for network." , conn .name )
70
- nickserv = conn .config .get (' nickserv' )
70
+ nickserv = conn .config .get (" nickserv" )
71
71
if nickserv and nickserv .get ("enabled" , True ):
72
72
logger .info ("[%s|misc] Bot is authenticating with NickServ." , conn .name )
73
- nickserv_password = nickserv .get (' nickserv_password' , '' )
74
- nickserv_name = nickserv .get (' nickserv_name' , ' nickserv' )
75
- nickserv_account_name = nickserv .get (' nickserv_user' , '' )
76
- nickserv_command = nickserv .get (' nickserv_command' , ' IDENTIFY' )
73
+ nickserv_password = nickserv .get (" nickserv_password" , "" )
74
+ nickserv_name = nickserv .get (" nickserv_name" , " nickserv" )
75
+ nickserv_account_name = nickserv .get (" nickserv_user" , "" )
76
+ nickserv_command = nickserv .get (" nickserv_command" , " IDENTIFY" )
77
77
if nickserv_password :
78
- if "censored_strings" in bot .config and nickserv_password in bot .config ['censored_strings' ]:
79
- bot .config ['censored_strings' ].remove (nickserv_password )
78
+ if (
79
+ "censored_strings" in bot .config
80
+ and nickserv_password in bot .config ["censored_strings" ]
81
+ ):
82
+ bot .config ["censored_strings" ].remove (nickserv_password )
80
83
if nickserv_account_name :
81
- conn .message (nickserv_name , "{} {} {}" .format (nickserv_command ,
82
- nickserv_account_name , nickserv_password ))
84
+ conn .message (
85
+ nickserv_name ,
86
+ "{} {} {}" .format (
87
+ nickserv_command , nickserv_account_name , nickserv_password
88
+ ),
89
+ )
83
90
else :
84
- conn .message (nickserv_name , "{} {}" .format (nickserv_command , nickserv_password ))
91
+ conn .message (
92
+ nickserv_name , "{} {}" .format (nickserv_command , nickserv_password )
93
+ )
85
94
if "censored_strings" in bot .config :
86
- bot .config [' censored_strings' ].append (nickserv_password )
95
+ bot .config [" censored_strings" ].append (nickserv_password )
87
96
await asyncio .sleep (1 )
88
97
89
98
# Should we oper up?
90
- oper_pw = conn .config .get (' oper_pw' , False )
91
- oper_user = conn .config .get (' oper_user' , False )
99
+ oper_pw = conn .config .get (" oper_pw" , False )
100
+ oper_user = conn .config .get (" oper_user" , False )
92
101
if oper_pw and oper_user :
93
102
out = "OPER {} {}" .format (oper_user , oper_pw )
94
103
conn .send (out )
95
104
# Make sure we finish oper-ing before continuing
96
105
await asyncio .sleep (1 )
97
106
98
107
# Set bot modes
99
- mode = conn .config .get (' mode' )
108
+ mode = conn .config .get (" mode" )
100
109
if mode :
101
110
logger .info ("[%s|misc] Bot is setting mode on itself: %s" , conn .name , mode )
102
- conn .cmd (' MODE' , conn .nick , mode )
111
+ conn .cmd (" MODE" , conn .nick , mode )
103
112
104
- log_chan = conn .config .get (' log_channel' )
113
+ log_chan = conn .config .get (" log_channel" )
105
114
if log_chan :
106
115
conn .join (log_chan )
107
116
108
117
conn .ready = True
109
- logger .info ("[%s|misc] Bot has finished sending join commands for network." , conn .name )
118
+ logger .info (
119
+ "[%s|misc] Bot has finished sending join commands for network." , conn .name
120
+ )
110
121
111
122
112
- @hook .irc_raw (' 376' )
123
+ @hook .irc_raw (" 376" )
113
124
async def do_joins (conn ):
114
125
"""
115
126
Join config defined channels
@@ -122,34 +133,51 @@ async def do_joins(conn):
122
133
chans = copy (conn .config_channels )
123
134
124
135
# Join config-defined channels
125
- join_throttle = conn .config .get (' join_throttle' , 0.4 )
136
+ join_throttle = conn .config .get (" join_throttle" , 0.4 )
126
137
logger .info ("[%s|misc] Bot is joining channels for network." , conn .name )
127
138
for channel in chans :
128
- conn .join (channel )
139
+ if isinstance (channel , dict ):
140
+ chan = channel ["name" ]
141
+ key = channel .get ("key" )
142
+ elif isinstance (channel , list ):
143
+ chan = channel [0 ]
144
+ if len (channel ) > 1 :
145
+ key = channel [1 ]
146
+ else :
147
+ key = None
148
+ elif " " in channel :
149
+ chan , key = channel .split (None , 1 )
150
+ else :
151
+ chan = channel
152
+ key = None
153
+
154
+ conn .join (chan , key )
129
155
await asyncio .sleep (join_throttle )
130
156
131
157
132
- @hook .irc_raw (' 004' )
158
+ @hook .irc_raw (" 004" )
133
159
async def keep_alive (conn ):
134
160
"""
135
161
:type conn: cloudbot.clients.clients.IrcClient
136
162
"""
137
- keepalive = conn .config .get (' keep_alive' , False )
163
+ keepalive = conn .config .get (" keep_alive" , False )
138
164
if keepalive :
139
165
while True :
140
- conn .cmd (' PING' , conn .nick )
166
+ conn .cmd (" PING" , conn .nick )
141
167
await asyncio .sleep (60 )
142
168
143
169
144
- @hook .irc_raw (' 433' )
170
+ @hook .irc_raw (" 433" )
145
171
def on_nick_in_use (conn , irc_paramlist ):
146
- conn .nick = irc_paramlist [1 ] + '_'
172
+ conn .nick = irc_paramlist [1 ] + "_"
147
173
conn .cmd ("NICK" , conn .nick )
148
174
149
175
150
- @hook .irc_raw (' 432' , singlethread = True )
176
+ @hook .irc_raw (" 432" , singlethread = True )
151
177
async def on_invalid_nick (conn ):
152
- nick = conn .config [' nick' ]
178
+ nick = conn .config [" nick" ]
153
179
conn .nick = nick
154
180
conn .cmd ("NICK" , conn .nick )
155
- await asyncio .sleep (30 ) # Just in case, we make sure to wait at least 30 seconds between sending this
181
+ await asyncio .sleep (
182
+ 30
183
+ ) # Just in case, we make sure to wait at least 30 seconds between sending this
0 commit comments