Commit graph

1618 commits

Author SHA1 Message Date
jesopo
e6cb5e3e6b Remove additional ')' (copypaste fail) 2019-02-27 14:53:03 +00:00
jesopo
52092cfe28 Make github-hide-prefix apply to !gt as well 2019-02-27 14:52:10 +00:00
jesopo
120eb03173 Show sender of an issue_comment, not the original commenter (for edits) 2019-02-26 21:55:34 +00:00
jesopo
5eceb5655c Minor code stylisation in imgur.py 2019-02-25 09:59:38 +00:00
dngfx
6471360656
Update imgur.py 2019-02-25 09:01:52 +00:00
Dan
6771c3fec1 Switch to elif 2019-02-24 21:14:08 +00:00
Dan
ccd924d9e7 Remove superfluous json import and change datetime to match code standards. 2019-02-24 21:13:02 +00:00
Dan
4daba2b1ac Remove bold title, set NSFW_TEXT variable, fix bold spacing, fix PEP8 line breaks between definitions. Remove _imgur def and hook straight into code. 2019-02-24 21:10:25 +00:00
dngfx
0444f9c0b9
Update imgur.py
Remove debug logging cruft
2019-02-24 20:37:17 +00:00
dngfx
266cbbfe1e
Update imgur.py
Add auto-imgur for auto linking of imgur and make the linking a bit fancier.
2019-02-24 20:34:10 +00:00
jesopo
f3f6102dbc Don't duplicate "other-error" (sasl.scram) 2019-02-24 09:04:42 +00:00
jesopo
77ab4707b2 Send IRCBot.VERSION on a CTCP VERSION (ctcp.py) 2019-02-24 08:39:20 +00:00
jesopo
fdce6ef7a6 We now need to .send( an IRCLine.ParseLine in perform.py 2019-02-24 08:04:35 +00:00
jesopo
1473f41b03 Fire preprocess.send per-command - use this to only strip colors from ParsedLine
objects for PRIVMSG and NOTICE
2019-02-23 21:40:11 +00:00
jesopo
8c94bcf6ca Move utils.irc.IRCParsedLine to IRCLine.ParsedLine, improve truncation
mechanism, don't convert sent line from ParsedLine to text to ParsedLine for
line_handler handling
2019-02-23 21:33:04 +00:00
jesopo
f4a403836b !raw needs to parse the line it's given in to an IRCParsedLine now 2019-02-23 16:11:41 +00:00
jesopo
6bdec003a1 Split PRIVMSG last param explicitly by " " to make message_split 2019-02-23 10:54:17 +00:00
jesopo
ed4643b15d Use new IRCChannel/IRCUser send_tagmsg in message_tracking.py 2019-02-22 22:37:27 +00:00
jesopo
9d72cbca73 Keep track of a user's away message, not just whether they're away or not 2019-02-22 22:26:50 +00:00
jesopo
dec3485071 Clear command Out text when there's nothing left to send 2019-02-22 17:47:25 +00:00
jesopo
9408cc9487 Typo, 'ValuError' -> 'ValueError' 2019-02-22 17:44:46 +00:00
jesopo
76c6cc3709 Typo, 'taget' -> 'target' 2019-02-22 16:31:17 +00:00
jesopo
5cae86333b Typo, 'channels' -> 'channel' 2019-02-22 11:27:31 +00:00
jesopo
2b430839f9 .on doesn't take kwargs - .call does 2019-02-22 11:26:48 +00:00
jesopo
6177d5c984 Typo, 'channels' -> 'channel' 2019-02-22 11:25:04 +00:00
jesopo
47c2cbb0fa Split line_handler.py out in to different files for different categories 2019-02-22 11:23:36 +00:00
jesopo
7469ff5bd6 Remove unused threading import in line_handler.py 2019-02-22 10:26:31 +00:00
jesopo
1ac8bf6ec1 Support echo-message TAGMSG 2019-02-22 10:14:23 +00:00
jesopo
fde0838fdc Remove code duplication for checking if a PRIVMSG/NOTICE was sent by us 2019-02-22 10:13:49 +00:00
jesopo
46fc552972 Add a require_access attribute to !ghwebhook 2019-02-21 21:18:07 +00:00
jesopo
0fc2dd8754 You can't minus a set from a list (auto_mode.py) 2019-02-21 21:14:57 +00:00
jesopo
1da66fb72d Only give users auto_modes they don't already have (auto_mode.py) 2019-02-21 21:14:09 +00:00
jesopo
827832b2d2 Add channel_access attributes to auto_mode.py commands 2019-02-21 21:10:06 +00:00
jesopo
e28885f746 Don't handle pull_request_review events when they've not been submitted 2019-02-21 11:19:36 +00:00
jesopo
deedab7248 Add IRCServer.send_joins, a nicer interface than manually ",".joining 2019-02-20 17:08:30 +00:00
jesopo
7f2b19cee3 Only send TAGMSG when it's definitely supported (message_tracking.py) 2019-02-20 16:10:37 +00:00
jesopo
ebd02dbfa9 IRCv3 message-tags has been ratified 2019-02-20 15:59:33 +00:00
jesopo
81d82413d4 draft/message-tags-0.3 (JSON tags) was rejected 2019-02-20 14:46:40 +00:00
jesopo
807021ecc4 Pass key through to _get_settings (rest_api.py) 2019-02-19 19:49:13 +00:00
jesopo
a3a75f3480 Remove copy-pasted ":" (rest_api.py) 2019-02-19 19:47:14 +00:00
jesopo
2691fa52e6 Do database-related work on UI thread (rest_api.py) 2019-02-19 19:45:26 +00:00
Jos Ahrens
850c717925
quit: Fix style but better
Positions the colon consistently, but better.
2019-02-19 18:06:24 +01:00
Jos Ahrens
7a7ae615da
quit: Fix style
Positions the colon consistently.
2019-02-19 18:02:24 +01:00
Evelyn
8879e6416e How can you govern a country that has two hundred and forty-six varieties of cheese? 2019-02-19 15:03:31 +00:00
jesopo
cfdb48b3e7 Use IRCRecvBatch in line_handler.py 2019-02-18 23:01:25 +00:00
jesopo
186b6b82a2 Shift formatting protocol data to it's own file: utils.irc.protocol 2019-02-18 14:58:27 +00:00
jesopo
cae6d970ca Sometimes lastfm doesn't give us a list of tracks (lastfm.py) 2019-02-18 13:22:12 +00:00
jesopo
6da35a899b don't pass around has_arbitrary - we don't need it. 2019-02-18 12:42:52 +00:00
jesopo
3a3b197309 Default cap_done to True, there's only one scenario were it is false (resume.py) 2019-02-17 16:00:33 +00:00
jesopo
dc7cdf31d0 Use '&lt;' for '<' in README (permissions) 2019-02-17 14:29:50 +00:00
jesopo
5809ff8490 Add section about identifying (permissions README.md) 2019-02-17 14:28:59 +00:00
jesopo
9f2c501df6 Typo, 'BitBo' -> 'BitBot' (permissions) 2019-02-17 14:27:56 +00:00
jesopo
ec49140a70 Move permissions.py in to a directory and add a README.md for it 2019-02-17 14:26:18 +00:00
jesopo
cb0314da67 Put a helper function in utils to do iso8601 formatting. change IRCServer's
last-read setting to use it.
2019-02-17 14:15:40 +00:00
jesopo
107205d29a Only completely prevent CAP END when we get RESUME SUCCESS (resume.py) 2019-02-17 12:48:22 +00:00
jesopo
92349ad696 typo, 'server.get_settings' -> 'server.get_setting' (resume.py) 2019-02-16 15:53:59 +00:00
jesopo
faf2401069 'received.numeric.###' -> 'received.###' throughout project 2019-02-16 15:53:14 +00:00
jesopo
342c1afa7e Keep a track of channels we're in, in case we RESUME and need to get channel
information (e.g. `chathistory`) (resume.py)
2019-02-16 11:23:40 +00:00
jesopo
716568c21d 'src/IRCServer.capabilities' -> 'src/IRCServer.agreed_capabilities' 2019-02-16 09:12:43 +00:00
jesopo
3e4f3532a1 Put spaces either side of arrow symbol, makes it easier to see (github) 2019-02-16 09:06:29 +00:00
jesopo
e1ceed2907 Typo in comment, 'of' -> 'or' (sasl.scram) 2019-02-15 20:12:13 +00:00
jesopo
686d852e2b SCRAM.error should be within standardised errors (put raw in self.raw_error) 2019-02-15 20:09:32 +00:00
jesopo
e51c653c1e Parse and print when we send QUIT commands (line_handler, print_activity) 2019-02-15 19:58:51 +00:00
jesopo
f6179c46ab Actually grab resume timestamp before it's overwritten (resume.py) 2019-02-15 10:26:33 +00:00
jesopo
a50b8c5694 comment typo, 'tage' -> 'tag' (github) 2019-02-15 07:49:07 +00:00
jesopo
a7d3fd93fc hmac.digest -> hmac.new (the former is too new) (sasl.scram) 2019-02-15 01:21:39 +00:00
jesopo
4e7bfee3a6 Only send +draft/delivered and +draft/read on private message 2019-02-15 00:07:33 +00:00
jesopo
3efe97f6bb copypaste fail, server -> event["server"] (message_tacking.py) 2019-02-14 21:59:00 +00:00
jesopo
52387900bc Support draft/delivered and draft/read (message_tracking.py) 2019-02-14 21:51:51 +00:00
jesopo
ec3096fb50 Put information about USERPASS in sasl/README.md 2019-02-14 12:28:36 +00:00
jesopo
d0ad43b027 Support a USERPASS sasl mechanism that picks the best user:pass mech (sasl) 2019-02-14 11:57:53 +00:00
jesopo
33cacbb904 Don't crash when we try to send a message to channel we're not in
(line_handler.py)
2019-02-14 08:36:41 +00:00
jesopo
15fc5f7124 raise EventError when no results are found, to avoid double stderr write (youtube.py) 2019-02-14 01:00:16 +00:00
jesopo
2794d7235b 'current_badges' -> 'badges' (badges.py) 2019-02-13 16:33:28 +00:00
jesopo
b5b0464873 Typo, 'recieved' -> 'received' (badges.py) 2019-02-13 16:32:31 +00:00
jesopo
3834b246d6 Add !clearbadges (badges.py) 2019-02-13 16:31:32 +00:00
jesopo
acbe02baa6 Support IRCv3 draft/setname proposal (#361) (line_handler.py) 2019-02-13 10:59:37 +00:00
jesopo
5b561b51f4 Fix completely broken chghost code. What on god's earth was I thinking. 2019-02-13 10:56:52 +00:00
jesopo
1927c3c8af Catch and propagate IRCv3's FAIL command (#357) (line_handler.py) 2019-02-13 10:39:10 +00:00
jesopo
460d56eb74 Never allow use of MD2 (sasl.scram) 2019-02-12 23:52:09 +00:00
jesopo
ac958384fe SCRAM doesn't need constant_time_compare, nonces prevent replay (scram.py) 2019-02-12 23:47:24 +00:00
jesopo
62d2449958 MONITOR actually catches NICK changes (nick_regain.py) 2019-02-12 21:01:28 +00:00
jesopo
ef43c9aeef Also use ISON even if MONITOR is supported - to catch NICK changes
(nick_regain.py)
2019-02-12 20:59:11 +00:00
jesopo
f2a7acfe4d Use RPL_ENDOFMOTD or ERR_NOMOTD to denote end-of-registration and a time to
check if we got MONITOR in 005 at any point (nick_regain.py)
2019-02-12 20:48:52 +00:00
jesopo
554b041822 Remove debug print (nick_regain.py) 2019-02-12 20:43:50 +00:00
jesopo
3fc2fec324 Add nick_regain.py, to watch for the bot's desired nick becoming free 2019-02-12 20:42:26 +00:00
jesopo
1f1a19b5b6 set nick to '<nickname>|' when we get a nickname-in-use error (line_handler.py) 2019-02-12 20:40:40 +00:00
jesopo
2e925a6853 user is null when we sent a NOTICE non-echo-message (line_handler.py) 2019-02-12 17:07:39 +00:00
jesopo
44df8240cc user is null when we're sending a message non-echo-mesasge (line_handler.py) 2019-02-12 17:04:55 +00:00
jesopo
e573f9de51 We can *receive* PRIVMSG/NOTICE without a prefix (line_handler.py) 2019-02-12 17:02:12 +00:00
jesopo
21b2e0bbe7 Typo, 'datetme' -> 'datetime' (ctcp.py) 2019-02-12 16:55:56 +00:00
jesopo
0e1535a88d Definte channel before trying to use it for event hook constuction
(line_handler.py)
2019-02-12 16:50:11 +00:00
jesopo
938495fc3a Refactor how CTCPs are sent through events 2019-02-12 16:49:57 +00:00
jesopo
b2d942027e Implement IRCv3 echo-message (line_handler.py) 2019-02-12 16:12:15 +00:00
jesopo
e1c81efa6f Add a way to blacklist CAPs per-network (line_handler.py) 2019-02-12 15:34:50 +00:00
jesopo
7e4c1cadb1 Add !cointoss to random_number.py 2019-02-12 15:23:02 +00:00
jesopo
ce23442f4b Use constant-time compare in permissions.py for password identifying 2019-02-12 11:59:47 +00:00
jesopo
9667b8a6e0 Move constant-time compare function to utils.security 2019-02-12 11:57:49 +00:00
jesopo
305b998a52 Use hmac.compare_digest to do a constant-time compare (sasl.scram) 2019-02-12 11:50:37 +00:00
jesopo
144182868c Upgrade resume.py to draft/resume-0.3 and support sending last-read timestamp 2019-02-12 11:14:36 +00:00
jesopo
8c9626f0a9 Put an strf format for ISO8601 in utils 2019-02-12 11:08:24 +00:00
jesopo
98b82c7f2c Insert label tag to lines in labeled BATCHes (line_handler.py) 2019-02-11 22:19:20 +00:00
jesopo
2f5a232c4e Hold on to tags and type for BATCHes 2019-02-11 22:15:12 +00:00
jesopo
b6df18930c bytes_written/bytes_read is now on IRCServer.socket (stats.py) 2019-02-11 18:26:16 +00:00
jesopo
399723db94 Show file add/remove/change *after* saying it's a push (github) 2019-02-11 11:17:07 +00:00
jesopo
18bb7ec4af Actually return function hook from _shutdown_hook (admin.py) 2019-02-11 10:09:39 +00:00
jesopo
e644888e3e Actually shutdown socket when !shutdown is called (admin.py) 2019-02-11 10:00:55 +00:00
jesopo
9b44b6cd13 Shift socket.socket related logic to IRCSocket.py 2019-02-11 10:00:41 +00:00
jesopo
d087143a5d Iterate through bot.servers.values(), not .keys() (admin.py) 2019-02-10 23:54:31 +00:00
jesopo
fadd21c6d9 Add !shutdown (admin.py) 2019-02-10 23:53:33 +00:00
jesopo
bb4ec082dd Let IRCLine.Line handle truncating command output 2019-02-10 20:49:59 +00:00
jesopo
abf5679b68 Parse sent data in IRCServer._send, not IRCServer.send 2019-02-10 20:49:03 +00:00
jesopo
9ecec75828 'jesopo pushed commit to master' -> 'jesopo pushed to master' (github) 2019-02-10 15:09:20 +00:00
jesopo
9235d23350 Show when pushes are forced (github) 2019-02-10 15:06:26 +00:00
jesopo
af3057dee0 Don't send empty JOIN when we have no saved channels (channel_save.py) 2019-02-10 14:55:46 +00:00
jesopo
cf64e8832b Make use of "when line sent" logic to disconnect after QUIT (signals.py) 2019-02-10 14:32:04 +00:00
jesopo
709365ecf8 Utilise new line-tracking logic to reconnect when QUIT sends (admin.py) 2019-02-10 14:26:24 +00:00
jesopo
d5bb3c5405 Have to refer to timer.kwargs to get kwargs (in.py) 2019-02-10 13:27:49 +00:00
jesopo
25096c651a Don't require client cert validation (rest_api.py) 2019-02-10 13:26:35 +00:00
jesopo
985f4d60a4 Only add a waiting clause for resume CAP if the server actually ACKs it
(resume.py)
2019-02-10 13:22:53 +00:00
jesopo
c7d21e2d9e Typo, 'wrap_scket' -> 'ssl_wrap' (rest_api.py) 2019-02-10 13:20:22 +00:00
jesopo
93dd75ff31 Added !inlist, to list !in reminders (in.py) 2019-02-10 13:18:25 +00:00
jesopo
1d206fe78f Use newly abstracted away ssl_wrap (rest_api.py) 2019-02-10 12:38:53 +00:00
jesopo
05ae25d3d7 ERROR log ERRORs from servers (line_handler.py) 2019-02-10 12:22:01 +00:00
jesopo
71eac9d3c0 Treat a QUIT from hostmask :* as referring to our connection (line_handler.py) 2019-02-10 00:29:22 +00:00
jesopo
ffdf49efc9 CAP END for RESUME TOKEN and RESUME ERR, don't for RESUME SUCCESS (resume.py) 2019-02-10 00:12:45 +00:00
jesopo
20d75e9716 Send request to RESUME a session AFTER we have a new token (resume.py) 2019-02-10 00:03:14 +00:00
jesopo
e2b019a9b8 log calls need a params arg (resume.py) 2019-02-10 00:02:24 +00:00
jesopo
84a3bf6135 Also capture channel setting-related modes (e.g. +f for flood settings) 2019-02-09 18:48:18 +00:00
jesopo
90618e883b Move REGEX_CUTOFF to outs.py (commands) 2019-02-09 17:52:51 +00:00
jesopo
1ff2a00c48 Move StdOut/StdErr specific consts to outs.py (commands) 2019-02-09 17:50:40 +00:00
jesopo
6b042d9460 Split command StdOut/StdErr in to their own file (commands) 2019-02-09 17:49:01 +00:00
jesopo
b9e71ec833 title is already a parsed string from _get_title() (title.py) 2019-02-09 13:38:09 +00:00
jesopo
8bbfd1d1c3 Add empty params arg to log call (title.py) 2019-02-09 13:37:21 +00:00
jesopo
730a4e6b87 Don't use the event system to get results from other modules - use exports 2019-02-09 13:14:45 +00:00
jesopo
4bc43f686e 'username' -> 'nickname', update RESUME nickname when our nickname changes (resume.py) 2019-02-09 12:33:26 +00:00
jesopo
d3f5ff78a6 Another 'new-token' -> 'new-resume-token' (resume.py) 2019-02-09 12:27:37 +00:00
jesopo
a23e46ddbf 'def on_cap_new' -> 'def on_cap_ls' (resume.py) 2019-02-09 12:27:13 +00:00
jesopo
1e6e030d6f Actually do 'resume' -> 'resume-token' (resume.py) 2019-02-09 12:26:47 +00:00
jesopo
feffb2325b "resume" -> "resume-token", "new-token" -> "new-resume-token", typo that was
causing resume token to be deleted as soon as it was set (resume.py)
2019-02-09 12:23:37 +00:00
jesopo
3fae5c52cd Forgot to import EventManager (title.py, youtube.py) 2019-02-09 10:57:32 +00:00
jesopo
31367b2b5d Eat youtube URLs on LOW priority, switch auto-title to MONITOR priority 2019-02-09 10:56:06 +00:00
jesopo
9f6aa93082 Actually return title text, not html Tag object (title.py) 2019-02-09 10:38:44 +00:00
jesopo
2ac5a53131 Add a setting to get the title from URLs automatically (title.py) 2019-02-09 10:35:37 +00:00
jesopo
6018cc098d We still need to 'CAP REQ :sasl' when we get 'CAP NEW :sasl' (sasl) 2019-02-09 02:58:25 +00:00
jesopo
697ce2ba30 Do a SASL reauthentication when we get CAP NEW for SASL (sasl) 2019-02-08 23:12:14 +00:00
jesopo
42e2596c9b Return semi-helpful information to github webhooks (github) 2019-02-08 23:01:45 +00:00
jesopo
d772eaf36e need to .items() a dict to tuple-iterate it (rest_api.py) 2019-02-08 22:53:33 +00:00
jesopo
678e6606ed Abstract away sending response to REST API request (rest_api.py) 2019-02-08 22:04:39 +00:00
jesopo
4a68baa0a6 Return path from _path_data() (rest_api.py) 2019-02-08 21:56:58 +00:00