Commit graph

1955 commits

Author SHA1 Message Date
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
jesopo
e84f91977c Typo, 'utils.parse' -> 'urllib.parse' (rest_api.py) 2019-02-08 21:55:42 +00:00
jesopo
12591d2357 Remove now not used params on _request() (rest_api.py) 2019-02-08 21:54:33 +00:00
jesopo
c7843a9338 Simplify/refactor REST API request parsing code (rest_api.py) 2019-02-08 21:52:24 +00:00
jesopo
dc0a021231 Show capabilities in API server stats (stats.py) 2019-02-08 17:56:13 +00:00
jesopo
9a0b8f3d00 server_capabilities is a dict, capabilities is a set (line_handler.py) 2019-02-08 17:48:41 +00:00
jesopo
91f78e834e Still REQ CAPs caught from cap.ls command if line_handler.py doesn't request any 2019-02-08 17:32:43 +00:00
jesopo
518f32c4ec Fix 2 misspellings of "capabilities" and fix having not changed a variable name 2019-02-08 17:32:00 +00:00
jesopo
15ab772442 Request CAPs we support when we see them advertised with CAP NEW
(line_handler.py)
2019-02-08 17:30:07 +00:00
jesopo
d3f23eafb8 make !sp and alias of !spotify (spotify.py) 2019-02-08 15:34:04 +00:00
jesopo
d61bb387f7 Show when a check_run is queued (github) 2019-02-07 23:05:29 +00:00
jesopo
a1496e5415 Check that a check_run actually started before it finished (github) 2019-02-07 22:59:50 +00:00
jesopo
03a1f62297 Script travis module in favour of github webhook check_run events 2019-02-07 22:34:54 +00:00
jesopo
fb125081ad Turn seconds in to seconds/minutes/hours/etc (github) 2019-02-07 22:32:48 +00:00
jesopo
ede385aca8 Use check_run event instead of status for CI (github) 2019-02-07 22:30:50 +00:00
Evelyn
ce78bd850a quit: add quote 2019-02-07 18:21:35 +00:00
jesopo
53a819512f Make commit hash LIGHTBLUE in status event (github) 2019-02-07 15:56:30 +00:00
jesopo
58cd6338fd Color/bold status state (github) 2019-02-07 15:49:36 +00:00
jesopo
c401c45a02 typo, "_short_id" -> "_short_hash" (github) 2019-02-07 15:46:07 +00:00
jesopo
f6079d92c8 Remove hanging "or" that i forgot to remove (line_handler.py) 2019-02-07 14:26:36 +00:00
jesopo
172acfd0d5 Tidy up logic to figure out of a NOTICE is a AUTH notice (line_handler.py) 2019-02-07 14:25:56 +00:00
jesopo
f5f5a55e21 Add command to list, add and remove travis webhooks (travis) 2019-02-07 14:05:12 +00:00
jesopo
0bdac094ea Actually accept !ghwebhook list as a command (github) 2019-02-07 14:01:24 +00:00
jesopo
7d25ce44ad Use HTML entity for less-than symbol (sasl README.md) 2019-02-07 13:53:46 +00:00
jesopo
35ad1c7c7b Add SASL README.md 2019-02-07 13:51:08 +00:00
jesopo
a3ca29dabe Show server name when we log a SASL failure (sasl) 2019-02-07 12:23:11 +00:00
jesopo
1485947fcc First commit of travis webhook module 2019-02-07 11:49:42 +00:00
jesopo
90591ec5b4 Change isgd.py to use Exports to offer url shortening, not events 2019-02-07 10:07:11 +00:00
jesopo
d013703705 commit_comment events have commit_id in comment, not in the root data (github) 2019-02-07 07:42:05 +00:00
jesopo
7dd1eca7ae Don't use string concat when we're already using %s formatting (sasl.scram) 2019-02-06 23:04:26 +00:00
jesopo
65766a093a Add more comments, re-seperate out self._ variables and seperate some compound
function calls on to different lines for readability (sasl.scram)
2019-02-06 22:58:16 +00:00
jesopo
c77d8aaac8 Default error to "", _client_first/_salted_password/_auth_message to b""
(sasl.scram)
2019-02-06 22:36:25 +00:00
jesopo
1bac2f67de Add type hints to SCRAM ctor (sasl.scram) 2019-02-06 22:33:30 +00:00
jesopo
50a8de2792 Restrict scram algorithms to IANA Hash Function Textual Names (sasl.scram) 2019-02-06 22:28:50 +00:00
jesopo
4e3e782519 Remove pointless local auth_message variable (sasl.scram) 2019-02-06 22:00:23 +00:00
jesopo
efbbe4c3db Move parsing username, password and algorithm to the only place that uses it and
add comments (sasl.scram)
2019-02-06 21:49:44 +00:00
jesopo
bffd43648d uuid.uuid4() is not random enough for a nonce (sasl.scram) 2019-02-06 21:49:24 +00:00
jesopo
67252833c4 Remove pointless local salted_password variable (sasl.scram) 2019-02-06 21:19:25 +00:00
jesopo
cbdd8d6fc9 Remove pointless local assign of self._password (sasl.scram) 2019-02-06 21:16:55 +00:00
jesopo
90b540d5dc Add type annotations to scram util functions (sasl) 2019-02-06 21:05:20 +00:00
jesopo
bf3986a1be Log a WARN when we get a 904 (failed sasl) 2019-02-06 16:25:43 +00:00
jesopo
16ea48cb54 Assume we'll receive a 904 when SCRAM fails with an e= param (sasl) 2019-02-06 15:50:42 +00:00
jesopo
c006435fa1 Set SCRAM state to just Failure if there's a server-final-message error (sasl) 2019-02-06 15:41:31 +00:00
jesopo
09eb3d3314 Only panic about a scram failure if it's a server-final-message failure (sasl) 2019-02-06 15:38:59 +00:00
jesopo
0e63700761 Only send auth_text if it's not None (sasl) 2019-02-06 15:37:34 +00:00
jesopo
be95514174 auth_text would not be present in a failure scenario 2019-02-06 15:36:59 +00:00
jesopo
cfa590eef7 Handle error on server-final-message (sasl.scram) 2019-02-06 15:28:17 +00:00
jesopo
403466dee3 Remove particularly improper quit quotes, add Hillel the Elder quote (quit.py) 2019-02-06 14:22:27 +00:00
jesopo
3e54542b6a arguments was not defined if they weren't provided (sasl) 2019-02-06 11:22:13 +00:00
jesopo
0004a8a59c Fix mypy linting issue with dict creation (scram.py) 2019-02-06 11:09:45 +00:00
jesopo
a7554b835e "+" as part of a SASL handshake is irc-specific so remove it from scram.py 2019-02-06 11:07:50 +00:00
jesopo
6b4bb7cdba Type annotate scram.py and don't pass base64 data to scram.py functions 2019-02-06 08:50:19 +00:00
jesopo
13083e60a6 Don't take a users coins when they make an invalid roulette bet (coins.py) 2019-02-05 23:00:56 +00:00
jesopo
aa7aa17ec1 Split hash and hmac logic out to their own functions (sasl.scram) 2019-02-05 22:53:55 +00:00
jesopo
5d51a283bb Actually check that we don't have CAPs that we're waiting on a ACK/NAK for
before ending CAP negotiation (line_handler.py)
2019-02-05 22:26:57 +00:00
jesopo
5991e02b0a Manually count ACK/NAK for REQed CAPs before ENDing CAP negotiation 2019-02-05 19:20:02 +00:00
jesopo
ff2d5ef7e7 Disconnect from server and throw an exception if SCRAM server verification fails
(sasl)
2019-02-05 17:04:00 +00:00
jesopo
fd08e23bd4 Move scripts module to it's own directory 2019-02-05 16:56:21 +00:00
jesopo
8e59809db2 CAP capabilities would not be index 2 if the line is multiline
(line_handler.py)
2019-02-05 16:48:12 +00:00
jesopo
b742b1ecee Remove debug print in sasl/__init__.py 2019-02-05 15:58:11 +00:00
jesopo
1fe20a2c98 Move sasl.py to a directory module and move SCRAM logic to a different file,
move `github/module.py` to `github/__init__.py`
2019-02-05 15:54:20 +00:00
jesopo
d4503fdf28 Remove SCRAM-related variables on IRCServer object when we see
server-final-message (sasl.py)
2019-02-05 12:53:19 +00:00
jesopo
d68c73affa Remove SCRAM debug logging (sasl.py) 2019-02-05 12:34:50 +00:00
jesopo
51a4b8ef4e Support SCRAM SASL mechanisms (sasl.py) 2019-02-05 12:17:25 +00:00
jesopo
0344ad6470 Add ")" that should have been removed when we stopped using enumerate for
github webhook hooks (github)
2019-02-04 21:35:31 +00:00
jesopo
ac16887c48 Reply to statusmsg commands (e.g. '/msg +channel !ping') with the same statusmsg 2019-02-04 21:32:44 +00:00
jesopo
e2d60a541c Try to match against full repository name first, so that we can make specific
rules for specific repositories (github)
2019-02-04 10:17:27 +00:00
jesopo
66d2ef2c26 We don't need to enumerate hooks (github) 2019-02-04 10:17:15 +00:00
jesopo
36e838d585 Delete automodes user_channel setting when it's empty (auto_mode.py) 2019-02-04 08:45:48 +00:00
jesopo
d7d707d980 user doesn't exist in _move(), it's user1 (coins.py) 2019-02-02 20:41:08 +00:00
jesopo
1b94a72a65 apikey command should have a minimum argument restriction (rest_api.py) 2019-02-01 12:02:02 +00:00
jesopo
520d8b681f Actually add private_unban function def. oops. (channel_op.py) 2019-01-30 21:07:03 +00:00
jesopo
d2dbb0a249 Add private message unban command (channel_op.py) 2019-01-30 21:06:02 +00:00
jesopo
98e1d4460e Actually use channel arg in _kick_command (channel_op.py) 2019-01-30 21:03:21 +00:00
jesopo
8345ea36d4 Support kick and ban command in private message (channel_op.py) 2019-01-30 21:02:12 +00:00
jesopo
cd93118571 server.get_channel was moved to server.channels.get a long time ago (set.py) 2019-01-30 19:40:20 +00:00
jesopo
a2e23acc61 Logging takes format params as a separate arg (commands.py) 2019-01-30 19:39:03 +00:00
jesopo
72072bbd3d Make sure to call the specific hook we've decided is valid (commands.py) 2019-01-30 19:35:43 +00:00
jesopo
8ac989fa96 check we have a channel_arg kwarg before parsing it as an int
(channel_access.py)
2019-01-30 19:20:11 +00:00
jesopo
0e66921d34 Break when we've found a suitable command hook (commands.py) 2019-01-30 19:15:11 +00:00
jesopo
b0d67e5170 Use correct arg indexes for private channelset (set.py) 2019-01-30 19:07:34 +00:00
jesopo
051e4347f9 Actually remove call to preprocess.command to after min_args check
(commands.py)
2019-01-30 11:41:25 +00:00
jesopo
f25bfd0ae2 Correctly check if we're in a channel command before checking if the current
hook is valid (commands.py)
2019-01-30 11:37:47 +00:00
jesopo
c822a1afd6 Check min_args before we check if a user has permission (commands.py) 2019-01-30 11:37:29 +00:00
jesopo
fc39f8f9fc We need to turn channel_arg in to an int (channel_access.py) 2019-01-30 11:28:38 +00:00
jesopo
fc4a8d8e34 We should be using potential_hook until we've decided on a valid hook
(commands.py)
2019-01-30 11:26:54 +00:00
jesopo
64d12e3415 Get all hooks when checking command hooks, not just the first (commands.py) 2019-01-30 11:23:17 +00:00
jesopo
8a832b7230 Check all hooks for a command and pick the first applicable one, to allow for
private_only and channel_only commands to share the same command string
(commands.py)
2019-01-30 11:20:14 +00:00
jesopo
b197a537f0 Add a private channelset command (set.py) 2019-01-30 11:16:42 +00:00
jesopo
2071a10180 Support a way to check user channel access in a private command
(channel_access.py)
2019-01-30 11:16:34 +00:00
jesopo
bb84fc0291 Add a permission to !channelunset and !channelget (set.py) 2019-01-30 08:10:41 +00:00
jesopo
9491a44295 Correctly compare current time and token expire time and actually cache the
token (spotify.py)
2019-01-29 22:46:00 +00:00
jesopo
d178938463 Typo, {,} instead of {:} made headers a set (spotify.py) 2019-01-29 22:40:44 +00:00
jesopo
a177c5050e URL_SPOTIFY was renamed to URL_SEARCH (spotify.py) 2019-01-29 22:39:58 +00:00
jesopo
74e8ad0351 Forgot to import time (spotify.py) 2019-01-29 22:39:13 +00:00
jesopo
8acc01dd48 post_data is the kwarg for POST data, not data (spotify.py) 2019-01-29 22:38:31 +00:00
jesopo
bb047ec1b7 base64.b64encode(...) takes a byte array, not a string (spotify.py) 2019-01-29 22:37:44 +00:00
jesopo
af7a765547 Forgot to import base64 (spotify.py) 2019-01-29 22:36:54 +00:00
jesopo
2d085e7f91 Spotify now requires access tokens to use it's API (spotify.py) 2019-01-29 22:34:28 +00:00
jesopo
0c319be1e5 Correct usage help for kickban/tempkickban (channel_op.py) 2019-01-29 17:37:14 +00:00
jesopo
5e91f0d209 Remove haveibeenpwned.py, it's 99% useless 2019-01-29 16:01:43 +00:00
jesopo
a501fdea1f Stop processing a command when we've decided the user doesn't have permission
(commands.py)
2019-01-29 15:38:04 +00:00
jesopo
249734ebef We don't have an event object in _has_channel_access (channel_access.py) 2019-01-29 15:35:38 +00:00
jesopo
e0722dfc8a Seperate out access checking logic so we can call across-modules with the event
system to check if users have specific channel access (channel_access.py)
2019-01-29 15:33:55 +00:00
jesopo
7937be5128 Don't double up command prefix in !usage output (commands.py) 2019-01-29 08:36:47 +00:00
jesopo
f97c1f02fd Actually show the command prefix we now pass to _get_usage (commands.py) 2019-01-29 08:33:32 +00:00
jesopo
79ff20b66a Show command prefix in usage strings (commands.py) 2019-01-29 08:32:22 +00:00
jesopo
5d47e7e895 Add a permission to !ghwebhook so an admin user can use it without +o (github) 2019-01-29 08:06:59 +00:00
jesopo
0564a173a3 Typo, 'acess' -> 'access' (channel_access.py) 2019-01-29 07:35:48 +00:00
jesopo
66b2ffee68 Support * as a channel permission, to give users all access
(channel_access.py)
2019-01-29 07:32:25 +00:00
jesopo
5e5a62044c We don't need a seperate command for !channelset override (set.py) 2019-01-29 07:18:03 +00:00
jesopo
08404c4694 Use new utils.consts.PERMISSION_FORCE_SUCCESS in permissions.py 2019-01-29 07:14:53 +00:00
jesopo
f9446a3663 Show an error when an unknown subcommand is given to !access (channel_access.py) 2019-01-29 00:14:33 +00:00
jesopo
10b2ace653 Add require_access to commands on channel_op.py 2019-01-29 00:08:21 +00:00
jesopo
a3a535b195 Delete a user's 'access' channel setting when they have no permissions left
(channel_access.py)
2019-01-29 00:02:56 +00:00
jesopo
1b933e7c00 IRCUser.User objects don't have .id, they have .get_id() (channel_access.py) 2019-01-29 00:00:15 +00:00
jesopo
549332db38 Check a return is truthy before we decide it's an error (command.py) 2019-01-28 23:57:12 +00:00
jesopo
ee1770cc08 Typo, force_success -> force_success = False (commands.py) 2019-01-28 23:52:30 +00:00
jesopo
a94d35f0f1 Add channel_access.py, to give permissions to users in a channel (similar to
chanserv)
2019-01-28 23:50:43 +00:00
jesopo
d10a6d94c1 Add a way to force success and force failure of a command permission check
(commands.py)
2019-01-28 23:29:52 +00:00
jesopo
5e12d87ca3 Use target (after prefixes lstrip) to get channel object (line_handler.py) 2019-01-27 22:43:35 +00:00
jesopo
16337fa16e We need to pass a str to lstrip, not an array (line_handler.py) 2019-01-27 22:40:29 +00:00
jesopo
1301e80621 Strip prefix_symbols from PRIVMSG target, for e.g. 'PRIVMSG +#chan :hi'
(line_handler.py)
2019-01-27 22:38:19 +00:00
jesopo
0bb2491399 The event fired when we get an account-notify message iss
`received.account.login`, not `received.account` (auto_mode.py)
2019-01-27 07:16:41 +00:00
jesopo
1e72c39fda Handle prefix being null when we've received a server notice (line_handler.py) 2019-01-26 19:39:49 +00:00
jesopo
3b17cbacea Set server name by event["prefix"].hoskmask not .nickname, they're the same
thing at the moment when it's not a `nick!user@host` but eventually it might not
be (line_handler.py)
2019-01-26 19:38:14 +00:00
jesopo
0d7b39e7d9 extended-join JOINs have 3 args, not 2 (line_handler.py) 2019-01-26 16:17:34 +00:00
jesopo
6affadd306 Pass category arg to _set_quotes in quote_add (quotes.py) 2019-01-26 16:06:15 +00:00
jesopo
f217c5d192 Quote should be saved with saver and timestamp (quotes.py) 2019-01-26 16:03:40 +00:00
jesopo
eb5c685128 Typo, 'quote' -> 'quotes' (quotes.py) 2019-01-26 16:01:17 +00:00
jesopo
6e4607ea8d _set_quotes needs to be given a category (quotes.py) 2019-01-26 15:57:07 +00:00
jesopo
5b4954a96c add !quotegrab to take the last message from a user and quote it (quotes.py) 2019-01-26 15:55:20 +00:00
jesopo
ed44e6f78b Use .lower() on nickname, as we're using that on s and nickname_lower uses
special irc casemapping (github)
2019-01-26 10:53:28 +00:00
jesopo
506aef6366 Actually use the output of _prevent_highlight (github) 2019-01-26 10:53:14 +00:00
jesopo
2d113011ed Add a setting to insert zero width characters in to highlights (github) 2019-01-26 10:49:31 +00:00
jesopo
e6aad7e070 Don't give event object to webhook functions - they don't need them 2019-01-26 10:33:45 +00:00
jesopo
eb3f4db828 Don't put channel messages as low priority, so we can still catch "bitbot: ++"
(karma.py)
2019-01-25 23:53:53 +00:00
jesopo
f86a852d55 Strip "," and ":" from karma targets (karma.py) 2019-01-25 23:45:44 +00:00
jesopo
3c6827850a Remove users from channels they're kicked from (line_handler.py) 2019-01-25 18:59:00 +00:00
jesopo
45f47bc3fc Prevent users partaking in the lottery if doing so would put their coin total
below the coin redemption amount (coins.py)
2019-01-25 16:04:10 +00:00
jesopo
d75e2452ce Delete nickname_aliases.py as it's been disabled for a very long time due to
bugs
2019-01-25 13:21:44 +00:00
jesopo
335f1545a8 Give StdOut.send the new method param (commands.py) 2019-01-25 07:11:45 +00:00
jesopo
7b3d7f85a6 I totally forgot that we don't need flask. at all. 2019-01-24 19:17:31 +00:00
jesopo
301dd7378a Add irc_lower() and irc_equals() to IRCServer.Server so that no where else
in the code has to know about the server having a casemapping
2019-01-24 17:12:50 +00:00
jesopo
5bfa0d2b50 'self._get_all_user_coins' -> 'self._get_user_coins', forgot to change this when
we moved back away from wallets (coins.py)
2019-01-24 11:27:57 +00:00
jesopo
8ba7cb0396 Move logging API key from INFO to DEBUG (rest_api.py) 2019-01-23 22:23:21 +00:00
jesopo
086629f2dc Logging shouldn't use % string formatting (rest_api.py) 2019-01-23 22:10:32 +00:00
jesopo
6fef7fd0c6 INFO log when we get a HTTP request with an API key (including the key's
comment) (rest_api.py)
2019-01-23 22:08:26 +00:00
jesopo
26603c23ac Also pass method to StdOut/StdErr Send() when a send.stdout or
`send.stderr` event is sent (commands.py)
2019-01-23 21:39:05 +00:00
jesopo
64cb723901 Move logic to get command-method out of Out object (commands.py) 2019-01-23 20:35:28 +00:00
jesopo
2c7c12e9e0 Typo, server.get_value -> server.get_setting (coins.py) 2019-01-23 11:26:01 +00:00
jesopo
756938a4c9 Use rpartition to either get the last part of a ref/head/branch ref or just
`branch` (github)
2019-01-23 08:56:36 +00:00
jesopo
fcbb530b9e Don't throw an exception when we get the kind of format of ref the create
event gives (only repo name, not `"refs/head/repo"`) (github)
2019-01-23 08:51:01 +00:00
jesopo
e45b72356c Disable coin interest by default (coins.py) 2019-01-23 08:47:14 +00:00
jesopo
96f6be087a Change another usage of coins when it should be all_coins (coins.py) 2019-01-23 08:23:09 +00:00
jesopo
c39f1e002f Fix coins name collision (coins.py) 2019-01-23 08:22:08 +00:00
jesopo
b456132318 Remove wallet and bank logic (coins.py) 2019-01-23 08:20:01 +00:00
jesopo
f4467ac0ed Log a WARN when we get a HTTPTimeoutException while we're trying to get a git.io
short url (github)
2019-01-22 22:06:25 +00:00
jesopo
8024e53a68 Don't show current event filters comma-separated as they're not comma separated
when we set them and that's a little confusing (github)
2019-01-22 20:52:57 +00:00
jesopo
815eea69bd Typo, had ")" closing an array instead of "]" (github) 2019-01-22 20:50:59 +00:00
jesopo
a27b567ae1 Support handling watch event (repo being stared - misleading event name i
know) (github)
2019-01-22 20:49:31 +00:00
jesopo
c69f4414a0 Handle a situation where a repo full name isn't provided and there isn't one set
as default (github)
2019-01-22 17:16:04 +00:00
jesopo
fc5671c7c5 We only need one '-' between tweet content and short url (tweets.py) 2019-01-21 19:36:25 +00:00
jesopo
0fd180a5c2 'EventResultError' -> 'EventsResultsError' typo (maybe this should actually be
named 'EventResultError') (youtube.py)
2019-01-21 19:32:37 +00:00
jesopo
65db982f1f Show a "failed to load results" error when a video_id search returns no results
(youtube.py)
2019-01-21 19:30:39 +00:00
jesopo
50349ab8c8 pr-all also shows when there are new commits to a pull request (github) 2019-01-21 17:25:13 +00:00
jesopo
381e0ae336 Error log failure to get title of a url (title.py) 2019-01-21 14:39:20 +00:00
jesopo
8bf8097dd7 bus_stop isnt a Response object (tfl.py) 2019-01-21 10:46:23 +00:00
jesopo
3cefe87c5e Show default github web hook event categories in ghwebhook.md (github) 2019-01-20 20:08:46 +00:00
jesopo
c6545ca847 Use the correct namespace for HTTPTimeoutException (wolframalpha) 2019-01-20 19:05:50 +00:00
jesopo
65f9184a54 Gracefully handle a timeout (wolframalpha) 2019-01-20 19:04:32 +00:00
jesopo
491db4fea4 Typo, '9)' -> '()' (github) 2019-01-20 13:03:36 +00:00
jesopo
7a7400922e Add !ghwebhook list to ghwebhook.md 2019-01-20 13:02:19 +00:00
jesopo
be772cb730 Add a !ghwebhook subcommand to list all registered web hooks (github) 2019-01-20 13:01:31 +00:00
jesopo
f9186d7334 typo, commit["pusher"] -> data["pusher"] (github) 2019-01-19 08:02:34 +00:00
jesopo
202991a268 use data["pusher"]["name"] as data["author"]["login"] doesn't exist (github) 2019-01-19 08:00:31 +00:00
jesopo
8c1b40e785 Clarify [hook] and add sections for branches subcommand (github) 2019-01-19 07:53:30 +00:00
jesopo
3835930bdb Allow users to specify what branches are shown for github webhooks (github) 2019-01-19 07:48:24 +00:00
jesopo
0f9592063e Show user login not user name (e.g. show username not display name) for
commits (github)
2019-01-19 07:23:35 +00:00
jesopo
1753329aaf Show an error when a user specifies an unknown subcommand to !ghwebhook (github) 2019-01-18 14:21:53 +00:00
jesopo
3d2c11991e Clarify wording of what can be in the list of shown events (github) 2019-01-18 14:12:29 +00:00
jesopo
d2b572849c Correct markdown url (github) 2019-01-18 14:04:06 +00:00
jesopo
1950f1335f Point out that users can use raw github events, not just event categories
(github)
2019-01-18 14:02:54 +00:00
jesopo
c7ba2b778b Delete github-hooks channel setting when it's empty (github) 2019-01-18 13:25:53 +00:00
jesopo
9bbf3147d0 Display event categories in a smaller font (ghwebhook.md) 2019-01-18 13:14:11 +00:00
jesopo
8c4c9ab90a Added help file for !ghwebhook 2019-01-18 13:13:01 +00:00
jesopo
69edf039b3 Support modules being in their own folder and move github.py to github/module.py 2019-01-18 12:49:11 +00:00
jesopo
b7864ffb41 Typo, 'all_hook' -> 'all_hooks' (github.py) 2019-01-18 12:13:01 +00:00
jesopo
0414ed34e2 Move github hooks away from !channelset in to their own !ghwebhook command
(github.py)
2019-01-18 12:05:56 +00:00
jesopo
8addca13ec Copypaste fail, 'c' -> 'category' 2019-01-18 08:20:03 +00:00
jesopo
be5c5e6c21 Allow non-category items to be placed in a channel's event categories, allowing
users to specify specific events (github.py)
2019-01-18 08:18:47 +00:00
jesopo
4981d70be4 combine github events and their actions to be able to filter by event type and
action. add/change event categories to use these (github.py)
2019-01-18 08:08:39 +00:00
jesopo
5dc5e3fbfd LIGHTGREEN -> GREEN for successful commands (commands.py) 2019-01-17 21:10:12 +00:00
jesopo
72d4375e55 Only show specific actions for pull requests and issues (github.py) 2019-01-17 17:01:12 +00:00
jesopo
776f2faced Actually use new sender arg for _on_notice() (print_activity.py) 2019-01-17 14:51:44 +00:00
jesopo
2a7df864ef ping events don't need to know full_name of repo (github.py) 2019-01-17 14:50:23 +00:00
jesopo
588b54b40b Print when we send notices (print_activity.py) 2019-01-17 14:50:07 +00:00
jesopo
89d0c83acb Clarify github webhook event names with some comments (github.py) 2019-01-17 14:31:23 +00:00
jesopo
ce1d1aa5f8 'issue' -> 'issues' (github.py) 2019-01-17 14:19:31 +00:00
jesopo
75b85e76c9 Add a channel setting for github webhook event filters (github.py) 2019-01-16 22:36:19 +00:00
jesopo
5bf603bbfa typo, 'respository' -> 'repository' (github.py) 2019-01-16 22:32:17 +00:00
jesopo
77c7084e9d Don't try to parse username and repo name from a full name if there's no full
name (github.py)
2019-01-16 22:28:12 +00:00
jesopo
a342f82f40 Do filtering of github events based on categories of events (github.py) 2019-01-16 22:26:31 +00:00
jesopo
f9bf1d03e8 Correct order of string formatting for github membership events (github.py) 2019-01-16 22:14:26 +00:00
jesopo
f50f2a6d51 Support organisation membership event (github.py) 2019-01-16 22:13:38 +00:00
jesopo
e49389232e Support github events only related to an organisation, not a repo (github.py) 2019-01-16 22:13:14 +00:00
jesopo
8e5642f5d7 Check if page is null before trying to access page.data (eval_python.py) 2019-01-15 12:39:27 +00:00
jesopo
3eb87b06e1 'guid' -> 'uuid' as apparently guid is microsoft's name for a uuid
(random_number.py)
2019-01-14 21:37:14 +00:00
jesopo
7e85197d47 Change !gh to be an alias of !github (github.py) 2019-01-13 22:06:41 +00:00
jesopo
598fcb80b9 'to_ansi_colors(' -> 'parse_format(' as it's become a lot more than just colors.
strip \x08 (in case hexchat users paste it) (print_activity.py, src.utils.irc)
2019-01-13 21:56:36 +00:00
jesopo
9ab9400b46 Only show issue comment edit events when the body text of the comment has
actually changed (github.py)
2019-01-13 01:34:07 +00:00
jesopo
e523671633 Made positive karma show as LIGHTGREEN, not GREEN (karma.py) 2019-01-11 21:00:09 +00:00
jesopo
eadb49d41a Don't use bolding for command colors (commands.py) 2019-01-11 20:57:52 +00:00
jesopo
3cc9bc9dbb Karma is now being used as karma_str, thus we need a %s not a %d (karma.py) 2019-01-11 17:35:18 +00:00
jesopo
415afe7e27 Show positive karma as green and negative karma as red (karma.py) 2019-01-11 17:33:43 +00:00
jesopo
e5a5241615 Only try to regex match a youtube url if we actually have a search string
(youtube.py)
2019-01-11 12:03:23 +00:00
jesopo
59094568e0 Add youtube-safesearch channel setting, to allow channels to opt-in to turning
off any safe search filters (youtube.py)
2019-01-11 11:30:29 +00:00
jesopo
e62b3b58f4 "set" -> "channelset" for channel-related unset (set.py) 2019-01-10 22:43:12 +00:00
jesopo
0e9d2b3180 Add !unset and !channelunset (and !channelunsetoverride) (set.py) 2019-01-10 22:41:35 +00:00
jesopo
2f74100666 Don't have duplicate repo full name in ping events (github.py) 2019-01-10 22:24:04 +00:00
jesopo
cbc0e81fb3 Send a notice to a channel when a new webhook registration is received
(github.py)
2019-01-10 22:14:40 +00:00
jesopo
73392e8a20 Pass username, repository, number to _gh_issue and _gh_pull (github.py) 2019-01-10 13:36:13 +00:00
jesopo
2d346e73bc Seperate out issue/pr logic into their own functions and add !gh that will get
info on either an issue or a pull request (github.py)
2019-01-10 13:32:19 +00:00
jesopo
8da6036894 Show issue/pr state in !ghissue and !ghpull (github.py) 2019-01-10 13:23:32 +00:00
jesopo
d26a945c49 Show an error if !ghissue or !ghpull doesn't find the specified issue/pr
(github.py)
2019-01-10 13:18:58 +00:00
jesopo
86810290f7 rpartition (instead of partition) #number for github issues/pull, so that we
don't have to specify "#" when we're got a default repo (github.py)
2019-01-10 13:11:35 +00:00
jesopo
55b61649f4 copypaste fail, event["args_split"][0] -> ref (github.py) 2019-01-09 23:03:34 +00:00
jesopo
bba5733736 Command events don't have "channel", they have "target" (github.py) 2019-01-09 23:02:39 +00:00
jesopo
5514c2b9c9 Add a way to set the default github repo for a channel (github.py) 2019-01-09 23:01:27 +00:00
jesopo
470f9fc945 from_repo/to_repo -> repo_from/repo_to (github.py) 2019-01-09 22:51:55 +00:00
jesopo
2afe2d1c57 Show which branch is being merged in to which (github.py) 2019-01-09 22:50:41 +00:00
jesopo
d6da46fac3 to_from -> repo_to (github.py) 2019-01-09 22:50:21 +00:00
jesopo
8399545fe3 Add missing "(" for github pull request message format (github.py) 2019-01-09 22:47:47 +00:00
jesopo
aa04071d89 def github( -> def webhook( (github.py) 2019-01-09 22:47:20 +00:00
jesopo
dc4c711fa0 Actually show deletions as deletions for github pull requests (github.py) 2019-01-09 22:46:57 +00:00
jesopo
8d3064d50c Add !ghpull, to get information on a pull request from github (github.py) 2019-01-09 22:45:33 +00:00
jesopo
56f431176c Boldify sender on a pull request review comment (github.py) 2019-01-09 22:33:02 +00:00
jesopo
ac3c361399 Add !ghissue, to get information on an issue from github (github.py) 2019-01-09 22:30:11 +00:00
jesopo
93336efd38 Handle !soundcloud returning no results (soundcloud.py) 2019-01-08 10:14:21 +00:00
jesopo
38b7a1dadf Typo in words.py: 'strippped_word' -> 'stripped_word' 2019-01-04 12:36:38 +00:00
jesopo
8171c5c492 Allow tracking words that have characters deemed as "start"/"end" characters
(words.py)
2019-01-04 12:13:36 +00:00
jesopo
47b17def99 Sort list of available settings for set/channelset/etc (set.py) 2019-01-03 22:02:51 +00:00
jesopo
e15c7ece5b URL-unquote form-encoded data AFTER parsing it as a query string (github.py) 2019-01-03 21:55:21 +00:00
jesopo
498352d1ac Support adding github webhooks for an entire "username" (github.py) 2019-01-03 21:18:40 +00:00
jesopo
cb3e40a462 Print a topic's set at time when we receive a 333 (print_activity.py) 2019-01-02 13:39:49 +00:00
jesopo
3d60d59510 We need to normalise between a single usage string and multiple (making both
lists) to reuse the formatting code (commands.py)
2018-12-29 21:38:03 +00:00
jesopo
ee8d3a6287 Remove an erroneous level of indentation that prevented the command being
prepended to a usage string when only 1 usage string was available (commands.py)
2018-12-29 21:35:06 +00:00
jesopo
e8b69b0a26 type should be before number in the string formatting of issue_comment
(github.py)
2018-12-29 21:15:50 +00:00
jesopo
5f994e599d Show issue/pr number (github.py) 2018-12-29 19:05:14 +00:00
jesopo
d91e15abfd html unescape tweet text 2018-12-27 21:57:33 +00:00
jesopo
30db81e0da --require-config shouldn't have a space before it 2018-12-27 21:57:24 +00:00
jesopo
b8b0adb811 Sort nicknames case-insensitively (stats.py) 2018-12-26 23:24:43 +00:00
jesopo
e5600a6927 Sort user nicknames on /api/server (stats.py) 2018-12-26 23:22:12 +00:00
jesopo
f0ee00da3a Typo, '==' -> '=' 2018-12-22 09:36:13 +00:00
jesopo
7223e76e24 Copypaste fail from moving logic out to turn a date to a string ('value' -> 'dt)
(badges.py)
2018-12-22 09:35:11 +00:00
jesopo
13cf49ac5d Add !upsertbadge, to update or add a badge with a date (badges.py) 2018-12-22 09:34:38 +00:00
jesopo
6c38f2f637 Better clarify !updatebadge's <date> arg in usage (badges.py) 2018-12-22 09:33:52 +00:00
jesopo
43361961bb Move out logic to case-insensitively find a badge (badges.py) 2018-12-22 09:33:23 +00:00
jesopo
bd8ca2083b Typo, 'aliase' -> 'aliases' (commands.py) 2018-12-22 01:06:42 +00:00
jesopo
be1d06796b Add !removealias (commands.py) 2018-12-22 01:05:47 +00:00
jesopo
3039119f4a Actually set new args_split (commands.py) 2018-12-22 01:02:55 +00:00
jesopo
ae5eb9fc47 .partition returns a tuple of 3 (commands.py) 2018-12-22 01:01:25 +00:00
jesopo
498c1d647e Add basics of a command alias system 2018-12-22 01:00:38 +00:00
jesopo
44d2455766 This regex should have been r"" (commands.py) 2018-12-22 00:49:00 +00:00
jesopo
da42963e5c Add help and usage (badges.py) 2018-12-22 00:36:43 +00:00
jesopo
d2770c9642 Show actual date (not just days since) for !badge (badges.py) 2018-12-22 00:10:44 +00:00
jesopo
c2cc4fbd61 Show badges as "[badge] on day [count]" (badges.py) 2018-12-21 10:01:28 +00:00
jesopo
af70a28a45 'recevied' -> 'received' (timer.py) 2018-12-20 23:55:45 +00:00
jesopo
fe197b97ea Added timer.py 2018-12-20 23:54:35 +00:00
Evelyn
0c0e8c6b89 NR: list only called/total full count for service 2018-12-20 23:53:40 +00:00
Evelyn
aaca9dc4a6 Quit: We're getting there 2018-12-20 23:45:30 +00:00
jesopo
be7ae375ca Check that a user is updating an existing badge (badges.py) 2018-12-20 21:10:41 +00:00
jesopo
ebc835e6d5 'found_Badge' -> 'found_badge' (badges.py) 2018-12-20 21:05:47 +00:00
jesopo
20819a2478 Forgot to define now in !addbadge (badges.py) 2018-12-20 21:04:45 +00:00
jesopo
9547c116f1 Added !badge (badges.py) 2018-12-20 21:03:21 +00:00
jesopo
fa86ba8827 Always show badge names with the original capitalisation (badges.py) 2018-12-20 21:03:04 +00:00
jesopo
f1e72d4b4e Actually hook in to !removebadge (badges.py) 2018-12-20 20:51:03 +00:00
jesopo
a837ac3add Actually give badge name with update success message (badges.py) 2018-12-20 20:49:51 +00:00
jesopo
24ea68d150 Tell a user when a badge was successfully updated (badges.py) 2018-12-20 20:49:24 +00:00
jesopo
e010d21e4c year/month/day should be an int (badges.py) 2018-12-20 20:48:28 +00:00
jesopo
a43c5ef1f3 actually hook in to command for !resetbadge, format datetime to string before
putting it in a setting in reset_badge (badges.py)
2018-12-20 20:46:45 +00:00
jesopo
dbee856c4d Add !updatebadge to manually set a date on a badge (badges.py) 2018-12-20 20:46:18 +00:00
jesopo
03a3bdd73d Show "day"/"days" alongside day count 2018-12-20 20:30:23 +00:00
jesopo
ba3c1673ad now is already a datetime.date (badges.py) 2018-12-20 20:28:26 +00:00
jesopo
2e032bcc09 round up the current day when checking days since badge was created (badge.py) 2018-12-20 20:26:42 +00:00
jesopo
6d51473a73 Compare .date() when checking days between datetimes (badges.py) 2018-12-20 16:34:21 +00:00
jesopo
568eff01e0 typo in badges.py, 'datettime' -> 'datetime' 2018-12-20 16:32:04 +00:00
jesopo
f98797cd23 to iterate by key,value we need to .items() on dict (badges.py) 2018-12-20 16:31:04 +00:00
jesopo
0f37455665 strf datetime before saving it in settings (badges.py) 2018-12-20 16:30:15 +00:00
jesopo
751c93d59c 'isonow' -> 'utcnow' 2018-12-20 16:29:19 +00:00
jesopo
2a84e18b2e first commit of badge system 2018-12-20 16:28:14 +00:00
jesopo
41d680dad7 We should be checking if a channel name is in server.channels, not server 2018-12-19 21:43:10 +00:00
jesopo
8d8ebf7d55 Show sender of a pull request comment action, not the comment's user, for
when people edit other people's comments
2018-12-19 16:52:04 +00:00
Evelyn
aea215a647 NR: DEM is technically a permitted powertype 2018-12-18 20:30:10 +00:00
Evelyn
45fe512457 NR: fix regression introduced by HTTP util changes 2018-12-17 09:24:18 +00:00
jesopo
28900c2ff9 Correctly handle a 404 in thesaurus.py 2018-12-16 11:03:36 +00:00
jesopo
00ac4d208a Channels are 'target' in command events 2018-12-15 22:57:38 +00:00
jesopo
179cb40163 Add missing .data on a utils.http.request Response object (define.py) 2018-12-15 22:56:04 +00:00
jesopo
9658d0285e Support turning safe search on/off in google.py 2018-12-15 22:53:27 +00:00
jesopo
1ffc7863a0 If a request to git.io times out, fall back to full url 2018-12-14 08:49:37 +00:00
jesopo
d2fe95e0cc Fix missing change to new Response objects from utils.http.request (youtube.py) 2018-12-12 13:28:54 +00:00
jesopo
98ae6993e4 Typo, 'requestl' -> 'request' (wolframalpha.py) 2018-12-12 11:16:45 +00:00
jesopo
843d517553 'utils.http.get_url' -> 'utils.http.request' (github.py) 2018-12-11 22:40:20 +00:00
jesopo
c0002f4f09 Re-add accidentally removed ":" in trakt.py 2018-12-11 22:27:58 +00:00
jesopo
22c38ad083 Shorten github urls in github.py 2018-12-11 22:27:04 +00:00
jesopo
793d234a0b 'utils.http.get_url' -> 'utils.http.request', return a Response object from
utils.http.request
2018-12-11 22:26:38 +00:00
jesopo
a41cf7b471 Actually use action_desc in github.py.issues, so that we can see what things
are labeled as
2018-12-10 21:07:38 +00:00
jesopo
d0caebbc57 Support fork event (github.py) 2018-12-10 18:47:54 +00:00
jesopo
b696e4e818 Add basics of status event handling, mostly for use with continuous integration (github.py) 2018-12-10 17:17:40 +00:00
jesopo
a3a88d4589 Use more distinctive arrow characters for youtube up/down votes 2018-12-09 21:02:58 +00:00
jesopo
6dc58d4ceb Correctly support labeling pull requests, support unlabeling pull requests and support both on issues 2018-12-09 20:57:29 +00:00
jesopo
de60d245b5 Show newly added labels when a pull request is labeled 2018-12-09 19:36:23 +00:00
jesopo
8cc1168589 Return empty string on successful github webhook handling, not True 2018-12-08 09:10:44 +00:00
jesopo
9bef4b7df1 Switch to using a case insensitive dictionary for headers instead of doing
.title() on each header key
2018-12-08 09:00:12 +00:00
jesopo
281923a463 Check whether we actually have a httpd running when unloading rest_api.py 2018-12-08 08:56:47 +00:00
jesopo
476e4cc9c1 ["review"]["user"]["login"] -> ["sender"]["login"] to show who created a
pull_request_review event, not who started the review
2018-12-06 18:35:46 +00:00
jesopo
3e0bd3ee85 Add 'bot-channel' config in bot.conf.example and use it, if present, in
bot_channel.py
2018-12-06 12:13:59 +00:00
jesopo
7d59898485 'X-GitHub-Event' -> 'X-Github-Event' now that we .title() header keys
(github.py)
2018-12-06 12:09:58 +00:00
jesopo
9918a72f80 .items() on self.headers, to correctly use it for a dict comprehension
(rest_api.py)
2018-12-06 12:03:58 +00:00
jesopo
786e8b89a3 'content-type' -> 'Content-Type' (github.py) 2018-12-06 12:01:23 +00:00
jesopo
e6b0d4d167 .title() all header keys (rest_api.py) 2018-12-06 12:00:45 +00:00
jesopo
809efc6793 Only pop MODE args when we're certain we should (pays more attention to
CHANMODES ISUPPORT)
2018-12-06 08:26:07 +00:00
jesopo
dd0c5093a0 Remove telegram functionality - it's very broken/outdated and needs a
complete rewrite
2018-12-05 15:53:49 +00:00
jesopo
a8cb500784 utils.irc.lower channel names when adding them to the autojoin list 2018-12-05 15:46:51 +00:00
jesopo
764e1e3245 Prevent setting values to array settings and prevent adding to non-array
settings
2018-12-05 12:13:29 +00:00
jesopo
08a74d8b4d Don't try to call .isdigit() on an int object in coin.py.lottery_buy 2018-12-05 11:28:44 +00:00
jesopo
351a88bda6 Only gracefully handle SIGINT once 2018-12-03 19:46:15 +00:00
jesopo
48eeb11554 Remove use of print() in modules/line_handler.py 2018-12-02 09:46:57 +00:00
jesopo
92f255e9be typo in modules.py, '_reload' -> 'self._reload' 2018-12-02 09:19:03 +00:00
jesopo
389366ce5d Take a name param in modules.py._catch 2018-12-02 09:18:24 +00:00
jesopo
da81b20c01 Correctly return errors for load/unload, not just reload (modules.py) 2018-12-02 09:16:17 +00:00
jesopo
d1bbd8cfe3 Add missing urllib.parse import (github.py) 2018-11-30 21:54:51 +00:00
jesopo
fcc3bdda6b Support form-encoded github webhook data 2018-11-30 21:53:47 +00:00
jesopo
35108efc5f rest_api.py's '_safe_handle' function isn't used and doesn't need to be used now
that API calls are thrown straight on to the main thread
2018-11-30 21:39:28 +00:00
jesopo
aab84096fd utf8-decode github webhook json data 2018-11-30 21:09:59 +00:00
jesopo
6724ef94e5 Make coins.py compatible with versions of python under 3.6 2018-11-30 20:38:03 +00:00
jesopo
4ae7d3fbab Show who invited who when printing and invite (print_activity.py) 2018-11-27 17:36:22 +00:00
jesopo
6077d06c99 Copypaste fail, 'target_channel' -> 'event["target_channel"]'
(print_activity.py)
2018-11-27 17:34:10 +00:00
jesopo
e47edbddfb Print when we receive and INVITE 2018-11-27 17:33:24 +00:00
jesopo
dfbc727dc7 Don't prefix "self." events with "received." 2018-11-27 15:43:32 +00:00
jesopo
71775803d0 Reload bot config (on USR1) on the main thread 2018-11-27 15:10:49 +00:00
jesopo
dba4c9561c 'line' -> 'output' (github.py) 2018-11-27 15:07:22 +00:00
jesopo
d13a5069e3 Grab response from functions asked to be executed on the main thread and feed
them back to the callers, allowing rest_api.py to take the main thread while
it's waiting for the response to give back to the requesting client
2018-11-27 14:25:12 +00:00
jesopo
00d4b9c73f Show list of users in a channel, not just count 2018-11-27 13:34:51 +00:00
jesopo
7df55305ca Make channel stats in /api/servers a dictionary 2018-11-27 13:24:38 +00:00
jesopo
ab60012cbe Add channel stats to /api/servers 2018-11-27 13:23:20 +00:00
jesopo
8bbdcc6d4e Send WHO on self mode change, to catch any important changes to our user
information that mode changes can cause (e.g. hostname change)
2018-11-27 13:16:43 +00:00
jesopo
08b4d94695 Fix missing spaces in some event calls in line_handler.py 2018-11-27 13:16:19 +00:00
jesopo
d010ca5c79 Use WHO/WHOX to also keep track of our own username/hostname 2018-11-27 12:14:03 +00:00
jesopo
72dca06626 Add a way to catch when a writebuffer is emptied so we can e.g. assure a QUIT is
sent before shutting down the bot
2018-11-27 11:56:03 +00:00
jesopo
231fa51129 use '~' instead of '±' to represent "changed files" in modules/github.py 2018-11-26 14:47:47 +00:00
jesopo
bac4ba89b7 Use send.stdout in modules/in.py 2018-11-21 20:05:08 +00:00
jesopo
b8518d745f Move all logic related to score reasons until after we've checked if we have
reasons (mixed_unicode.py)
2018-11-20 20:43:26 +00:00
jesopo
993403f213 .items -> .items() 2018-11-20 20:41:51 +00:00
jesopo
957b5413dc Use collections.Counter instea of itertools.groupby to group together all
instances, not just consecutive instaces (mixed_unicode.py)
2018-11-20 20:30:48 +00:00
jesopo
45c7ce6da5 Add !disconnect to admin.py 2018-11-20 14:27:24 +00:00
jesopo
80dd3bb5e1 Don't count Unknown towards additional scripts count (mixed_unicode.py) 2018-11-20 14:17:46 +00:00
jesopo
0915dbd3fa 'AdditonalScript' -> 'AdditionalScript', 'score_reasons' -> 'reasons' 2018-11-20 13:50:07 +00:00
jesopo
537e2eebc4 Show reasons for score points (mixed_unicode.py) 2018-11-20 13:47:38 +00:00
jesopo
b98bf65a86 Add a point to a message's score for each additional script they use
(mixed_unicode.py)
2018-11-20 13:24:28 +00:00
jesopo
e31d9750ed (for the moment) remove percentage-ising scores (mixed_unicode.py) 2018-11-20 13:23:11 +00:00
jesopo
5ea34b261f TRACE log score with 2 decimal places (mixed_unicode.py) 2018-11-20 13:14:35 +00:00
jesopo
3dccc9f4e0 Keep a track of different scripts in a message, round score to 2 decimal places
(mixed_unicode.py)
2018-11-20 13:13:11 +00:00
jesopo
c59a5600a8 Score mixed unicode as a percentage (mixed_unicode.py) 2018-11-20 13:08:47 +00:00
jesopo
727ade4022 Only TRACE log when score is more than 0 (mixed_unicode.py) 2018-11-20 12:42:45 +00:00
jesopo
f507da3b9a 'BLUE' -> 'LIGHTBLUE' branch name for push and create events (github.py) 2018-11-20 12:40:26 +00:00
Evelyn
563bc59208 Mixed unicode: Add Cherokee and Tai Le blocks 2018-11-20 12:29:03 +00:00
Evelyn
22939dd0a9 Mixed unicode: Ranges expressed in hex, with comments 2018-11-20 12:18:56 +00:00
Evelyn
e70ec91a7a Add Coptic range to mixed unicode module 2018-11-20 12:07:54 +00:00
jesopo
52d5b5da49 Detect full-width characters (mixed_unicode.py) 2018-11-20 12:00:47 +00:00
jesopo
e54db0858c Detect Armenian script (mixed_unicode.py) 2018-11-20 11:44:13 +00:00
jesopo
b19ce0be2f Add first version of modules/mixed_unicode.py, designed to detect when we get a
message that mixes scripts (latin, cyrillic, greek, etc) that might be spam
2018-11-20 11:38:30 +00:00
jesopo
c2ef675bf0 Better descript opened pull requests (github.py) 2018-11-20 10:27:28 +00:00
jesopo
c77ca64367 Change merged branch name from blue to light blue (github.py) 2018-11-20 10:16:39 +00:00
jesopo
371d9bd9d6 Only color branch name when it's not in the url 2018-11-19 21:36:24 +00:00
jesopo
ded49fe92a But blue-ification on branch/tag name, not on "branch"/"tag" 2018-11-19 21:34:36 +00:00
jesopo
e5ae963193 Blue-ify tag/branch for create event 2018-11-19 21:31:29 +00:00
jesopo
da2c403dd7 Don't bold action_desc for pull_request event action (github.py) 2018-11-19 21:08:57 +00:00
jesopo
58a0cf97cf Move "(" on to start line for a string format 2018-11-19 20:56:42 +00:00
jesopo
5767a1b32e Show branch when a pull request is merged 2018-11-19 20:54:40 +00:00
jesopo
5d813175a1 Don't enable write throttling until we get 005 2018-11-19 10:12:52 +00:00
jesopo
9cdc37ce72 'factoid' -> 'value' 2018-11-18 11:18:37 +00:00
jesopo
c227f9a34f Catch factoids in channel messages as '{!factoid <name>}' (factoids.py) 2018-11-18 10:31:44 +00:00
jesopo
fd805a07db Make branch names blue AND bold! (github.py) 2018-11-18 10:27:19 +00:00
jesopo
7b430a71b0 Don't 404 when a repo is hooked in to but a specific event type isn't listened
for (github.py)
2018-11-18 10:25:32 +00:00
jesopo
6fbbcace66 Make branch names in commit notifications blueified 2018-11-18 10:20:16 +00:00
jesopo
ec373cf667 Add help/usage to factoids.py 2018-11-18 07:59:47 +00:00
jesopo
130da6f769 Add missing '%s' in string format (factoids.py) 2018-11-18 07:57:51 +00:00
jesopo
b811872577 'ModululeManager' -> 'ModuleManager' (factoids.py) 2018-11-18 07:56:55 +00:00
jesopo
5bb96c0d0c Added modules/factoid.py 2018-11-18 07:55:43 +00:00
jesopo
870c56cfbb hooks -> targets, to actually respect filtered-out channels 2018-11-17 22:39:14 +00:00
jesopo
a7e2eacf1d typo in modules/github.py, 'targets.append(server, channel)' ->
'targets.append([server, channel])'
2018-11-17 22:35:32 +00:00
jesopo
369af13e4b ... this one too. 2018-11-17 22:34:51 +00:00
jesopo
dd47db25f9 I forgot that I'd changed how servers keep their list of channels 2018-11-17 22:33:31 +00:00
jesopo
dc1a292a75 Allow filtering by github event type 2018-11-17 22:32:44 +00:00
jesopo
099613d2bc 'tag' -> 'tag_name' (github.py) 2018-11-17 22:17:14 +00:00
jesopo
dfa11b0f18 Nope, "..." is an official git feature and it looks way nicer on github 2018-11-17 22:07:32 +00:00
jesopo
d35636733a '..' not '...' 2018-11-17 22:01:58 +00:00
jesopo
39bbde57a0 '...', not unicode ellipsis 2018-11-17 22:01:09 +00:00
jesopo
3b952ba66e Remove newlines for formatted strings where applicable (github.py) 2018-11-17 21:44:52 +00:00
jesopo
4ad35006c0 Show branch in commit notices in (github.py) 2018-11-17 21:44:33 +00:00
jesopo
e1cff13dbe Put repo full name on each output automatically in modules/github.py 2018-11-17 21:41:39 +00:00
jesopo
f34bad8562 Support Github webhook release events 2018-11-17 21:21:32 +00:00
jesopo
b17c8d79bf Remove additional '%s' in modules/github.py.delete that was left over from
copypaste of `create`
2018-11-17 21:12:12 +00:00
jesopo
fa2de60edf Also support delete event 2018-11-17 21:10:03 +00:00
jesopo
32301ae334 'CREATE_EVENT' -> 'CREATE_URL' 2018-11-17 21:07:34 +00:00
jesopo
aeb7ee76ea 'name' -> 'login' 2018-11-17 21:06:27 +00:00
jesopo
c5293ef5bf 'pusher' -> 'sender' 2018-11-17 21:05:08 +00:00
jesopo
0da685bb0a Actually, tag/branch creation comes under the create event 2018-11-17 20:59:24 +00:00
jesopo
e6542f3fb2 Correctly show new tags being created in modules/github.py 2018-11-17 20:48:19 +00:00
jesopo
9f086d56a4 Only show first line of commit message 2018-11-17 20:33:23 +00:00
jesopo
0f2a8c7932 Minor code styling change in modules/8ball.py 2018-11-17 12:48:42 +00:00
jesopo
7ef8437d44 range()'s upper bound is not inclusive 2018-11-17 12:29:24 +00:00
jesopo
0da18aa86d now i see why it was %s not %d 2018-11-17 12:26:21 +00:00
jesopo
9054ee7cd2 How hard is it to refactor a dice module 2018-11-17 12:25:14 +00:00
jesopo
349c9a0190 ints are not strings 2018-11-17 12:23:49 +00:00
jesopo
692c79c745 'reults' -> 'results' 2018-11-17 12:23:06 +00:00
jesopo
d130b0e59b 'die_sides' 'die_count' -> 'sides_n' 'count_n' 2018-11-17 12:22:05 +00:00
jesopo
0f8a3231c6 Should be using sides and count, not roll[0] and roll[1] 2018-11-17 12:21:09 +00:00
jesopo
97b2158956 .partition returns 3 values! 2018-11-17 12:19:32 +00:00
jesopo
73ecb42ca9 Simplify modules/dice.py 2018-11-17 12:18:26 +00:00
jesopo
43e39c42c7 'bol' -> 'bold' typo 2018-11-17 09:40:44 +00:00
jesopo
2072c9f3e8 Boldify pusher for combined commits 2018-11-17 09:39:27 +00:00
jesopo
b15ef9f739 use "before" commit hash for comparing a range of commits 2018-11-17 08:28:48 +00:00
jesopo
5a742f05a3 Typo in modules/github.py, 'moddified' -> 'modified' 2018-11-17 08:24:31 +00:00
jesopo
331a4e0a7a 'command' -> 'commit' 2018-11-17 08:22:39 +00:00
jesopo
f6b68815c9 utils.irc.bold needs to be given an empty string 2018-11-17 08:21:40 +00:00
jesopo
b27bffaa50 Typo in modules/github.py, 'const' -> 'consts' 2018-11-17 08:20:34 +00:00
jesopo
ea881724ee Forgot to import itertools 2018-11-17 08:19:45 +00:00
jesopo
e0a6ba39c6 show added/removed/modified counts as unique files when we're aggregating
commits
2018-11-17 08:15:28 +00:00
jesopo
ffb2382b8f Add missing ")" 2018-11-16 20:40:49 +00:00
jesopo
c0c6178c30 Show more than 3 commits in 1 message speficially designed for doing so 2018-11-16 20:39:37 +00:00
jesopo
10c457f524 Don't send more than 3 commits in one go 2018-11-16 20:23:34 +00:00
jesopo
39c313bd64 we need strings! 2018-11-16 17:43:05 +00:00
jesopo
b008bb2a0f results was already a ", ".joined string 2018-11-16 17:42:00 +00:00
jesopo
8e5415b887 second format arg should have been results 2018-11-16 17:40:49 +00:00
jesopo
b176701e0a Fix string formatting of modules/dice.py 2018-11-16 17:39:33 +00:00
jesopo
cec97749e5 Make IP regex neater in modules/ip_addresses.py 2018-11-15 15:41:55 +00:00
jesopo
64a58fe041 Translate 'synchronize' to 'committed to' in modules/github.py's pull request
handling
2018-11-15 07:06:43 +00:00
jesopo
06078ba959 Prefix modules/rest_api.py logging with "[HTTP] " 2018-11-14 23:02:32 +00:00
jesopo
1275352576 Log HTTP events through regular logging 2018-11-14 23:01:22 +00:00
jesopo
e262af4acf 'self.message.*' now uses 'send.message.*' 2018-11-14 22:54:27 +00:00
jesopo
ba68f33999 This elif should have actually been one even indented! 2018-11-14 22:18:54 +00:00
jesopo
21b757dbb0 IRCBuffer.add_notice doesn't have an action param 2018-11-14 22:16:39 +00:00
jesopo
ac87104151 Remove a ") i should have removed before 2018-11-14 22:14:12 +00:00
jesopo
c7f32a4066 only do server-notice checking if we have a "prefix" in event, even if it's None 2018-11-14 22:12:46 +00:00
jesopo
957b881dbd if is_channel should be if channel, buffer.add_notice doesn't take an
`action` param and `elif` can't go after `else`!
2018-11-14 22:07:01 +00:00
jesopo
378f4b1f93 Better parsing of CTCP messages, support raw.send.privmsg/raw.send.notice in
modules/line_handler.py
2018-11-14 21:28:27 +00:00
jesopo
05eea3b585 Strip font from the last message in a channel before trying to translate it 2018-11-14 14:44:01 +00:00
jesopo
ed838193aa Better support passing "send" events through the parsers already present in
modules/line_handler.py
2018-11-14 14:41:28 +00:00
jesopo
aafe0624b2 Do a bold+unbold *after* the colored parts of github's "added/removed/modified"
to avoid the weechat bolding bug but not bold the colors
2018-11-14 08:51:49 +00:00
jesopo
775177a7ff Add 375 data to server.motd_lines 2018-11-14 08:22:21 +00:00
jesopo
0b1881b1a9 purple doesn't need the bold() trick as weechat doesn't bold it to make it the
color it is, thus a forceful unbolding isn't required!
2018-11-13 17:59:45 +00:00
jesopo
765ae0fcf9 Add code to tokenize and ansi-replace IRC colors; use this in
modules/print_activity.py
2018-11-13 17:23:28 +00:00
jesopo
8b9062b942 Better constifying of color/font chars 2018-11-13 16:02:26 +00:00
jesopo
555e8faa03 Print MOTD in modules/print_activity.py (after caching it in
modules/line_handler.py)
2018-11-13 14:59:47 +00:00
jesopo
fad4715b5c Add "prefixed-commands" to !channelset 2018-11-12 23:00:51 +00:00
jesopo
0c8678d44f Add a way to tell bitbot to only response to highlight-based commands (e.g. "bitbot: ping") but ignore prefixed commands (e.g. "!ping") 2018-11-12 22:59:21 +00:00
jesopo
49a21b2d36 Add a way to prevent responses to commands at all in specific channels 2018-11-12 22:55:40 +00:00
jesopo
439994464f The target channel of an /INVITE is the second argument! 2018-11-12 22:37:01 +00:00
jesopo
911ace524d Typo in modules/rest_api.py, 'args_spit' -> 'args_split' 2018-11-12 22:20:46 +00:00
jesopo
161272daf5 Better denote variable-length "endpoint" arg in !apikey's usage 2018-11-12 20:44:46 +00:00
jesopo
6308ec86b7 Remove accidentally-added additional argument in modules/set.py.bot_set 2018-11-12 20:33:56 +00:00
jesopo
6e4e358ed1 Typo in modules/rest_api.py, 'seting' -> 'setting' 2018-11-12 18:18:07 +00:00