44from src import IRCLine , ModuleManager , utils
55
66class Module (ModuleManager .BaseModule ):
7- @utils .hook ("received.command.nick" , min_args = 1 )
7+ @utils .hook ("received.command.nick" )
8+ @utils .kwarg ("help" , "Change my nickname" )
9+ @utils .kwarg ("permission" , "changenickname" )
10+ @utils .spec ("!<nickname>word" )
811 def change_nickname (self , event ):
9- """
10- :help: Change my nickname
11- :usage: <nickname>
12- :permission: changenickname
13- """
14- nickname = event ["args_split" ][0 ]
15- event ["server" ].send_nick (nickname )
16-
17- @utils .hook ("received.command.raw" , min_args = 1 )
12+ event ["server" ].send_nick (event ["spec" ][0 ])
13+
14+ @utils .hook ("received.command.raw" )
15+ @utils .kwarg ("help" , "Send a line of raw IRC data" )
16+ @utils .kwarg ("permission" , "raw" )
17+ @utils .spec ("!<line>string" )
1818 def raw (self , event ):
19- """
20- :help: Send a line of raw IRC data
21- :usage: <raw line>
22- :permission: raw
23- """
24- if IRCLine .is_human (event ["args" ]):
25- line = IRCLine .parse_human (event ["args" ])
19+ if IRCLine .is_human (event ["spec" ][0 ]):
20+ line = IRCLine .parse_human (event ["spec" ][0 ])
2621 else :
27- line = IRCLine .parse_line (event ["args" ])
22+ line = IRCLine .parse_line (event ["spec" ][ 0 ])
2823 line = event ["server" ].send (line )
2924
3025 if not line == None :
@@ -34,22 +29,12 @@ def raw(self, event):
3429
3530 @utils .hook ("received.command.part" )
3631 @utils .kwarg ("help" , "Part from the current or given channel" )
37- @utils .kwarg ("usage" , "[channel]" )
32+ @utils .kwarg ("permission" , "part" )
33+ @utils .kwarg ("require_mode" , "high" )
34+ @utils .kwarg ("require_access" , "high,part" )
35+ @utils .spec ("!r~channel" )
3836 def part (self , event ):
39- check = utils .Check ("permission" , "part" )
40-
41- if event ["args" ]:
42- target = event ["args_split" ][0 ]
43- elif event ["is_channel" ]:
44- target = event ["target" ].name
45- check |= utils .Check ("channel-mode" , "high" )
46- check |= utils .Check ("channel-access" , "high,part" )
47- else :
48- event ["stderr" ].write ("No channel provided" )
49-
50- event ["check_assert" ](check )
51-
52- event ["server" ].send_part (target )
37+ event ["server" ].send_part (event ["spec" ][0 ].name )
5338
5439 def _id_from_alias (self , alias ):
5540 return self .bot .database .servers .get_by_alias (alias )
@@ -63,16 +48,12 @@ def _both_from_alias(self, alias):
6348 return id , self .bot .get_server_by_id (id )
6449
6550 @utils .hook ("received.command.reconnect" )
51+ @utils .kwarg ("help" , "Reconnect to the current, or provided, server" )
52+ @utils .kwarg ("permission" , "reconnect" )
53+ @utils .spec ("?<server>word" )
6654 def reconnect (self , event ):
67- """
68- :help: Reconnect to the current network
69- :permission: reconnect
70- """
71- server = event ["server" ]
72- alias = str (event ["server" ])
73- if event ["args" ]:
74- alias = event ["args_split" ][0 ]
75- server = self ._server_from_alias (alias )
55+ alias = event ["spec" ][0 ] or str (event ["server" ])
56+ server = self ._server_from_alias (alias )
7657
7758 if server :
7859 line = server .send_quit ("Reconnecting" )
@@ -84,13 +65,11 @@ def reconnect(self, event):
8465 event ["stdout" ].write ("Not connected to %s" % alias )
8566
8667 @utils .hook ("received.command.connect" , min_args = 1 )
68+ @utils .kwarg ("help" , "Connect to a given server" )
69+ @utils .kwarg ("permission" , "connect" )
70+ @utils .spec ("!<server>word" )
8771 def connect (self , event ):
88- """
89- :help: Connect to a network
90- :usage: <server id>
91- :permission: connect
92- """
93- alias = event ["args_split" ][0 ]
72+ alias = event ["spec" ][0 ]
9473 server = self ._server_from_alias (alias )
9574 if server :
9675 raise utils .EventError ("Already connected to %s" % str (server ))
@@ -99,21 +78,14 @@ def connect(self, event):
9978 event ["stdout" ].write ("Connecting to %s" % str (server ))
10079
10180 @utils .hook ("received.command.disconnect" )
81+ @utils .kwarg ("help" , "Disconnect from the current or provided server" )
82+ @utils .kwarg ("permission" , "disconnect" )
83+ @utils .spec ("?<server>word" )
10284 def disconnect (self , event ):
103- """
104- :help: Disconnect from a server
105- :usage: [server id]
106- :permission: disconnect
107- """
108- server = event ["server" ]
109- id = - 1
110- alias = str (event ["server" ])
111- if event ["args" ]:
112- alias = event ["args_split" ][0 ]
113- id , server = self ._both_from_alias (alias )
85+ alias = event ["spec" ][0 ] or str (event ["server" ])
86+ id , server = self ._both_from_alias (alias )
11487
11588 if not server == None :
116- alias = str (server )
11789 server .disconnect ()
11890 self .bot .disconnect (server )
11991 elif id in self .bot .reconnections :
@@ -122,16 +94,15 @@ def disconnect(self, event):
12294 else :
12395 raise utils .EventError ("Server not connected" )
12496
125- event ["stdout" ].write ("Disconnected from %s" % alias )
97+ if not server == event ["server" ]:
98+ event ["stdout" ].write ("Disconnected from %s" % alias )
12699
127100 @utils .hook ("received.command.shutdown" )
101+ @utils .kwarg ("help" , "Shutdown the bot" )
102+ @utils .kwarg ("permission" , "shutdown" )
103+ @utils .spec ("?<reason>string" )
128104 def shutdown (self , event ):
129- """
130- :help: Shutdown bot
131- :usage: [reason]
132- :permission: shutdown
133- """
134- reason = event ["args" ] or ""
105+ reason = event ["spec" ][0 ] or "Shutting down"
135106 for server in self .bot .servers .values ():
136107 line = server .send_quit (reason )
137108 line .events .on ("send" ).hook (self ._shutdown_hook (server ))
@@ -141,23 +112,22 @@ def shutdown(e):
141112 self .bot .disconnect (server )
142113 return shutdown
143114
144- @utils .hook ("received.command.addserver" , min_args = 3 )
115+ @utils .hook ("received.command.addserver" )
116+ @utils .kwarg ("help" , "Add a new server" )
117+ @utils .kwarg ("pemission" , "addserver" )
118+ @utils .spec (
119+ "!<alias>word !<hostname:port>word !<nickname!username@bindhost>word" )
145120 def add_server (self , event ):
146- """
147- :help: Add a new server
148- :usage: <alias> <hostname>:[+]<port> <nickname>!<username>[@<bindhost>]
149- :permission: addserver
150- """
151- alias = event ["args_split" ][0 ]
152- hostname , sep , port = event ["args_split" ][1 ].partition (":" )
121+ alias = event ["spec" ][0 ]
122+ hostname , sep , port = event ["spec" ][1 ].partition (":" )
153123 tls = port .startswith ("+" )
154124 port = port .lstrip ("+" )
155125
156126 if not hostname or not port or not port .isdigit ():
157127 raise utils .EventError ("Please provide <hostname>:[+]<port>" )
158128 port = int (port )
159129
160- hostmask = IRCLine .parse_hostmask (event ["args_split " ][2 ])
130+ hostmask = IRCLine .parse_hostmask (event ["spec " ][2 ])
161131 nickname = hostmask .nickname
162132 username = hostmask .username or nickname
163133 realname = nickname
@@ -174,18 +144,17 @@ def add_server(self, event):
174144 event ["stdout" ].write ("Added server '%s'" % alias )
175145
176146 @utils .hook ("received.command.editserver" )
177- @utils .kwarg ("min_args" , 3 )
178147 @utils .kwarg ("help" , "Edit server details" )
179- @utils .kwarg ("usage" , "<alias> <option> <value>" )
180148 @utils .kwarg ("permission" , "editserver" )
149+ @utils .spec ("!<alias>word !<option>word !<value>string" )
181150 def edit_server (self , event ):
182- alias = event ["args_split " ][0 ]
151+ alias = event ["spec " ][0 ]
183152 server_id = self ._id_from_alias (alias )
184153 if server_id == None :
185154 raise utils .EventError ("Unknown server '%s'" % alias )
186155
187- option = event ["args_split " ][1 ].lower ()
188- value = " " .join (event ["args_split " ][2 : ])
156+ option = event ["spec " ][1 ].lower ()
157+ value = " " .join (event ["spec " ][2 ])
189158 value_parsed = None
190159
191160 if option == "hostname" :
0 commit comments