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 '<' 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 ERROR
s 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
jesopo
78b3ca3cdc
Typo on modules/rest_api.py, '= =' -> '='
2018-11-12 18:16:55 +00:00
jesopo
eb215d61a1
'api-minify' -> 'rest-api-minify' and make it settable from !botset
2018-11-12 18:15:08 +00:00
jesopo
a0e86f79c3
Change API key checking on-request to match what the values should be in the
...
database (dict of '{"name": , "permissions": }')
2018-11-12 18:06:02 +00:00
jesopo
a943e69cee
Change API keys to be hex representations of UUID4s, change their value in the
...
database to be a dictionary ({"comment": , "permissions": }) and change the
!apikey command to take a `comment` arg (to note what specific keys are intended
for) and vararg `permissions` (a list of endpoints the API key is allowed to
hit)
2018-11-12 17:59:40 +00:00
jesopo
251f65c048
Boldify authors in modules/github.py
2018-11-12 17:16:17 +00:00
jesopo
d4bb690e83
Remove no-longer-used Regexes in modules/line_handler.py
2018-11-12 12:48:41 +00:00
jesopo
fa9c870e22
Boldify "merged"/"closed without merging" in modules/github.py
2018-11-12 10:24:22 +00:00
jesopo
0fc9b396f1
'files: %s/%s/%s' -> '%s/%s/%s files'
2018-11-12 08:48:21 +00:00
jesopo
3909d679de
Fix copypaste fail in modules/github.py
2018-11-12 08:48:09 +00:00
jesopo
7275408b35
Delimit added/removed/modified with "/" and boldify them
2018-11-12 08:44:15 +00:00
jesopo
4716ad16b9
Change "modified" color from yellow to purple, remove unneeded space
2018-11-12 08:38:18 +00:00
jesopo
102d7491ef
Change added/removed/modified order, change modified symbol and added colors to
...
added/removed/modified
2018-11-12 08:35:16 +00:00
jesopo
6bb03c4519
Don't implicitly create channels, explicitly create channels when we join one
2018-11-11 13:03:54 +00:00
jesopo
c50622c1a4
Typo in modules/line_handler.py, 'getl' -> 'get'
2018-11-11 12:50:12 +00:00
jesopo
2816fe67bb
Move channel tracking data/functions to src/IRCChannel.Channels
2018-11-11 12:34:22 +00:00
jesopo
57aa62cc9c
API keys should have a value of []
when they're created, not True
2018-11-11 09:03:19 +00:00
jesopo
b8e6bfd5e5
Add a way of appending a comment on an API key, to denote what it's for.
2018-11-11 09:02:48 +00:00
jesopo
b06eff217f
typo in modules/rest_api.py; 'resonse' -> 'response'
2018-11-11 08:55:49 +00:00
jesopo
9c7afe7d2b
Add missing "," in modules/rest_api.py
2018-11-11 08:54:46 +00:00
jesopo
36ab270971
typo in modules/rest_api.py, 'permimssions' -> 'permissions'
2018-11-11 08:53:37 +00:00
jesopo
8024bc9c80
Add a way to minify REST API responses in modules/rest_api.py
2018-11-11 08:51:50 +00:00
jesopo
d72e01aa68
update modules/stats.py to use connection_params
2018-11-11 08:47:21 +00:00
jesopo
8d350aa5f5
Show bytes read/written in server stats
2018-11-11 08:44:46 +00:00
jesopo
9826209ddf
Add missing "}"s in modules/check_mode.py
2018-11-10 22:35:35 +00:00
jesopo
dbe0d6cdab
Treat "low"/"high" as synonymous with "v"/"o" but with a settable override in
...
modules/check_mode.py
2018-11-10 22:32:44 +00:00
jesopo
07c813cc1f
Add basic access controls to modules/rest_api.py
2018-11-10 21:54:08 +00:00
jesopo
22660067d5
Remove unneeded string literal for resume
CAP
2018-11-09 11:15:07 +00:00
jesopo
bc5f9351b1
Make .get() default explicit
2018-11-09 10:47:27 +00:00
jesopo
4bab1aea30
Add a way to more explicitly denote when a CAP handshake has ended early
2018-11-09 10:43:05 +00:00
jesopo
7390367a5a
Add missing ")" in modules/stats.py
2018-11-08 22:30:06 +00:00
jesopo
57f697a378
Add !caps to show negotiated IRCv3 capabilities
2018-11-08 22:28:32 +00:00
jesopo
093fc5b2a8
Make hiding [Github] prefix dependent on channel setting
2018-11-08 17:48:23 +00:00
jesopo
2b106adc05
Add missing ".get(" in modules/resume.py
2018-11-08 17:29:20 +00:00
jesopo
150ad512ad
Add missing "," in modules/resume.py
2018-11-08 17:28:21 +00:00
jesopo
b3625dbe13
Support IRCv3's draft/resume-0.2
2018-11-08 17:09:53 +00:00
jesopo
2e43c9f3cf
Add a way to halt CAP before it hits CAP END
2018-11-08 17:08:46 +00:00
jesopo
88cb327d02
Only send 'PROTOCTL NAMESX' when we're not already got IRCv3's multi-prefix CAP
...
active
2018-11-08 14:30:50 +00:00
jesopo
26a16a7762
Keep a dict of isupport key:values on IRCServer.Server
2018-11-08 12:34:30 +00:00
jesopo
9744be6473
INFO instead of TRACE log for STS policy setting and connection upgrade
2018-11-08 12:21:54 +00:00
jesopo
4d272a3fa4
Refactor handling ISUPPORT and support hex escapes therein
2018-11-08 11:13:19 +00:00
jesopo
f15e3c8ffe
We don't need to expliticly print issue/pr numbers; they're shown in the urls
2018-11-07 19:27:22 +00:00
jesopo
7489b3dd96
"%s commented on" -> "%s commented on a review"
2018-11-07 19:22:12 +00:00
jesopo
66a904b5aa
don't show pull request review events when they're "commented"
2018-11-07 19:21:59 +00:00
jesopo
d961416401
Color "merged" and "closed without merging" in green and red respectively
2018-11-07 11:47:54 +00:00
jesopo
773412cdb0
Hide [Github] prefix in modules/github.py
2018-11-07 11:27:34 +00:00
jesopo
1696492a78
Add ability to hide [Prefix] from command outputs
2018-11-07 11:27:10 +00:00
jesopo
4000479cf0
Better show when a PR is merged or not merged when closingd
2018-11-07 08:23:07 +00:00
jesopo
6234334a7c
I decided to not specifically handle printing arrays in !get/!channelget/etc but
...
forgot to remove this code
2018-11-06 17:35:59 +00:00
jesopo
1dfa10ea9d
Typo in modules/github.py, 'COMMENT_ACTION' -> 'COMMENT_ACTIONS'
2018-11-06 17:23:27 +00:00
jesopo
08355c026e
Log errors caught when trying to execute API endpoints
2018-11-06 17:22:50 +00:00
jesopo
2bdac13752
Make "created a comment on" more readable with "commented on"
2018-11-06 17:05:40 +00:00
jesopo
367657901d
Better indicate that comments/reviews are for the given title, instead of it
...
seeming like the title is the comment body
2018-11-06 16:10:26 +00:00
jesopo
0e2d2b268a
Handle github_event 'ping'
2018-11-06 16:08:02 +00:00
jesopo
7c49152ef6
if an issue comment is from a pull request, it's denoted by the presence of
...
data["issue"]["pull_request"]
2018-11-06 15:01:02 +00:00
jesopo
12bc12e2ab
issue_comment is fired for both issue comments AND pull request comments.
...
weirdly.
2018-11-06 14:55:47 +00:00
jesopo
f06c824ae9
Only count a None
response from an API event hook to be a 404
2018-11-06 14:09:13 +00:00
jesopo
276fe2c8fa
Allow a json.loads
error in modules/github.py to bubble back up to
...
modules/rest_api.py
2018-11-06 14:08:35 +00:00
jesopo
be3ee373dd
Typo in modules/github.py, 'for output in output' -> 'for output in outputs'
2018-11-06 14:02:03 +00:00
jesopo
c3c6080117
Don't parse github events when there are no channels listening for the given
...
repo
2018-11-06 14:01:49 +00:00
jesopo
b6ad57f965
github-hook
is an array
2018-11-06 14:01:30 +00:00
jesopo
65b182c9a9
'event["headers"]' -> 'event["headers"]["X-GitHub-Event"]'
2018-11-06 14:01:02 +00:00
jesopo
8789689393
Remove additional 'False' in modules/set.py that was an artefact of the first
...
attempt to support array setting
2018-11-06 13:48:32 +00:00
jesopo
7d71da47a0
Typo in modules/set.py; '=' -> '=='
2018-11-06 13:44:33 +00:00
jesopo
c3295c4140
Support more than just push
actions in modules/github.py
2018-11-06 13:43:06 +00:00
jesopo
bbec7f311d
Pass headers through REST API callbacks
2018-11-06 13:02:04 +00:00
jesopo
2921ed77ae
Support arrays of user/channel/bot/server settings
2018-11-06 13:01:30 +00:00
jesopo
8930d04567
server
should be passed in received.rename in modules/line_handler.py
2018-11-05 21:38:39 +00:00
jesopo
257659aa73
Change modules/sts.py to reference connection_params, fix some typos and logig
...
issues
2018-11-05 20:51:33 +00:00
jesopo
ea3ed99a9e
Explicitly disconnect before reconnecting in modules/sts.py
2018-11-05 20:35:23 +00:00
jesopo
f0f2701386
Do an instant reconnect for !reconnect in modules/admin.py
2018-11-05 20:03:45 +00:00
jesopo
d63115440d
Fix the order of some connection params, add alias
as a seperate argument to
...
IRCServer.Server
2018-11-05 18:30:39 +00:00
jesopo
6b8593a09b
Pass connection parameters around in their own object (IRCConnectionParameters)
2018-11-05 18:23:02 +00:00
jesopo
e26df7556a
Check that a server's STS policy has a duration
before doing
...
rescheduling-on-disconnect
2018-11-05 18:21:43 +00:00
jesopo
7c3a8e7444
Prettyprint channel RENAMEs
2018-11-05 16:42:33 +00:00
jesopo
4936b91273
Support JSON messages tags, as per IRCv'3 message-tags-0.3 #318 pull request
2018-11-05 15:15:08 +00:00
jesopo
90a72eb24d
TRACE log when we set an STS policy
2018-11-05 14:57:34 +00:00
jesopo
edbacce1fc
Support draft/sts
as well as sts
2018-11-05 14:52:25 +00:00
jesopo
5b2c979649
"Applying STS policy" should be TRACE, not DEBUG
2018-11-05 14:16:14 +00:00
jesopo
7408bfc9d3
Add missing ")" in modules/sts.py
2018-11-05 14:13:27 +00:00
jesopo
9b6e3c96ed
Add missing "," in modules/sts.py
2018-11-05 14:12:59 +00:00
jesopo
aaf0c8cf2a
Reschedule STS expiration on disconnect
2018-11-05 14:12:21 +00:00
jesopo
3fa16fe678
Explicitly *remove* STS policy when we get a duration of 0
2018-11-05 13:26:11 +00:00
jesopo
5fa442c8a5
info
does not exist in on_cap_new context in modules/sts.py
2018-11-05 13:25:51 +00:00
jesopo
061a4ede23
One-shot STS policies should still be cleared if a reconnect fails
2018-11-05 13:14:00 +00:00
jesopo
5981bfa04c
Made STS policies one-shot when upgrading from plaintext to tls
2018-11-05 13:03:45 +00:00
jesopo
19864a7e13
duration
does not exist in the context of _change_duration
2018-11-05 12:59:40 +00:00
jesopo
c3a2ffc48d
Add support for IRCv3's STS
2018-11-05 12:39:02 +00:00
jesopo
7baab0f7d7
Update modules/scripts.py to use utils.parse.hashflags instead of
...
utils.get_hashflags
2018-11-05 12:15:54 +00:00
jesopo
9c233cd4dd
Add src.utils.parse.keyvalue, mostly for IRCv3 CAP negotiation
2018-11-05 11:56:28 +00:00
jesopo
5963580cb8
Fix a crash in modules/line_handler.py; QUIT can have an empty reason!
2018-11-05 10:03:31 +00:00
jesopo
58363895f1
Change line parsing to put arbitrary-length args on the end of
...
`args` so we can get rid of `last`/`arbitrary` and add IRCArgs (with .get())
to help only getting an arg index if it exists
2018-11-04 15:37:06 +00:00
jesopo
6d742f6a74
Implement IRCv3's draft/rename
2018-11-04 14:48:55 +00:00
jesopo
9b2040e280
Show wallet balances in a human format (with ","s)
2018-11-02 13:09:09 +00:00
jesopo
44f3e241d2
Don't let users bet 0 coins
2018-11-02 13:07:46 +00:00
jesopo
2acf9bdd31
Show !coins in a human format (with ","s)
2018-11-02 12:47:00 +00:00
jesopo
24e4e2c5ad
Add a way to silently stop commands executing in modules/commands.py
...
(preprocess.command)
2018-11-02 11:13:43 +00:00
jesopo
4fcb80b834
serverset identity-mechanism should be in modules/permissions.py
2018-11-02 11:08:03 +00:00
jesopo
18d055bb9e
Check if a url is a gallery first, 'event' -> 'data' typo, actually return from
...
_prefix
2018-10-31 17:54:44 +00:00
jesopo
04e369a92d
Use gallery API endpoint for gallery urls
2018-10-31 17:44:21 +00:00
jesopo
ff1d4da362
Support galleries in modules/imgur.py
2018-10-31 17:41:12 +00:00
jesopo
60151dc1a0
Comma-delimit numbers in the !richest response
2018-10-31 16:46:40 +00:00
jesopo
8212fc51eb
imgur url hashids aren't always 7 characters
2018-10-31 16:29:24 +00:00
jesopo
bf6a740f7b
Fix typo in modules/imgur.py that caused headers
passed to utils.http.get_url
...
to be a set, not a dict. (',' -> ':')
2018-10-31 16:17:22 +00:00
jesopo
0066cb313e
REGEX_IMAGE should be a compiled regex!
2018-10-31 16:16:31 +00:00
jesopo
f073613848
Add first version of modules/imgur.py
2018-10-31 16:12:28 +00:00
jesopo
b58a3f7329
Update modules/line_handler.py to now not pass a server
param to
...
utils.irc.parse_line
2018-10-30 17:55:05 +00:00
jesopo
e07553c362
Add type/return hints throughout src/ and, in doing so, fix some cyclical
...
references.
2018-10-30 14:58:48 +00:00
jesopo
705daaf9bb
Don't needlessly search a youtube URL before getting the information for it's
...
video ID when a URL is provided to !yt
2018-10-29 23:13:32 +00:00
jesopo
73077b9bbf
'continue' -> 'return' in moules/badwords.py
2018-10-28 14:02:43 +00:00
jesopo
82f8a23503
badwords shouldn't effect users with +v or above
2018-10-28 14:01:54 +00:00
jesopo
85f86f9d8a
Pretend badwords list is zero-indexed
2018-10-28 12:44:48 +00:00
jesopo
73a33633e2
Fix wording for !badwordsdel (copypaste fail!)
2018-10-28 12:41:01 +00:00
jesopo
996df4dc5e
Correctly use enumerate() in modules/badwords.py.badwords_list
2018-10-28 12:40:39 +00:00
jesopo
53f027bea1
'pattern' -> 'badword'
2018-10-28 12:37:32 +00:00
jesopo
0ff934d5b9
'received.message.channel' uses 'channel' not 'target' as event kwarg
2018-10-28 12:36:28 +00:00
jesopo
7472079f60
'badowrds' -> 'badwords'
2018-10-28 12:35:35 +00:00
jesopo
27bfe2e23d
Yet another typo in modules/badwords.py, 'get_getting' -> 'get_setting'
2018-10-28 12:34:18 +00:00
jesopo
09779ca570
'channel' -> 'target' in modules/badwords.py
2018-10-28 12:33:26 +00:00
jesopo
60421382d4
Fix typo in modules/badwords.py, 'events' -> 'event'
2018-10-28 12:32:24 +00:00
jesopo
c28c85cdd6
Add missing ":" in modules/badwords.py
2018-10-28 12:31:42 +00:00
jesopo
d3563eea69
Add missing ")" in modules/badwords.py
2018-10-28 12:30:53 +00:00
jesopo
c577f9d1ad
Add first version of modules/badwords.py
2018-10-28 12:29:35 +00:00
jesopo
b34f4d70a5
Remove extra ) in modules/commands.py
2018-10-28 11:54:55 +00:00
jesopo
5553ac9e49
Typo in modules/command.py, 'is' -> 'if'
2018-10-28 11:53:31 +00:00
jesopo
ec72787f86
Support multiple "usage" values in commands.py
2018-10-28 11:50:56 +00:00
jesopo
c5e1fafeb1
Put a dash between commit message and commit url
2018-10-26 11:28:01 +01:00
jesopo
e9ed153aa3
Put commit urls on github webhook notices in modules/github.py
2018-10-26 11:25:28 +01:00
jesopo
fd9778bd25
Redo lottery timer in modules/coins.py
2018-10-24 16:03:28 +01:00
jesopo
a1e77c40e8
Give page
an initial value of None, in case the get_url call fails in
...
modules/eval_python.py
2018-10-24 13:54:22 +01:00
jesopo
f89b96f373
Move taking a reference to sys.stdout above fail() in modules/eval_python.py
2018-10-24 13:54:03 +01:00
jesopo
46179d2f38
There's no self
in eval_python's template!
2018-10-24 13:50:50 +01:00
jesopo
7f9399a925
Specifically catch SyntaxError in modules/eval_python.py
2018-10-24 13:43:34 +01:00
jesopo
99f896ebdd
Catch syntax errors with .py/.py2
2018-10-24 13:40:56 +01:00
jesopo
ae0825650e
.items()
-> .values()
2018-10-23 13:39:40 +01:00
jesopo
1794da1f66
Typo in modules/coins.py, 'amount_amount_total' -> 'bet_amount_total'
2018-10-23 13:38:04 +01:00
jesopo
e9fcd0c5e2
Re-move taking payin to before payout, better logic around win/odds to show it
...
correctly but still give back your bet amount
2018-10-23 13:36:33 +01:00
jesopo
7508b0f5e7
Switch back to only taking losses when they're losses, instead of taking payin
...
and then giving it back after the roulette spin
2018-10-23 13:20:13 +01:00
jesopo
db5d9fdb42
_take already gives back to pool
2018-10-23 13:19:51 +01:00
jesopo
7c04ff2e89
Don't try to parse wallet args as a bet amount in modules/coins.py
2018-10-23 00:36:02 +01:00
jesopo
69ebba27bb
Roulette wins should include the payin
2018-10-22 20:23:28 +01:00
jesopo
046e8935df
When deleting a wallet, shift funds to default 'in' wallet instead of assuming a
...
user has a 'default' named wallet
2018-10-22 16:49:20 +01:00
jesopo
e4be2cf339
Fix indication of optionalness of wallet
param of !defaultwallet
2018-10-22 16:23:56 +01:00
jesopo
2e6db95574
Copypaste fail in modules/coins.py, 'row' -> 'i'
2018-10-22 14:23:09 +01:00
jesopo
1614ad9c48
Add lcorner/rcorner bets to !roulette in modules/coins.py
2018-10-22 14:22:10 +01:00
jesopo
84b4a064b8
Add double streets to !roulette in modules/coins.py
2018-10-22 14:11:32 +01:00
jesopo
399e20acc7
Fix copypaste fail in modules/coins.py.move_coins
2018-10-22 14:01:34 +01:00
jesopo
ddcd99405a
Add !movecoins in modules/coins.py
2018-10-22 13:59:25 +01:00
jesopo
77cf1a6afe
Dict are immutable, duh.
2018-10-22 13:14:08 +01:00
jesopo
c6b8e4487d
Typo in help string in modules/coins.py, 'By' -> 'Buy'
2018-10-22 13:13:54 +01:00
jesopo
ec96eda1a3
_default_wallet is not _default_wallet_for
2018-10-22 13:13:30 +01:00
jesopo
8e2a3be90d
_default_wallets takes a user
param
2018-10-22 13:13:13 +01:00
jesopo
d4aef86f7e
_default_wallet_for is for find the default type of a given wallet, not the
...
wallet for a given default type
2018-10-21 12:16:05 +01:00
jesopo
da5a53c9e0
Add missing .items() to dict iteration in modules/coins.py
2018-10-21 12:14:09 +01:00
jesopo
dd99460390
Show default wallet for wallet types when you don't specify 2 args to
...
!defaultwallet
2018-10-21 12:13:08 +01:00
jesopo
e614eb8e75
'DEFAULT_WALLETS' -> 'WALLETS_DEFAULTS'
2018-10-21 12:10:44 +01:00
jesopo
42123442dc
Add missing "," in modules/coins.py
2018-10-21 12:09:35 +01:00
jesopo
4dbad92f3b
use default "interest" wallet for interest and default "lottery" wallet for
...
lottery winnings
2018-10-21 12:08:29 +01:00
jesopo
30a1631edc
'WALLET_DEFAULT' -> 'WALLET_DEFAULT_NAME'
2018-10-21 12:00:19 +01:00
jesopo
87b3c47bcb
prevent !removewallet on any wallet that's configured as a default
2018-10-21 11:57:06 +01:00
jesopo
733d954dc8
Add configurable default wallets for different actions!
2018-10-21 11:52:12 +01:00
jesopo
b69e334ad0
wallet args in !roulette need to have their position calculated!
2018-10-21 08:21:58 +01:00
jesopo
8ea6db9422
Standardise "Failed to load results" errors!
2018-10-20 20:53:24 +01:00
jesopo
90c730979a
Typo in modules/coins.py, 'nickanme' -> 'nickname'
2018-10-20 19:08:46 +01:00
jesopo
7a94c1efff
_take takes a server
param
2018-10-20 14:07:24 +01:00
jesopo
a47542bb5b
Add wallets to usage strings and add missing help in modules/coins.py
2018-10-20 14:00:28 +01:00
jesopo
e7bece4621
Use the correct arg_split index for parsing wallet in !givecoins
2018-10-20 13:55:47 +01:00
jesopo
44c67ad5d9
Typo in modules/channel_op, 'this' -> 'self'
2018-10-19 14:37:24 +01:00
jesopo
94a3461d39
Parse in/out wallet in the context of their relevant users
2018-10-19 13:03:21 +01:00
jesopo
b9d5db821e
We should be using _take, not _set_user_coins in !roulette
2018-10-19 12:12:27 +01:00
jesopo
ae07ea9da1
Actually by-default give people the default wallet
2018-10-19 11:50:11 +01:00
jesopo
093ff298ec
Use genexprs for sum() throughout modules/coins.py
2018-10-19 11:48:21 +01:00
jesopo
a5c9568d23
send() should check all user coins when checking for redeem-amount
2018-10-19 11:47:34 +01:00
jesopo
71da117060
_default_wallets takes a user
param
2018-10-19 11:44:59 +01:00
jesopo
b930f3c0cf
Dangerous typo in modules/coins.py - 'wallet' -> 'wallets'
2018-10-19 11:38:23 +01:00
jesopo
303640844d
Typo in modules/coins.py, 'DEFAUT' -> 'DEFAULT'
2018-10-19 11:35:25 +01:00
jesopo
ba1079d661
Protect against unknown wallets, show "new total" of output wallet when a coin
...
flip is won
2018-10-19 11:34:18 +01:00
jesopo
ab4f65f8de
Correctly pass wallet through in _give/_take/_move
2018-10-19 11:24:44 +01:00
jesopo
3e65983fbc
_user_has_wallet takes a user
param!
2018-10-19 11:21:37 +01:00
jesopo
472c4fb1f3
Typo in modules/coins.py, "len(list > 2)" -> "len(list) > 2"
2018-10-19 11:15:41 +01:00
jesopo
74330f5dee
Add another missing ")" in modules/coins.py
2018-10-19 11:00:57 +01:00
jesopo
43bf2b9935
Add missing ")" in modules/coins.py
2018-10-19 11:00:02 +01:00
jesopo
8fae2394cb
Allow users to add/remove wallets and specify which wallets to use with
...
commands that effect coins!
2018-10-19 10:58:36 +01:00
jesopo
87fc3cda55
Catch exceptions in modules/title.py
2018-10-19 10:31:45 +01:00
jesopo
fc36e5bbeb
Typo in modules/coins.py, 'user' -> 'event["user"]'
2018-10-18 15:26:28 +01:00
jesopo
f5ac44f1c6
_user_has_wallet takes a user
arg
2018-10-18 15:25:42 +01:00
jesopo
d2557cbc4f
Show the coins a user has in a specified wallet when a wallet is specified to
...
!wallet
2018-10-18 15:24:33 +01:00
jesopo
79c4a357d7
Typo in modules/coins.py, 'commands' -> 'command'
2018-10-18 15:20:05 +01:00
jesopo
07903c15ff
put "default" wallet in to a const, pass wallet arg through function calls, add
...
!wallet
2018-10-18 15:18:16 +01:00
jesopo
79837fe6a4
Remove debug print in modules/coins.py
2018-10-18 14:31:51 +01:00
jesopo
3ab30ad6d8
Change interest rates to use wallets
2018-10-18 14:28:48 +01:00
jesopo
8388c6e05a
Remove now-unneeded code, change _total_coins to use _all_coins
2018-10-18 13:49:32 +01:00
jesopo
c3fb63e03c
Typo in modules/coins.py, 'wallet' -> 'user_coins'
2018-10-18 13:45:38 +01:00
jesopo
ebdbc75a7e
coins should be (nickname, coins) not just coins
2018-10-18 13:43:26 +01:00
jesopo
7f8acf58c7
Typo in modules/coins.py, "coin_settings" -> "coins"
2018-10-18 13:40:36 +01:00
jesopo
1300310669
Use "wallets" for !richest, not "coins"
2018-10-18 13:38:54 +01:00
jesopo
b799f543a9
Internally use "wallets" to track users coins
2018-10-18 13:19:16 +01:00
jesopo
bd52297885
"," -> ", " in modules/words.py
2018-10-18 12:54:37 +01:00
jesopo
226d835374
Add !trackedwords in modules/words.py
2018-10-18 12:53:27 +01:00
jesopo
c1e5fd9a52
Coin amount is the second arg to !givecoins
2018-10-17 19:39:43 +01:00
jesopo
dd93a84f80
Put .strip("\n") call in the right place in modules/eval_python.py
2018-10-17 17:31:59 +01:00
jesopo
69f9aab4b9
Refer to out["out"]
, not just out
, to get the output from eval
2018-10-17 15:11:05 +01:00
jesopo
10d403d24a
Import json in modules/eval_python.py
2018-10-17 15:09:59 +01:00
jesopo
cfb9fa1c2e
import json in EVAL_TEMPLATE and json parse response from eval api
2018-10-17 15:08:48 +01:00
jesopo
ecb2b1331a
'import StringIO' -> 'import io' in modules/eval_python.py
2018-10-17 15:06:54 +01:00
jesopo
f08624ddbd
Escape \n in EVAL_TEMPLATE in modules/eval_python.py
2018-10-17 15:04:38 +01:00
jesopo
baa039e86d
Add missing ":"s in EVAL_TEMPLATE in modules/eval_python.py
2018-10-17 15:03:41 +01:00
jesopo
3d34896beb
Better handling of eval errors in modules/eval_python.py
2018-10-17 15:02:04 +01:00
jesopo
11944e348b
Remove additional ")"s in modules/eval_python.py
2018-10-17 14:32:01 +01:00
jesopo
34c13c7916
html.unescape output in modules/eval_python.py
2018-10-17 14:30:59 +01:00
jesopo
2e54284fed
Re-add new_coins
variable in modules/coins.py.lottery, used for telling a user
...
what their balance is after winning the lottery
2018-10-17 14:18:14 +01:00
jesopo
c22d5a348f
We should be changing bet_amounts
instead of parsing a bet amount and doing
...
nothing with it :l
2018-10-17 08:40:23 +01:00
jesopo
95e98563d5
Typo on modules/set.py; 'events.call' -> 'events.on'
2018-10-16 23:13:19 +01:00
jesopo
b467220400
Typo in modules/coins.py; 'utils._parse_coins' -> 'self._parse_coins'
2018-10-16 17:17:10 +01:00
jesopo
547c57c8b8
str(utils.EventError) should be written to stderr, not stdout
2018-10-16 15:15:20 +01:00
jesopo
d07f9422f7
all_coins is a dictionary, thus needs .items() to turn it in to nickname, coins
2018-10-16 15:10:21 +01:00
jesopo
773d11f6cb
Change all instances of stdout.write+return to raise utils.EventError
in
...
modules
2018-10-16 15:09:58 +01:00
jesopo
42a1cda92c
'EventManager.EventError' -> 'utils.EventError' in modules/commands.py
2018-10-16 14:49:01 +01:00
jesopo
ba3cd00c78
Add utils.EventError, utilise it for stderr in commands.py/coins.py
2018-10-16 14:47:01 +01:00
jesopo
7a54076de1
Typo in modules/coins.py.send(), 'target' -> 'target_user'
2018-10-16 14:46:08 +01:00
jesopo
0c7c48d752
Move redeem-amount/redeem-delay logic to their own functions in modules/coins.py
2018-10-16 14:06:38 +01:00
jesopo
5d6a7a60eb
Move logic to get all coins to it's own function in modules/coins.py
2018-10-16 13:58:02 +01:00
jesopo
ff7ac9fe89
Add missing help strings to commands in modules/coins.py
2018-10-16 13:53:32 +01:00
jesopo
7411c493f9
Move some more str(coins) calls to _coin_str(coins) in modules/coins.py
2018-10-16 13:46:25 +01:00
jesopo
1eab3178b3
Remove unneeded complexity in modules/coins.py.reset_coins
2018-10-16 13:43:45 +01:00
jesopo
7eb65ac1da
modules/coins.py._take should have a server
param
2018-10-16 13:41:02 +01:00
jesopo
5fc57ca143
Move logic for "take from user, give to pool" (and visa-versa) it's own
...
function, put user-to-user sending it's own function too
2018-10-16 13:39:45 +01:00
jesopo
955716c482
Remove more code duplication in modules/coins.py; move parsing amounts of coins
...
in to it's own function
2018-10-16 13:26:29 +01:00
jesopo
8aafa219ec
Remove a large amount of code duplication in modules/coins.py
2018-10-16 13:05:55 +01:00
jesopo
743b3bc754
event["args"] is an array already, args_split does not exist. Also send raw
...
events from src/IRCServer.py as call_unsafe to make errors like that more
apparent.
2018-10-15 14:29:16 +01:00
jesopo
131ae4b40d
Correctly check if someone's logged in to an account with extended-join
2018-10-15 14:16:11 +01:00
jesopo
be95fb8a6d
event["server"]
-> server
in modules/coins.py
2018-10-14 19:43:46 +01:00
jesopo
54ba3c888c
Catch ValueError from utils.parse_number, to allow other code to deal with
...
complaining about invalid numbers
2018-10-14 15:27:49 +01:00
jesopo
0ed0b235e9
Work directly from users in modules/coins.py.interest(), so as to not give
...
double-interest to two "users" online at the same time sharing the same identity
2018-10-14 14:30:19 +01:00
jesopo
a43d1cbb91
Add !lotterywinner in modules/coins.py, to show who last won the lottery
2018-10-14 13:51:32 +01:00
jesopo
104e1ab185
Actually return in modules/coins.py._total_coins
2018-10-14 08:38:58 +01:00
jesopo
403227b6df
Check automode when BitBot joins a channel
2018-10-13 22:21:51 +01:00
jesopo
f40db7c9d2
Add missing ) in modules/coins.py
2018-10-13 22:20:40 +01:00
jesopo
c6f8754716
Move functionality of finding total in-circulation coins out to it's own
...
function
2018-10-13 16:57:18 +01:00
jesopo
b2f948a73b
Add !totalcoins in modules/coins.py, to check what the total coins in
...
circulation is
2018-10-13 16:47:46 +01:00
jesopo
381b00f2cd
Only get list of github-hook channels once
2018-10-13 09:16:22 +01:00
jesopo
912c693fcd
!lotterybuy should require authentication because it uses coins
2018-10-13 01:16:18 +01:00
jesopo
bb531a6104
'redude' -> 'reduce' (my redudes), import random
because i forgot to, don't
...
try to do lottery for networks that have no lottery tickets purchased
2018-10-13 01:14:07 +01:00
jesopo
00e5890a92
Fixed incorrect comment about what counts as high/low for roulette in
...
modules/coins.py
2018-10-13 00:44:04 +01:00
jesopo
95b398c422
Give coins lost to the house in roulette to the Bank
2018-10-13 00:32:27 +01:00
jesopo
4fc0ee09b6
Typo in modules/coins.py, 'redcude' -> 'reduce'
2018-10-12 20:20:47 +01:00
jesopo
59bc75988b
Default !lotterybuy to 1 ticket
2018-10-12 20:20:32 +01:00
jesopo
c5b07f520e
Add !nextlottery to modules/coins.py
2018-10-12 18:33:34 +01:00
jesopo
ed03279406
Correct the logic used to find the time until the next lottery
2018-10-12 18:31:28 +01:00
jesopo
819f4e0680
Pass context-wrapped timers to each module, add ModuleManager.BaseModule.on_load
2018-10-12 18:07:23 +01:00
jesopo
278ab7d76f
Use UTC in modules/coins.py
2018-10-12 17:53:57 +01:00
jesopo
d4b46360d4
Implement 4-times-daily lottery in module/coins.py and address all stderrs to
...
the relevent user
2018-10-12 17:40:37 +01:00
jesopo
dda60ae417
_give_from_pool/_take_from_pool take a server
argument
2018-10-12 16:27:59 +01:00
jesopo
bab555207c
Show cents in !bank balance in modules/coins.py
2018-10-12 16:08:22 +01:00
jesopo
54ad29cc3a
Introduce a finite coin system in modules/coins.py
2018-10-12 15:55:32 +01:00
jesopo
8b03ecef21
Change modules/in.py to use bot.get_server
2018-10-12 14:04:14 +01:00
jesopo
a15a2e3444
modules/coins.py.send should be checking user_coins before the send amount is
...
taken away, not after
2018-10-12 13:53:15 +01:00
jesopo
8eb5c11979
' -> " in modules/eval_python.py
2018-10-12 13:23:54 +01:00
jesopo
c66b376e7f
Use compile+eval to support statements and expressions
2018-10-12 13:18:06 +01:00
jesopo
4700402db4
Add a \n between potential prints in eval() and printing the return from eval so
...
that bitbot will only show one of them
2018-10-12 12:46:05 +01:00
jesopo
b884b0e170
Support py2 and py3 in eval_python
2018-10-12 12:39:01 +01:00
jesopo
b2dd75d68f
Use a more reliable API for evaling python
2018-10-12 11:56:13 +01:00
jesopo
f096bddff4
Support unit-based bets (1k/1m/1b) in modules/coins.py
2018-10-12 11:19:41 +01:00
jesopo
e96c983dca
Check a channel's automode when automode is turned on in modules/auto_mode.py
2018-10-12 10:57:47 +01:00
jesopo
787053b605
Fire an event when a user/channel/server/bot setting is set in modules/set.py
2018-10-12 10:57:11 +01:00
jesopo
6e605207e6
Add !todomove in modules/todo.py
2018-10-12 10:49:38 +01:00
jesopo
382728e83e
Add ` and * to characters stripped from start/end or words in modules/words.py
2018-10-12 08:38:29 +01:00
jesopo
3d2acc2f61
Don't calculate user_coins(+/-)coin_bet
twice
2018-10-11 14:13:37 +01:00
jesopo
a9202a6abf
Add !py as an alias of !python in modules/eval_python.py
2018-10-11 13:32:28 +01:00
jesopo
df150635df
Correct the way !givepermission checks if a user is identified
2018-10-11 13:16:55 +01:00
jesopo
2c815f4bbc
Strip specific characters from the front of words too (and add more characters
...
to strip from the end) in modules/words.py
2018-10-11 13:04:54 +01:00
jesopo
0e2140b99f
Also strip "." from the end of words in modules/words.py
2018-10-11 12:56:18 +01:00
jesopo
98cdfa6419
Strip common characters that mark the end of a word (":;,!?~") from the end of
...
words in modules/words.py
2018-10-11 12:55:19 +01:00
jesopo
1c2504ac98
Add modules/rot13.py
2018-10-11 12:44:22 +01:00
jesopo
23b7223fae
Add !syncmodes in modules/auto_mode.py, fire internal.identified in
...
modules/permissions.py and catch it in modules/auto_mode.py to give users modes
when they identify using the internal identity mechanism
2018-10-11 11:20:53 +01:00
jesopo
41278cba81
Remove one-too-many indent in modules/coins.py
2018-10-11 10:35:41 +01:00
panicbit
c1495e9c1f
Fix column obsession
2018-10-11 01:26:16 +02:00
panicbit
7fbd614909
Show new coin total after flipping a coin
2018-10-11 01:18:28 +02:00
jesopo
1e25990ce7
randbelow takes one argument
2018-10-10 18:12:54 +01:00
jesopo
796c3832b6
We're supposed to support passwords with spaces!
2018-10-10 14:27:07 +01:00
jesopo
68f5626189
Change utils.http to use requests
2018-10-10 13:41:58 +01:00
jesopo
0b44788ac5
Support coin bets without a whole number (e.g. '0.1' can be '.1')
2018-10-10 12:10:53 +01:00
jesopo
11d1e5c0e0
Only .strip '\n' from output in modules/eval_lua.py
2018-10-10 12:03:09 +01:00
jesopo
bcd123fc4f
Use a better RNG in modules/coins.py (secrets.choice/secrets/randbelow)
2018-10-10 12:02:41 +01:00
jesopo
376825ea96
Mark command hooks that are aliases ('g' vs 'google')
2018-10-10 10:42:41 +01:00
jesopo
8842979205
Add "GTIN" to modules/upc.py error message, to better denote that we support
...
UPC.
2018-10-09 22:15:40 +01:00
jesopo
88e523c3de
Add modules/eval_lua.py
2018-10-09 22:15:27 +01:00
jesopo
fa336d6023
.kill() a process when it times out
2018-10-08 23:35:37 +01:00
jesopo
3016916087
Typo on modules/google.py, 'html' -> 'http'
2018-10-08 23:34:22 +01:00
jesopo
639b21f145
Make git commit "add/mod/del" more concise
2018-10-08 15:09:28 +01:00
jesopo
6b42494b92
.strip("\n") from !rust API call return
2018-10-08 14:00:33 +01:00
jesopo
52405cbd9d
Prefix !rust out/err with the requesting user's nickname
2018-10-08 12:55:10 +01:00
jesopo
de2a390d92
!eval -> !python in modules/eval_python.py
2018-10-08 12:51:04 +01:00
jesopo
19ffcacd4d
We don't need to use \" inside a """ """
2018-10-08 12:49:36 +01:00
jesopo
b462ac265e
eval.py -> eval_python.py, rust_eval.py -> eval_rust.py
2018-10-08 12:47:48 +01:00
jesopo
0b975b72de
Add !rust in modules/rust_eval.py
2018-10-08 12:43:47 +01:00
jesopo
fdccba9bf0
Change modules/signals.py to use bot.trigger(), add a !serverset @utils.export
...
for quit-quote
2018-10-07 11:28:51 +01:00
jesopo
af39136f83
Pass $HOME and $PATH through to scripts in modules/scripts.py
2018-10-07 11:24:00 +01:00
jesopo
02c3a5c336
Also capture stderr from scripts in modules/scripts.py
2018-10-07 08:22:46 +01:00
jesopo
dc37eb4f2f
I always forget about scopes in for loops
2018-10-07 08:10:52 +01:00
jesopo
fab3caa7be
do send.stdout event call in bot.trigger func param
2018-10-07 08:03:58 +01:00
Evelyn
9c15431925
Life's but a walking shadow, a poor player that struts and frets his hour upon the stage, and then is heard no more. It is a tale told by an idiot, full of sound and fury, signifying nothing
2018-10-06 22:30:26 +01:00
jesopo
69eda4bf1b
Allow user/channel/server/bot settings to be "hidden" from settings lists in
...
modules/set.py
2018-10-06 17:16:17 +01:00
jesopo
0cf7deed24
Slightly change format of commit messages in modules/github.py
2018-10-06 16:44:39 +01:00
jesopo
930a4bcbc2
Correctly scope 'filename' in modules/script.py._load_scripts
2018-10-06 16:18:59 +01:00
jesopo
79aff93b5d
Add a ControlSocket client to IRCBot.py, use it to trigger the epoll loop when a
...
github webhook has been caught!
2018-10-06 15:45:56 +01:00
jesopo
0a609ca695
Strip/replace \n from git commit messages in modules/github.py
2018-10-06 15:42:57 +01:00
jesopo
1fa66eebc6
Attempt to register servers for read/write when sending github hook notices
2018-10-06 10:02:02 +01:00
jesopo
df94020ef5
Add database.find_by_setting, send github commits to interested channels
2018-10-06 09:54:21 +01:00
jesopo
4296d1ee8e
raw.* events should be call_unsafe
2018-10-06 09:30:40 +01:00
jesopo
908edeb1e1
Typo in modules/github.py ('command' -> 'commit') and declare event_response
...
outside of try/except in modules/rest_api.py
2018-10-06 09:24:43 +01:00
jesopo
c3ace4be2e
Return 500 when an exception is thrown, never try to .encode None
2018-10-06 09:23:50 +01:00
jesopo
b0c27eff0b
Typo, add missing "
2018-10-05 23:32:20 +01:00
jesopo
d817ec9832
Add the basics of a github webhook in modules/github.py
2018-10-05 23:29:59 +01:00
jesopo
ff00ec1226
Require modules/rest_api.py has tls cert/key
2018-10-05 23:16:34 +01:00
jesopo
b3f8933f3f
POST shouldn't use body as 'params'
2018-10-05 23:14:32 +01:00
jesopo
95e7b9ea77
Support POST through modules/rest_api.py
2018-10-05 22:49:06 +01:00
jesopo
bc3c9b742e
Add api.server endpoint for individual server information
2018-10-05 09:51:17 +01:00
jesopo
808694c113
Return more info for api.servers and api.channels
2018-10-05 09:46:03 +01:00
jesopo
187220c25e
Remove prints
2018-10-05 09:45:49 +01:00
jesopo
e5f475cdeb
Allow API endpoints to not request authentication
2018-10-04 17:59:24 +01:00
jesopo
f31fdc48b3
Add api.modules in modules/stats.py
2018-10-04 17:37:47 +01:00
jesopo
52b7beb407
Provide more information for api.channels
2018-10-04 17:37:34 +01:00
jesopo
d7f4050ae8
Strip empty /path/arguments in modulse/rest_api.py
2018-10-04 17:37:03 +01:00
jesopo
f8170d8751
Use URL path for args, not get params
2018-10-04 17:21:40 +01:00
jesopo
b341320e37
Add api.servers endpoint
2018-10-04 17:18:40 +01:00
jesopo
7fc0359e3d
Make sure bot.lock is released in do_GET
2018-10-04 17:18:24 +01:00
jesopo
fdddb33f32
Added api.channels handler
2018-10-04 17:10:15 +01:00
jesopo
a220ff8485
Timeout REST API requests after 10 seconds
2018-10-04 17:10:05 +01:00
jesopo
57b72a94c5
Implement !botset/!botget in modules/set.py
2018-10-04 17:09:52 +01:00
jesopo
a533228112
Implement api keys in modules/rest_api.py
2018-10-04 17:09:35 +01:00
jesopo
82b40cc8b2
Add basics of (by-default disabled) REST API
2018-10-04 16:01:13 +01:00
jesopo
1c20eab9d6
send.stdout/send.stderr need a server kwarg
2018-10-04 14:44:33 +01:00
Evelyn
6a0dfdc663
NR: Slightly shorten service output
2018-10-04 14:13:13 +01:00
jesopo
6b122523c0
Improve(?) IPv6 regex
2018-10-04 13:19:59 +01:00
jesopo
26b653555b
Look back through scrollback to find ipv4/ipv6 addresses to get rDNS for
2018-10-04 12:15:15 +01:00
jesopo
18b227cbc4
Update modules/channel_op.py to use docstring prefix denotation
2018-10-04 11:05:43 +01:00
jesopo
b778ad2902
Support denoting command response [prefix] in docstring
2018-10-04 11:04:24 +01:00
jesopo
ded6ff03ce
Also catch gaierror in !rdns, print e.strerror instead of str(e)
2018-10-04 10:29:22 +01:00
jesopo
078891127d
Combile modules/dns.py and modules/geoip.py in to modules/ip_addresses.py, add
...
!rdns command
2018-10-04 10:18:44 +01:00
jesopo
d89c984d95
'ModuleWarning' -> 'ModuleManager.ModuleWarning' in modules/modules.py
2018-10-04 10:18:17 +01:00
jesopo
75f25db4cd
Move 'top 10' logic to utils, add !wordiest to modules/words.py
2018-10-04 05:33:15 +01:00
jesopo
17caaa08dd
Actually use the sorted mode list in print_activity
2018-10-04 04:46:32 +01:00
jesopo
75f8f4d955
Fix order of user status symbols in modules/print_activity.py
2018-10-03 17:11:01 +01:00
jesopo
09b6f52d8e
Fix showing usage when a user doesn't provide enough args to a command
2018-10-03 17:01:26 +01:00
jesopo
02e76444d1
Add 'remove_empty' kwarg for commands, to strip out empty space
2018-10-03 17:01:10 +01:00
jesopo
04ab018048
Correctly get BitBot's own modes in modules/print_activity.py
2018-10-03 16:47:52 +01:00
jesopo
84ebe5351b
Replace ' ' with '+' in modules/define.py's URL-getting
2018-10-03 16:45:19 +01:00
jesopo
ce2231900d
Print user status symbols in modules/print_activity.py
2018-10-03 16:44:44 +01:00
jesopo
98207be7b1
'mode_prefixes' -> prefix_modes and prefix_symbols
2018-10-03 16:44:00 +01:00
jesopo
27c191a668
Remove unneeded \n
2018-10-03 16:00:07 +01:00
jesopo
cf397c395d
Update old usage/help method
2018-10-03 15:59:49 +01:00
jesopo
89951aace5
Add !connect in modules/admin.py
2018-10-03 15:59:36 +01:00
jesopo
69d58eede2
Move src/Utils.py in to src/utils/, splitting functionality out in to modules of
...
related functionality
2018-10-03 13:22:37 +01:00
jesopo
489d508997
Fix BATCH parsing
2018-10-03 11:32:20 +01:00
jesopo
2b349105aa
Move parsing IRC lines to src/Utils.py, added base support for parsing outgoing
...
messages
2018-10-03 11:31:51 +01:00
Evelyn
92477e0fba
NR: Fix message colouring
2018-10-03 07:19:59 +01:00
jesopo
9118af5e9c
Support changing command responses from PRIVMSG to NOTICE
2018-10-02 21:40:34 +01:00
jesopo
22740e2faa
Re-add lost "!" prefix on stderr prefix
2018-10-02 17:48:07 +01:00
jesopo
e27c0e0a0c
Simplify modules/line_handler.handle
2018-10-02 17:47:45 +01:00
jesopo
8f05f66a03
.strip() target name in !karma
2018-10-02 15:14:42 +01:00
jesopo
a9b0dd331b
Correctly set nickname-only karma
2018-10-02 15:14:34 +01:00
jesopo
c7e4ae6e12
use Utils.irc_lower, not .lower()
2018-10-02 15:14:06 +01:00
jesopo
150788c6c6
Add !leave to modules/channel_op.py
2018-10-02 14:55:12 +01:00
jesopo
16474dacef
Don't complain when modules/karma.py can't find a user when it's in
...
karma-nickname-only mode
2018-10-02 14:35:35 +01:00
jesopo
67c22416cc
Use PRIORITY_MONITOR for keeping count of words (to avoid seeing commands)
2018-10-02 14:29:51 +01:00
jesopo
64733eb37f
Implement karma-nickname-only, to only allow karma for users in the current
...
channel
2018-10-02 14:29:32 +01:00
jesopo
a7563c9653
Pass msgid in send_stdout/send_stdin in modules/commands.py
2018-10-02 14:22:42 +01:00
jesopo
a76f206551
It's 'draft/msgid' not just 'msgid', also actually store 'msgid' in self._msgid
2018-10-01 17:52:04 +01:00
jesopo
26bfd61487
The correct msgid reply tag (at the moment) is '+draft/reply'
2018-10-01 17:28:45 +01:00
jesopo
976b6ae335
Better support for msgtags with PRIVMSGs; put functionality in to
...
modules/commands.py to reply to specific messages by use of msgids
2018-10-01 17:26:31 +01:00
jesopo
e9416034df
Typo in modules.commands.py, 'unsafe_call' -> 'call_unsafe'
2018-10-01 16:32:24 +01:00
jesopo
ee96b3310b
Some networks send NICK as 'nick!user@host NICK newnick` instead of
...
'nick!user@host NICK :newnick' (which is RFC compliant but BitBot didn't support
it)
2018-10-01 16:13:08 +01:00
jesopo
7eb31820d7
Add call_unsafe functions to EventManager.EventHook, to not swallow errors on
...
specific function calls (e.g. preprocess.command)
2018-10-01 16:04:06 +01:00
jesopo
59243f492f
Implement src/IRCObject.py to convert specific objects in to strings when
...
passing them to modules/scripts.py scripts
2018-10-01 13:48:55 +01:00
jesopo
120acf54ec
Add 'trace' logging level for src/Database.py and src/EventManager.py very
...
verbose debugging
2018-10-01 13:48:22 +01:00
jesopo
300eadf9b6
Change modules/line_handler.py to use @Utils.hook
2018-10-01 13:47:45 +01:00
jesopo
31c19aec69
Added setpassword command to modules/permissions.py
2018-09-30 22:11:37 +01:00
jesopo
1cbca6fb88
Update a reference from buffer
to target.buffer
in modules/commands.py
2018-09-30 20:53:58 +01:00
jesopo
a879125883
Typo in modules/check_mode.py; 'required_mode' -> 'require_mode'
2018-09-30 20:53:36 +01:00
jesopo
43740d40f4
Add modules/strip_color.py
2018-09-30 20:12:11 +01:00
jesopo
c87728a87d
Move src/IRCLineHandler.py to modules/line_handler.py
2018-09-30 19:43:20 +01:00
jesopo
10ef985a8a
Switch to using docstring for usage, permission and require_mode
2018-09-30 17:29:09 +01:00
jesopo
16dc2c39a9
Refactor modules/channel_op.py and add !tempban/!tempkickban
2018-09-30 13:28:26 +01:00
jesopo
30641ce312
We don't need to explicitly pass "buffer" through on command events
2018-09-30 11:43:34 +01:00
jesopo
7ab8948101
Fix piece of modules/define.py._get_definition( that was accepting a word or an
...
event.
2018-09-30 10:27:50 +01:00
jesopo
aa0c9ec9f1
Update modules/signals.py to use the new Config "system"
2018-09-29 20:27:20 +01:00
jesopo
bcb67db3fd
Add !reloadscripts to modules/scripts.py
2018-09-29 15:05:50 +01:00
jesopo
47ec11bbef
Add src/Cache.py, use it in modules/coins.py
2018-09-29 12:53:39 +01:00
jesopo
c5a7978c9b
Make 'account' arg for identify command optional
2018-09-29 10:51:16 +01:00
jesopo
3dbd997a90
Better .strip()/.split() logic for !help
2018-09-29 10:50:25 +01:00
jesopo
c12e8220ac
Strip trailing newlines from scripts.py returns
2018-09-29 09:46:47 +01:00
jesopo
1721e40c61
Add scripts.py, to support basic modules in languages other than python
2018-09-29 09:45:08 +01:00
jesopo
746155fd57
Support command hooks not coming from a class instance
2018-09-29 09:44:13 +01:00
jesopo
7c7e5553d1
Update ModuleManager.load_module calls in modules.py
2018-09-29 09:23:57 +01:00
jesopo
a8bf3c9300
Remove cyclical references to IRCBot
2018-09-28 16:51:36 +01:00
jesopo
02a2b41246
Fix typo in database_backup.py, 'ocation' -> 'location'
2018-09-27 14:06:46 +01:00
jesopo
0fb947dc5a
'full_location' -> 'location' in database_backup.py
2018-09-27 13:16:27 +01:00
jesopo
8dc83e5aac
Put linebreak in a better place for @Utils.export in bot_channel.py
2018-09-27 12:10:54 +01:00
jesopo
b2bdd93f09
Change old-style event hook in coins.py
2018-09-27 12:08:26 +01:00
jesopo
6eb8b1ba6d
Move all exports to @Utils.export calls
2018-09-27 12:08:07 +01:00
jesopo
8b0314b190
Use ModuleManager.BaseModule in more modules
2018-09-27 11:46:10 +01:00
jesopo
f3d98d0e95
Implement @Utils.export, to denote an export on a module
2018-09-27 11:45:23 +01:00
jesopo
6274159ac6
Fix event typo in greeting.py ("recevied" -> "received")
2018-09-27 10:27:19 +01:00
jesopo
9a7b93928b
Didn't mean to commit this module yet.
2018-09-26 20:39:24 +01:00
jesopo
51a52e2b0e
Switch to using @Utils.hook and docstrings for event hooks
2018-09-26 18:27:17 +01:00
jesopo
4d41848b57
Also use docstrings to check if a command has help available, allow one-string
...
denotation of multiple event hooks
2018-09-26 18:26:29 +01:00
jesopo
ebc77fa501
Support using docstrings as command help
2018-09-26 15:58:16 +01:00
jesopo
8d946fb60b
Add !suggest, to get suggested searches from google
2018-09-26 14:36:33 +01:00
jesopo
c3e8e234eb
Typo, 'e' -> 'warning'
2018-09-25 11:02:31 +01:00
jesopo
894e95d37d
Fix typo that was causing database_backup.py to not work
2018-09-25 11:02:07 +01:00
jesopo
67edca067c
Be more verbose about reloading modules in modules.py
2018-09-24 16:15:44 +01:00
jesopo
bb641b0870
Move log and database files to their own folders
2018-09-24 15:26:31 +01:00
jesopo
ecb9d7cb3f
Move most code in root directory to src/
2018-09-24 15:13:27 +01:00
jesopo
da7e02ffc9
Remove empty spaces in coins.py
2018-09-24 13:25:09 +01:00
jesopo
fc643cc87a
last_called -> _last_called
2018-09-24 13:24:36 +01:00
jesopo
dd0ab3211e
Refactor define.py
2018-09-24 13:23:59 +01:00
jesopo
967ed65e00
Actually implement !reloadallmodules in modules.py
2018-09-24 13:18:15 +01:00
jesopo
b7f7c9342b
Better communicate issues with load/unload/reload of modules
2018-09-24 13:10:39 +01:00
dngfx
c3c3eba476
Fix permission bug
2018-09-23 11:09:46 +01:00
dngfx
36f0672f2b
Fix permission bug
2018-09-23 11:06:15 +01:00
dngfx
1d3f05a8fe
Add .reloadallmodules, and fix permissions.
2018-09-23 11:01:24 +01:00
dngfx
8b8c59ee21
Rename the functions to be more generic.
2018-09-23 10:23:12 +01:00
dngfx
a37dfe5301
Remove superfluous function.
2018-09-23 10:20:20 +01:00
dngfx
e8bdcf8f19
Remove intrusive styling.
2018-09-23 10:16:43 +01:00
dngfx
fdcf3e45c7
Add .randomword command, and change the api to use https
2018-09-23 09:52:53 +01:00
dngfx
0cb2c43ee3
Add setcoins command for admins, for people that abuse the coin game, or rewards and such.
2018-09-23 07:04:50 +01:00
dngfx
bb15f8b8e2
make last.fm say "is now playing", if they're currently playing.
2018-09-23 02:21:43 +01:00
dngfx
d335deed40
make last.fm say "is now playing", if they're currently playing.
2018-09-23 01:39:38 +01:00
dngfx
e5283ed2e2
Update last.fm to include a youtube link. Also change the module name to last.fm
2018-09-23 00:55:36 +01:00
dngfx
9220f84c27
clear channel.games properly.
2018-09-22 20:08:07 +01:00
dngfx
56afe77b52
Fix duck timing and stupid indenting.
2018-09-22 19:32:54 +01:00
dngfx
1a54c11df8
Fix ducks.py having a superfluous function
2018-09-22 19:28:57 +01:00
dngfx
febb6d66e3
font reset at the beginning of commands to stop wonkiness with highlighting and fix duck decoys.
2018-09-22 19:10:52 +01:00
dngfx
000ee14711
Make tweets say Twitter instead of tweets, and update ducks to add decoys and make minimum/unique a channel setting rather than hard setting.
2018-09-22 16:02:39 +01:00
jesopo
3c3583e30c
Disable sed by default
2018-09-21 11:55:17 +01:00
jesopo
a87196c608
Change Utils.color to take a string to wrap in color
2018-09-21 11:39:09 +01:00
jesopo
ecb8698fb7
Don't send ducks when they're disabled.
2018-09-19 14:28:59 +01:00
jesopo
a0bb738abc
Add eval.py
2018-09-19 14:14:51 +01:00
jesopo
287d031281
Add ModuleManager.BaseModule so modules don't *have* to implement __init__
2018-09-19 13:28:18 +01:00
jesopo
fcbb7c960c
Refactor everything to use delimited events
2018-09-19 13:25:12 +01:00
jesopo
b86ca6088f
Fix some styling in ducks.py
2018-09-19 13:23:18 +01:00
jesopo
b8aca72861
Support hooking functions in modules with @Utils.hook
2018-09-19 12:37:41 +01:00
jesopo
f3d8d35083
Send a FONT_RESET (\x0F) after stderr module names because a bug in weechat
...
pre-2.2 means that because red colors are displayed as red+bold, the second
FONT_COLOR (\x03) only resets the red coloring, not the bold, meaning the rest
of the line is bold.
2018-09-19 02:22:30 +01:00
jesopo
b3609db92c
Actually remove channels from channel_save when the bot leaves the channel
2018-09-19 01:41:53 +01:00
jesopo
702b6a4dd3
permissions._identified takes server, user and nickname
2018-09-19 01:19:04 +01:00
jesopo
2abb3c6787
Only allow the register command on networks that support internal identity
2018-09-19 00:45:14 +01:00
jesopo
e6f25e31db
User.id doesn't exist anymore; it's User.get_id()
2018-09-19 00:45:01 +01:00
jesopo
11e62bb945
Fix exception in commands.py any time anyone sends an empty or
...
whitespace-prefixed PRIVMSG
2018-09-19 00:44:04 +01:00
jesopo
f796fddee5
Typo in sasl.py; proceed with sasl regardless of mechanism when using CAP 3.1
2018-09-17 13:25:11 +01:00
jesopo
b07da8c8c0
Fix a copypaste fail that caused sasl.py to have two sasl_success functions
2018-09-17 13:10:22 +01:00
jesopo
007ffec762
Handle 904 (ERR_SASLFAIL) in sasl.py
2018-09-17 12:57:03 +01:00
jesopo
d522997992
Don't just listen for 'sasl=PLAIN' in IRCv3 CAP 3.2
2018-09-17 11:49:23 +01:00
jesopo
fad61c2664
Support EXTERNAL sasl authentication
2018-09-17 11:31:40 +01:00
jesopo
bb5ff8ee0d
Fix highlight checking in commands.py
2018-09-17 11:31:29 +01:00
jesopo
1eed727bc5
Add !enablemodule and !disablemodule to modules.py
2018-09-13 13:35:05 +01:00
jesopo
6db97c7df5
join.py -> bot_channel.py, make the bot channel (default #bitbot) configurable
2018-09-12 15:44:50 +01:00
jesopo
614f63bda3
Remove boot_time from stats.py, move it to start_time in IRCBot otherwise a
...
module reload of stats.py would reset !uptime
2018-09-11 18:24:34 +01:00
jesopo
ae78324c44
Typo, event["server"] -> server
2018-09-10 08:58:15 +01:00
dngfx
5d8ad6a37a
Replace bit.ly with is.gd. No API key, no beeping Bit. It's a win win!
2018-09-09 21:47:28 +01:00
dngfx
169d1705ac
There's nothing regular about these expressions.
2018-09-09 18:39:56 +01:00
jesopo
4eaf9e5aeb
Fix an incorrect call to event["stderr"] in karma.py
2018-09-09 17:34:44 +01:00
jesopo
59912776c1
Make commands be processed under received.message.* at PRIORITY_LOW, eat the
...
event when it's done, change karma.py to use PRIORITY_MONITOR
2018-09-09 17:09:04 +01:00
jesopo
2a37e10533
Change default priority to "medium", add priority lower than "low" ("monitor")
2018-09-09 17:08:38 +01:00
jesopo
67c89f0580
Change bitly.py to use delimited events
2018-09-09 16:07:39 +01:00
jesopo
7f647a40c5
Tidy up indentation in tweets.py
2018-09-09 16:07:18 +01:00
dngfx
a9e49fd36b
Fix up tweets.py
2018-09-09 15:50:05 +01:00
dngfx
23fbc2cb95
Make URL shortening generic in tweets.py
2018-09-09 15:37:44 +01:00
dngfx
931c941f42
Fix spacing.
2018-09-09 15:35:32 +01:00
jesopo
8959b6cfd2
Utilise !serverset in more modules
2018-09-09 13:34:25 +01:00
jesopo
2fa7d9b8a9
Add nickserv-password and sasl to !serverset
2018-09-09 13:34:25 +01:00
jesopo
c3ebb32111
Don't add a qualifier for server settings
2018-09-09 13:34:25 +01:00
jesopo
87ff49c4d2
Add !serverset and !serverget
2018-09-09 13:34:25 +01:00
jesopo
561dcdf799
Switch set.py to use delimited events
2018-09-09 13:34:25 +01:00
dngfx
a5ff20fca3
i dun fixed it!
2018-09-09 13:34:32 +01:00
dngfx
2d4dbf922f
h8 everything right now
2018-09-09 13:20:59 +01:00
dngfx
7aecd2b4ca
WOOP WOOP THAT'S THE SOUND OF LINKS FOR TWEETS
2018-09-09 13:12:06 +01:00
jesopo
1af290b954
Better indentation in commands.py
2018-09-09 09:09:22 +01:00
dngfx
2211cb0542
Fix a few niggles
2018-09-09 08:59:36 +01:00
dngfx
20339d0a64
Grammar fix
2018-09-09 07:38:14 +01:00
dngfx
c626a9d047
A shakespear insult generator, with optional target. Because why not?
2018-09-09 06:34:50 +01:00
dngfx
c8bbdddc59
FONT_RESET should be FONT_COLOR, also more string wizardry in ducks.py!
2018-09-09 03:39:29 +01:00
dngfx
fb3fa55477
String formatting exists and it is a wonderful thing.
2018-09-09 03:07:21 +01:00
dongfix
11f7ebaa86
Add channel prefix to .usage (So it shows .8ball <question> instead of just 8ball <question>, based on the channel's prefix)
...
Updated ducks.py, more efficient code and style tweaks.
2018-09-09 01:19:00 +01:00
dngfx
69543c04db
Make google.py show the search term in the results.
2018-09-08 22:53:31 +01:00
jesopo
22ee129ca6
Clean up combining new.channel and __init__ channel bootstrapping
2018-09-08 22:51:56 +01:00
dngfx
3bdc43cf71
Bootstrap properly on module reload.
2018-09-08 21:58:32 +01:00
dngfx
558e2eb846
Trim garbage code.
2018-09-08 20:38:45 +01:00
dngfx
f17cce3c3d
More duck timing tweaks
2018-09-08 19:58:44 +01:00
dngfx
89bc48cf0c
Correct comparison
2018-09-08 19:32:10 +01:00
dngfx
83f2ec673c
Typo fix.
2018-09-08 19:23:35 +01:00
dngfx
6d31f5ef3c
Full metal duck.
2018-09-08 19:11:12 +01:00
dngfx
119ea1a4f6
Refactor ducks.py to make sense.
2018-09-08 19:10:09 +01:00
dngfx
a25139d828
Remove old ducks.py
2018-09-08 17:24:31 +01:00
dngfx
03b41c3d49
More 8ball answers.
2018-09-08 17:19:52 +01:00
dngfx
2efbf7ec7e
Remove debug code.
2018-09-08 17:18:06 +01:00
dngfx
7023cd45d9
Remove unused code.
2018-09-08 17:16:13 +01:00
dngfx
f0c966403b
Tweak duck timing.
2018-09-08 17:15:11 +01:00
dngfx
54c9616d4c
8ball answer updates and ducks.py fix.
2018-09-08 17:02:03 +01:00
dngfx
763333eea8
PEP8 Compliance.
2018-09-08 16:34:28 +01:00
dngfx
5643af1fe4
Rename ducks_old.py to stop it getting autoloaded.
2018-09-08 16:26:50 +01:00
dngfx
ac1eef729c
New and fresh ducks.py! And an 8ball.py adjustment...!
2018-09-08 16:15:43 +01:00
dngfx
82a20a209a
Set unique user properly.
2018-09-08 11:54:06 +01:00
dngfx
95712e5520
Ducks new progress
2018-09-08 11:51:43 +01:00
jesopo
e06fb1e3c7
Remove starttls.py, it's harder than I thought.
2018-09-07 20:22:27 +01:00
jesopo
a4f0d1bf28
Support IRCv3's tls/STARTTLS
2018-09-07 16:34:51 +01:00
jesopo
208a323d48
Listen for 903 for sasl success, not 900
2018-09-07 16:13:49 +01:00
jesopo
66e10ba11d
Only "finish" a sasl handshake when we get a 900
2018-09-07 16:04:37 +01:00
jesopo
7e3d7542b9
Support CAP 3.2
2018-09-07 15:51:41 +01:00
jesopo
9be8c1d90c
Set +o/+v on a user if they're in the channel at the time of !addop/!addvoice
2018-09-06 18:13:02 +01:00
jesopo
dee26c45be
addvoice/removevoice should use "v" not "o"
2018-09-06 18:10:12 +01:00
jesopo
c8309d96ea
Only do automode when a user is identified, also do automode on an IRCv3
...
ACCOUNT command
2018-09-06 18:06:29 +01:00
jesopo
25ef1965fd
Finally implement auto_mode.py!
2018-09-06 17:58:53 +01:00
jesopo
e76c3b3230
Don't strip out empty arguments on commands.py
2018-09-06 17:25:58 +01:00
jesopo
73bdaff977
Add !topic and !topicappend in channel_op.py
2018-09-06 17:25:38 +01:00
jesopo
a8dd9e059f
Add !ignore and !unignore in commands.py
2018-09-06 16:05:14 +01:00
jesopo
83c0022c4d
Support account-tag in permissions.py
2018-09-05 15:39:29 +01:00
jesopo
07c08ad428
Typo in channel_save; channes -> channels
2018-09-05 13:55:53 +01:00
jesopo
da5b2f5eb1
Merge branch 'master' of github.com:jesopo/bitbot
2018-09-05 13:52:10 +01:00
jesopo
35f07735af
Merge pull request #17 from dngfx/master
...
Update duck timer
2018-09-05 13:52:07 +01:00
jesopo
049590178e
Add !givecoins to coins.py
2018-09-05 13:51:42 +01:00
jesopo
a04a246b67
protect_registered doesn't exist anymore
2018-09-05 13:36:07 +01:00
jesopo
fa18d5ca4c
Get user to do get_id() on in coins.py
2018-09-05 13:32:21 +01:00
jesopo
12143af562
Add another control to prevent coin duplication if someone manages to send coins
...
to themselves
2018-09-05 12:58:30 +01:00
jesopo
f2aeaf7797
Don't use IRCUser.id ever, use IRCUser.get_id()
2018-09-05 12:58:12 +01:00
jesopo
6bd6f2492b
Support IRCv3's account-notify/extended-join along with WHOX to replace internal
...
register/identify
2018-09-05 11:58:10 +01:00
dngfx
5961ff1725
Update duck timer
2018-09-04 13:01:54 +01:00
jesopo
55be2a3586
twitter.py -> tweets.py
2018-09-04 11:30:00 +01:00
jesopo
be39669580
Fix a huge security issue: sign users out when they change nickname
2018-09-04 10:00:42 +01:00
jesopo
ad775239b2
Send message-tags through PRIVMSG, NOTICE and !commands
2018-09-03 21:49:22 +01:00
jesopo
b64e0078d3
Add !reconnect in admin.py
2018-09-03 18:21:13 +01:00
jesopo
d528656ba5
Add database_backup.py for rotated database backups
2018-09-03 18:20:53 +01:00
jesopo
6e257c6e1b
Only offer sasl when we have sasl authentication to send
2018-09-03 12:38:51 +01:00
jesopo
06a750edbd
Remove channel from autojoin when BitBot parts it
2018-09-03 12:22:06 +01:00
jesopo
9d95581c44
Support IRCv3's chghost and invite-notify
2018-09-03 11:47:11 +01:00
jesopo
6a627d9f36
Added !resetpassword in permissions.py
2018-09-03 11:30:54 +01:00
jesopo
29851d4305
Make CAP functionality more part of the framework and support message-tags and
...
multi-prefix
2018-09-03 11:14:52 +01:00
jesopo
61b2682c93
Add greeting.py
2018-09-03 08:29:58 +01:00
jesopo
ecc93183f5
Print mode changes in print_activity
2018-09-02 22:41:04 +01:00
jesopo
72e991f4a5
up min/max duck show time in ducks.py
2018-09-02 20:14:24 +01:00
jesopo
8c6ab17e57
give an Exports object (actually, ExportsContex object) to each module, to
...
facilitate things like !set and !channelset without using the events system
2018-09-02 19:54:45 +01:00
jesopo
14a9e4a6a4
Also optionally (attempt to) kick users that send malicious urls in
...
check_urls.py
2018-09-02 11:50:47 +01:00
jesopo
abc9d92c9d
Add check_urls.py, to opt-in check for malicious urls
2018-09-02 11:44:06 +01:00
jesopo
21abbc33c8
Update reloading config on USR1
2018-09-02 11:43:52 +01:00
jesopo
cc1b4e6fde
change wolframalpha.py to use the "short answer" api
2018-09-02 09:28:55 +01:00
dngfx
e305b17896
Fix iterations
2018-09-01 21:17:42 +01:00
dngfx
d6b0d4653c
Fix duck stats
2018-09-01 20:55:27 +01:00
dngfx
2db5d476a4
Uncomment duck stats
2018-09-01 20:54:18 +01:00
Dan
617fbe301c
Merge branch 'master' into master
2018-09-01 20:44:56 +01:00
dngfx
9eaa1cc6fc
Re-toast ducks.py!
2018-09-01 20:43:46 +01:00
dngfx
93a818ed97
Revert "Toast off ducks.py with .duckstats"
...
This reverts commit 3044b83
2018-09-01 20:40:26 +01:00
dngfx
3044b833fc
Toast off ducks.py with .duckstats
2018-09-01 20:34:10 +01:00
dngfx
8098e8c015
re-add self.events
2018-09-01 19:12:05 +01:00
jesopo
e9b5519e86
re-add self.events in ducks.py
2018-09-01 19:11:25 +01:00
jesopo
cbb6c928a1
Don't persist timer, use events.on("send.stdout")
2018-09-01 19:09:25 +01:00
jesopo
23f859beb2
Don't persist timer, use events.on("send.stdout")
2018-09-01 19:07:50 +01:00
dngfx
0869c17808
Massively optimise ducks.py and remove a bunch of cruft.
2018-09-01 18:58:57 +01:00
dngfx
a0a29eacd0
Convert to booleans and validation.
2018-09-01 18:45:01 +01:00
jesopo
ef645c338a
BitBot is single threaded!
2018-09-01 12:24:00 +01:00
dngfx
090531c0ae
Omg I can't spell.
2018-09-01 11:45:29 +01:00
Dan
ba065ad646
omg it's the future ( #15 )
...
* Add Database.UserChannelSettings.find_all_by_setting
* Turns out we didn't need find_all_by_setting
* Actually, we do need find_all_by_setting
* Table name typo
* Add Utils.bold and Utils.underline
* Added functionality to load, unload and reload modules from a command!
2018-09-01 11:40:57 +01:00
dngfx
7db9a8ea2b
Move lists out of scope
2018-09-01 11:40:08 +01:00
dngfx
80cbf2d66e
Add 8ball module
2018-09-01 11:04:51 +01:00
dngfx
0a96a79077
Cosmetic enhancement for ducks and dice.
2018-09-01 10:52:04 +01:00
dngfx
3f66940e77
Remove superfluous code from ducks.py and introduce dice.py (DND rolling function .roll 1d20)
2018-09-01 10:22:44 +01:00
dngfx
3d3cb9a598
Switch print() to log.info() for next-duck-wave information.
2018-09-01 09:09:02 +01:00
dngfx
e5d298af60
Fix this back to channel.send_message(), stdout just no.
2018-09-01 02:21:57 +01:00
dngfx
cc21f1d9a3
Set a timer for sending out ducks randomly, and change some messages to stdout.
2018-09-01 01:56:07 +01:00
dngfx
4a9d823d54
Adjust timing for production.
2018-08-31 18:31:46 +01:00
dngfx
06466187b6
Introduce .killers for ducks.py
2018-08-31 18:23:46 +01:00
dngfx
7e06e06ee0
THE OVERLORD DEMANDS I TRASH IT
2018-08-31 17:04:15 +01:00
dngfx
4b654ed12d
Change to stdout because i'm a pillock.
2018-08-31 17:02:46 +01:00
dngfx
95d1475f2c
.friends support! Yay, lets be friends.
2018-08-31 16:58:25 +01:00
dngfx
6e400a5470
Just duck things~
2018-08-31 16:06:11 +01:00
dngfx
bce8cef524
Migrate duck data to user_channel_settings.
2018-08-31 14:36:25 +01:00
dngfx
0f1e683cd3
Where on earth did this PHP relic come from?
2018-08-31 14:16:27 +01:00
dngfx
0bb3ae9273
Fix decoys stacking up and attempting to take over irc.
2018-08-31 14:10:20 +01:00
dngfx
309b119ec5
That commit was just a decoy.
2018-08-31 14:00:09 +01:00
dngfx
a6d2f4cd5b
Decoy Fiddling
2018-08-31 13:58:44 +01:00
jesopo
6f2da2c40f
Remove print in ducks.py
2018-08-31 13:44:39 +01:00
jesopo
b7cf524e98
Give modules event objects with "context"s, to facilitate purging all the event
...
hooks for a module
2018-08-31 13:44:39 +01:00
dngfx
90ce92dc39
Revert "Reformat"
...
This reverts commit abed9cf
2018-08-31 10:51:47 +01:00
dngfx
abed9cf4ea
Reformat
2018-08-31 10:50:37 +01:00
dngfx
391671185d
A start on .decoy for ducks.
2018-08-31 06:27:41 +01:00
dngfx
301d3cb45a
Revert the god awful database edits I made and make ducks.py convert to int. Might be an idea to make a make_int function?
2018-08-31 05:48:53 +01:00
dngfx
a635b1f0a0
Apparently i auto-reformatted the code. Either way I fixed ducks spawning endlessly.
2018-08-31 04:35:42 +01:00
dngfx
8d6f0fffa9
Make channel values being inserted into SQLite integers if they're numbers.
...
Update ducks.py, you can now .bef and .bang! Coming soon: .friends, .killers, and .ducks
Update google to use gb instead of us. We're British goddamnit.
2018-08-31 04:14:56 +01:00
dngfx
e272d50f49
Update strax generator with a bunch of new phrases and attacks.
2018-08-30 18:11:17 +01:00
jesopo
d37fc44343
use assure_call for trakt.py and lastfm.py
2018-08-30 18:07:50 +01:00
dngfx
377b7d39df
Update strax generator with a bunch of new phrases and attacks.
2018-08-30 16:57:45 +01:00
dongfix
b13c971507
Update strax generator to make more sense when exclaiming instead of questioning.
2018-08-30 16:17:15 +01:00
jesopo
dceeef8648
Add missing comma in strax.py
2018-08-30 16:15:24 +01:00
dongfix
f6f183c2bd
Fix strax.py to randomise other things and fix random choice 1,2
2018-08-30 16:03:54 +01:00
dongfix
fd94b939e0
Add strax.py .strax command.
2018-08-30 15:55:57 +01:00
jesopo
ebd3ab47c8
Add missing "," in channel_op.py
2018-08-30 11:15:57 +01:00
jesopo
2d4a1d42ce
Only get highlight-spam-threshold setting when there's more than one highlight
...
in a line
2018-08-30 11:14:19 +01:00
jesopo
49cc4d8d7b
Add help and usage for commands in channel_op.py
2018-08-30 11:13:26 +01:00
jesopo
ceb73f586c
Only show 2 biggest units in !seen
2018-08-29 15:52:04 +01:00
jesopo
669aa32c31
Report actual topic setter (use 333, not 332)
2018-08-29 15:17:06 +01:00
jesopo
3ec521538a
Print topics in print_activity.py
2018-08-29 14:57:40 +01:00
jesopo
76d7a8de36
Delete "permissions" setting when it's empty
2018-08-29 14:34:52 +01:00
jesopo
6ecae3b261
Add the ability to only require authentication if your nickname is registered
2018-08-28 18:16:19 +01:00
jesopo
b9d4e11b77
Add !givepermission and !removepermission to permissions.py
2018-08-28 16:53:21 +01:00
jesopo
672b22e62c
Change command.py to use call_limited
2018-08-28 16:35:07 +01:00
jesopo
4922ee8f4a
Allow users to see their internal IDs and channel IDs
2018-08-28 15:33:56 +01:00
jesopo
f8a6aa087b
Save when a user sends their "first" words (won't be correct for old users)
2018-08-28 15:33:41 +01:00
jesopo
9a78dabcc2
80 cols!
2018-08-28 15:15:04 +01:00
jesopo
b2259c2ea8
Added !channelsetoverride in set.py
2018-08-28 14:55:57 +01:00
jesopo
b62cd4be84
.log -> .buffer, i missed this one!
2018-08-28 14:55:35 +01:00
jesopo
b699c120a0
Change how specific events assure their hooks gets the event independant of
...
loading order
2018-08-28 14:55:08 +01:00
jesopo
1b8c663c1a
Made "you need to be authenticated" message more helpful
2018-08-28 12:48:08 +01:00
jesopo
5aa73cd64b
Only allow users to send coins to users that have had coins before
2018-08-28 12:45:42 +01:00
jesopo
d8466ecf6d
Require authentication to use or potentially lose coins
2018-08-28 12:42:10 +01:00
jesopo
2806a915bc
Add !resetcoins in coins.py
2018-08-28 12:39:16 +01:00
jesopo
e5a5fa5c4b
modules/logging.py -> IRCLogging.py; IRCLog.py -> IRCBuffer.py; change logging
...
to be an object on the server object instead of an event call
2018-08-28 12:23:57 +01:00
jesopo
ea9b6f32dc
Prevent users sending coins to themselves
2018-08-25 20:09:44 +01:00
jesopo
1ae1206b8a
.add -> .append typo in channel_save.py
2018-08-19 00:20:24 +01:00
jesopo
9a3f2e5de6
Change the database to give channels and users ids and use those in the settings
...
tables
2018-08-19 00:19:53 +01:00
jesopo
88eb7b695f
show uptime in 1w1d1h1m1s format
2018-08-18 21:54:12 +01:00
jesopo
33b48f5ea3
.wrote -> .write typo in words.py
2018-08-18 18:29:06 +01:00
jesopo
4da8a4ac39
Added code to preprocess check a command that only requires authentication, not
...
a permission
2018-08-18 18:28:41 +01:00
jesopo
054a98c0c8
Added !resetkarma in karma.py
2018-08-18 18:28:27 +01:00
jesopo
dacf74e2b1
Show spin colour, make sure there's bet amounts for all bets, fix street regex,
...
show total winnings and support low/high for !roulette in coins.py
2018-08-18 18:26:47 +01:00
jesopo
84a793caf2
Support multiple bets in one go with !roulette in coins.py
2018-08-16 11:54:51 +01:00
jesopo
8ef02fdbd8
Added streets and big/small to !roulette
2018-08-15 18:33:14 +01:00
jesopo
eb3155d3e0
implemented !roulette in coins.py
2018-08-15 17:55:05 +01:00
jesopo
bc6278f9df
username -> lastfm_username
2018-08-15 10:34:58 +01:00
jesopo
51cf5c56d4
save !to commands for the target user, not the user sending the command!
2018-08-13 18:19:17 +01:00
jesopo
0f09184e48
Add setting to prevent sending a random quote on quit
2018-08-13 16:04:27 +01:00
jesopo
63418dc0f3
Don't show actual lastfm name unless it was explicitly provided
2018-08-13 16:04:08 +01:00
jesopo
b369f5d6e8
Use regex match to avoid coin values less than 0.01
2018-08-13 16:01:06 +01:00
jesopo
d89fcbfe46
Round up when checking zeroness
2018-08-10 14:00:33 +01:00
jesopo
6709fa1878
Prevent highlighting users in !wordusers and !richest
2018-08-10 13:56:45 +01:00
jesopo
fed2d64739
don't permit 0-coin flips
2018-08-10 13:56:00 +01:00
jesopo
b24e37fed6
fixed filtering out bankrupt users from !richest
2018-08-10 12:59:06 +01:00
jesopo
922ff5ac84
Fix "decimal" typo in !richest
2018-08-10 12:54:19 +01:00
jesopo
a385270cb9
Switch to using Decimal in coins.py, floats are weird!
2018-08-10 12:22:41 +01:00
jesopo
155bf689ea
Have 2 decimal places for coins!
2018-08-10 10:28:43 +01:00
jesopo
8d50b702f3
A 10 second interval for interest rates is not good
2018-08-10 10:28:24 +01:00
jesopo
760b46979d
stderr not stdout, int() interest rates and actually redo interest rates every
...
hour
2018-08-09 18:02:29 +01:00
jesopo
a114390cde
Allow users to see other people's coins
2018-08-09 16:37:55 +01:00
jesopo
1cc83a4a38
Fix more issues with referencing "server" in interest() in coins.py
2018-08-09 16:13:17 +01:00
jesopo
e477e8f04f
"wins/loses %d coin(s)!" instead of "wins/loses %d!"
2018-08-09 16:11:46 +01:00
jesopo
e113ec23d9
Add help strings for stats.py
2018-08-09 15:16:35 +01:00
jesopo
4502256263
Fix wrong method of referencing server in timer callback
2018-08-09 15:16:15 +01:00
jesopo
67e030155d
Added interest rates in coins.py, filter out 0 for !richest
2018-08-09 14:22:25 +01:00
jesopo
213bf999b9
Changed find_all_by_setting to not return setting, added !richest
2018-08-09 13:49:44 +01:00
jesopo
3e8f10dff5
More grammar
2018-08-09 13:35:31 +01:00
jesopo
f6058594f6
Round up redeem-delay time, allow users to send coins
2018-08-09 13:18:05 +01:00
jesopo
beb2b4a606
Only allow !redeemcoins when you have no coins
2018-08-09 12:34:12 +01:00
jesopo
7c1fce17cd
Remove print in coins.py, fixed grammar a little
2018-08-09 12:29:51 +01:00
jesopo
c1193774f0
Added coins.py
2018-08-09 12:24:09 +01:00
jesopo
e424e3b294
fixed typos in !channelget
2018-08-08 20:49:34 +01:00
jesopo
ee86848b62
Added !get and !channelget
2018-08-08 20:45:57 +01:00
jesopo
fda3d65d53
Added a setting to disable ctcp responses
2018-08-08 13:41:25 +01:00
jesopo
2e9ce67586
Also track BitBot's words in words.py
2018-08-08 10:33:33 +01:00
jesopo
bb53f6f565
get highlight-spam-protection setting before highlight-spam-threshold
2018-08-06 14:27:49 +01:00
jesopo
0ab7c11cb8
use TimeRotatingFileHandler in logging.py
2018-08-05 20:44:35 +01:00
jesopo
400aaf43d0
also empty command stdout when there's no !more
2018-08-05 20:43:52 +01:00
jesopo
b128eb170b
Grammar is important
2018-08-05 20:43:42 +01:00
jesopo
6a7369f7de
changed words.py to use new user_channel_settings table
2018-08-05 17:16:15 +01:00
jesopo
7114bb7155
only get "sed" setting when a message that looks like a sed command comes in
2018-08-05 15:35:23 +01:00
jesopo
c2c60e309a
Improve using correct nickname capitalisation in words.py
2018-08-05 13:14:40 +01:00
jesopo
7698105761
When a user is online, use correct capitalisation in !wordusers
2018-08-05 13:12:07 +01:00
jesopo
1af821123b
only set autojoin when we've joined a channel not in our autojoin list
2018-08-05 12:57:19 +01:00
jesopo
38a518f1fa
Change to.py to use user_channel_settings in to.py and set priority to MEDIUM to
...
avoid !to to one's self sending two messages
2018-08-05 12:53:02 +01:00
jesopo
6b1641c438
Put milliseconds in logging.py
2018-08-05 12:13:25 +01:00
jesopo
06289171fa
Actually add event hook for CRITICAL
2018-08-05 11:54:24 +01:00
jesopo
4962b11199
Add CRITICAL log level to logging.py
2018-08-05 11:52:50 +01:00
jesopo
f143169cb5
only try to delete !to messages when there are any
2018-08-05 11:42:40 +01:00
jesopo
5e42608ead
Improved logging, added TRACE logging in Database.py to see how it performs
2018-08-05 11:30:43 +01:00
jesopo
fbd6975351
Remove debug print, improve wikipedia.py
2018-08-04 12:48:38 +01:00
jesopo
65feaef283
Add help for !words
2018-08-03 16:25:27 +01:00
jesopo
45dca53497
it's "#--ignore" not "#!--ignore"
2018-08-03 14:29:37 +01:00
jesopo
e2e395c352
Revamped words.py to track words per user per server so we're not writing a huge
...
json string to sqlite every time someone says a tracked word
2018-08-03 13:44:50 +01:00
jesopo
7caf45e77e
Grammer is important
2018-08-03 11:40:33 +01:00
jesopo
84ea92fea8
get user permissions every time they try to use a command that requires
...
permissions, instead of caching their permissions when they sign in
2018-08-02 23:00:42 +01:00
jesopo
1c50a27564
Added missing ")" in print_activity.py
2018-07-31 08:48:37 +01:00
jesopo
b8145dd60d
support optional data in upc.py
2018-07-25 13:43:13 +01:00
jesopo
f751d85824
add !gtin to upc.py
2018-07-25 13:06:31 +01:00
jesopo
a7a28adde7
Add upc.py
2018-07-25 13:05:37 +01:00
jesopo
46e124a5db
Included notices in print_activity, don't always print channel name
2018-07-23 10:20:00 +01:00
jesopo
ad68527688
remove debug print in books.py
2018-07-22 20:55:16 +01:00
jesopo
8cf45c2432
rating, date and authors are optional in google's book apis
2018-07-22 20:53:44 +01:00
jesopo
e73d056b34
include quit reasons in print_activity if present
2018-07-20 13:12:55 +01:00
jesopo
270bfe58ed
Ban formats aren't bools
2018-07-20 13:12:41 +01:00
jesopo
6213ba5f61
added a way to prevent bitbot accepting invites
2018-07-19 14:39:29 +01:00
jesopo
e99671aced
Added a channel setting for banmask, added !unban
2018-07-19 14:39:10 +01:00
jesopo
d0ef4432b3
move sending CAP sasl request to sasl.py
2018-07-16 21:41:39 +01:00
jesopo
d385d73dab
use PRIORITY_URGENT in perform.py
2018-07-16 00:41:08 +01:00
jesopo
2012a388da
move sasl logic to it's own module
2018-07-15 23:56:06 +01:00
jesopo
2b30ffc71b
fix print_activity still using old EventManager priority location
2018-07-15 23:55:21 +01:00
jesopo
66397cb24a
Made part/quit print_activity functions more uniform
2018-07-15 15:22:37 +01:00
jesopo
d3e8920e2a
Use QUOTES.items() in quit.py
2018-07-15 15:19:11 +01:00
jesopo
68298bbccf
Added EventHook.call_for_result to get a result or default from an event
2018-07-15 15:15:52 +01:00
jesopo
06de65b1c1
Move quit quotes to it's own module
2018-07-15 15:09:11 +01:00
jesopo
01f9f51ef2
print_messages->print_activity, print more things!
2018-07-15 14:14:20 +01:00
jesopo
718da30728
skip !more's out/err, added a way to split messages from their prefixes for
...
logging purposes
2018-07-14 09:50:12 +01:00
jesopo
7d9f3dc6e4
Allow translate source/target languages to be more than 2 chars
2018-07-14 09:06:52 +01:00
jesopo
d12b61620d
Implemented delimited "event chains" and changed pong.py to use it
2018-07-08 11:18:55 +01:00
jesopo
84cc65526f
Track user channel modes by user object, not nickname
2018-07-02 16:15:26 +01:00
jesopo
ae9d715e55
Added guid functionality to random_number.py
2018-07-02 14:45:25 +01:00
jesopo
dc0babe599
Accept http and https soundcloud urls
2018-07-02 14:34:46 +01:00
jesopo
50bf76d795
Add logic in soundcloud.py to accept urls and search back through log for urls
2018-07-02 14:33:38 +01:00
jesopo
b27610e23d
Fixed translate.py
2018-07-02 12:51:36 +01:00
jesopo
7affd3b9f3
Add missing on_kick event hook in channel_save
2018-07-02 12:51:18 +01:00
jesopo
cb486d6122
random.py -> random_number.py due to name collision (stdlib)
2018-07-02 11:09:49 +01:00
jesopo
3c138c1d18
If BitBot is kicked from a channel, remove from channel_save
2018-07-02 11:09:22 +01:00
jesopo
464510cd80
OMDBAPI now needs an api key
2018-07-02 11:09:02 +01:00
jesopo
d84cb62180
Added first version of print_message to prettyprint log certain activities
2018-05-02 07:30:16 +01:00
jesopo
11ddb1fca5
Remove rickroll
2018-05-02 07:20:52 +01:00
jesopo
dcd0c0a542
Use IRCServer.original_nickname in perform.py as we might not have our "given" nickname yet
2018-05-02 07:20:13 +01:00
Evelyn
b85d7bd3b5
NR: Don't titlecase Eagle station names. This is already done.
2018-02-04 09:42:09 +00:00
Evelyn
840fbcdb10
Merge branch 'master' of github.com:jesopo/bitbot
2018-02-04 09:27:54 +00:00
Evelyn
922ba20117
NR: Eagle endpoints are now under /json/ going forward
2018-02-04 09:27:35 +00:00
jesopo
5794b3cd92
Added option to ban highlight spammers instead of just kicking them
2017-12-26 13:51:10 +00:00
jesopo
14ffa6716d
Added highlight spam detection/prevention logic to channel_op
2017-12-26 11:50:18 +00:00
jesopo
0cc72d5d66
Added a "replay" system to EventManager hooks, to replay missed .calls
2017-12-26 10:32:36 +00:00
Evelyn
62ac516d1f
NR: Indicate interesting activity at locations
2017-12-10 15:20:48 +00:00
Evelyn
c6572bd6f4
NR: 0000 if headcode None
2017-12-04 18:28:13 +00:00
Evelyn
0f1b87a8c9
NR: Work with Eagle's new and improved format
2017-12-04 17:50:11 +00:00
Evelyn
6bdeccac03
NR: bool.get, what
2017-11-03 19:24:27 +00:00
Evelyn
93862e0347
NR: Don't die if Eagle's not here
2017-11-03 19:20:12 +00:00
Evelyn
9588b7520a
NR: change eagle ~branding~
2017-11-02 22:56:00 +00:00
Evelyn
0894d642bb
typo
2017-11-01 14:27:36 +00:00
Evelyn
1f09d69a75
Abandon capability request if an empty ACK (a spec violation but okay) is received
2017-11-01 14:25:52 +00:00
Evelyn
c833d9dbb6
NR: Formatting improvements for external, don't reference non-existent summaries
2017-11-01 12:03:36 +00:00
Evelyn
57dfb56ba7
NR: slightly simplify association summaries
2017-10-31 23:13:16 +00:00
Evelyn
e669b7c2e6
NR: Indicate direction for associations
2017-10-31 11:57:22 +00:00
Evelyn
2055b6656d
NR: Full association summaries for SCHEDULE, LDB
2017-10-31 10:58:05 +00:00
Evelyn
6008cbac2c
NR: Add date filter
2017-10-29 12:00:08 +00:00
jesopo
0df7abb03e
Handle empty CAP, additional IRCLog feature, better tls, better channel_save logic, add sed-sender-only setting
...
Signed-off-by: jesopo <github@lolnerd.net>
2017-10-27 13:15:33 +01:00
Evelyn
72b2f3bc29
Amber Rudd
2017-10-27 09:40:26 +01:00
Evelyn
aa6529ab0c
NR: Use the same association descriptions for LDB and SCHEDULE
2017-10-23 18:41:00 +01:00
Evelyn
b35a64ae48
NR: Don't assume associations present in eagle output
2017-10-23 16:18:10 +01:00
Evelyn
fa8f7da166
NR: Use SCHEDULE associations
2017-10-23 16:13:58 +01:00
Evelyn
b289909bcc
NR: Multiline support for head, include ferry services in nrtrains
2017-10-14 23:11:42 +01:00
Evelyn
a8ea18202e
Signals: Glenn Moramarco quote
2017-10-10 10:54:38 +01:00
Evelyn
1e644e78f3
Signals: Add Turnball
2017-09-29 21:45:48 +01:00
Evelyn
249a3b40b3
Make the telegram module vaguely optional
2017-09-06 00:17:55 +01:00
Evelyn
84bfe81182
Bitbot can do Telegram now, I guess
2017-09-05 20:50:20 +01:00
Evelyn
5dcbfe588d
Increase default period
2017-09-03 06:20:41 +01:00
Evelyn
48fd351089
NR: Shorten times
2017-09-02 12:54:20 +01:00
Evelyn
267edd7c0b
NR: Allow displaying CRS only for arrivals/departures
2017-09-02 12:37:08 +01:00
Evelyn
3a7937d0e2
NR: Support Eagle API keys, don't assume platforms are available
2017-09-02 10:11:26 +01:00
Evelyn
f00f1bda94
NR: Eagle now provides a best name via the combined TIPLOC set as 'name', use that
2017-09-01 10:07:21 +01:00
Evelyn
d3d2be44cb
NR: Use the actual name field
2017-08-31 19:39:04 +01:00
Evelyn
0822d323bc
NR: Take platforms from SCHEDULE if not available in LDB
2017-08-31 19:08:09 +01:00
Evelyn
a78b713268
NR: List delayed trains properly, strip prefix
2017-08-29 22:53:49 +01:00
Evelyn
e69a0c3937
NR: Expand period
2017-08-27 14:46:16 +01:00
Evelyn
f6766ae477
Implement 'time' parameter
2017-08-27 14:41:11 +01:00
Evelyn
bb8d73d9d1
Signals: add quote
2017-08-25 10:57:54 +01:00
Evelyn
78c80a71dd
Signals: Don't take Hitler out of context, add 'tear down this wall' etc
2017-08-24 17:00:55 +01:00
Evelyn
9d62e6f301
Add power/inferred tops filtering to nrtrains
2017-08-11 10:03:05 +01:00
Evelyn
69b1a6bd9b
'Death solves all problems - no man, no problem.' was in fact written by Anatoly Rybakov, not Stalin
2017-08-10 00:18:45 +01:00
Evelyn
e232ad5dae
Add IRCv3→SASL support for nickserv auth, added optional module whitelist, added server option for recording channel keys, increased flexibility for event raising in linehandler, probably other things too
2017-07-12 10:00:45 +01:00
Evelyn
81edacfba6
Sun Tzu*2, optimism (ha)
2017-06-23 21:13:31 +01:00
Evelyn
a740ccbb61
add quote
2017-06-17 11:29:54 +01:00
Evelyn
36816af1d8
Dag Hammarskjöld quote somewhat relevant to our lives at present
2017-06-16 14:04:04 +01:00
Evelyn
bc94c862c1
NR: Allow null scheduled times, add inferred power/class if available in both modes, titlecase scheduled only location names
2017-06-05 14:25:05 +01:00
Evelyn
9ef5af3894
NR: Prefer LDBSVWS for headcodes
2017-05-30 22:25:12 +01:00
Evelyn
7e19fbe047
NR: I really hate SOAP. Don't break if you don't have a LDBSVWS query
2017-05-30 22:17:30 +01:00
Evelyn
f9e773fc69
NR: Allow use of Eagle for scheduling data (docs/source will follow\!). Slight regression in use of RIDs (but who uses them anyway?)
2017-05-30 22:11:27 +01:00
Evelyn
28425202ce
NR: Show shorter TOC code instead of name in service info
2017-04-06 11:25:21 +01:00
Evelyn
70bd021187
NR: Time colouring improvements primarily for service
2017-04-06 10:39:59 +01:00
Evelyn
7c1e2ac2a0
NR: I'm slipping. =→==
2017-04-04 10:20:39 +01:00
Evelyn
cad3482069
NR: Give scheduled times a neutral colour status
2017-04-04 10:19:04 +01:00
Evelyn
b3b6ac823b
NR: Put arrived/departed status in map, not local variable (oops)
2017-04-04 10:16:36 +01:00
Evelyn
9dc18311b1
NR: Change service info to use same time system as trains, add departure time option
2017-03-30 16:38:56 +01:00
Evelyn
9f04faaa90
NR: Turns out arrivals/departure doesn't actually respect UTC indication
2017-03-26 14:13:50 +01:00
Evelyn
67d7a20c5c
NR: Clocks go back tonight. Make UTC explicit in nrtrains call
2017-03-25 18:21:39 +00:00
Evelyn
710699175b
Attribute quote to topiary
2017-03-21 15:05:30 +00:00
Evelyn
cceb0a76d0
NR: dividing 'from' if division at origin, 'as' otherwise
2017-03-21 14:56:07 +00:00
Evelyn
24a8b11191
NR: Add length at origin and division/join, shorten summary for TIPLOC only locations
2017-03-21 14:05:27 +00:00
Evelyn
88f88b76f4
NR: Change time determination for trains command
2017-03-09 17:01:56 +00:00
Evelyn
a69ac85414
NR: Give 'arrivals' command more appropriate name, help now mentions buses
2017-03-09 13:33:24 +00:00
Evelyn
ad8bde0232
NR: Use station_summary for service listing
2017-03-09 12:16:41 +00:00
Evelyn
e175567537
NR: Handle departure SOAP errors, reduce lines for returning with error message
2017-03-09 11:57:35 +00:00
Evelyn
e3c97db55f
NR: Cancellation codes inline, reference to 'major' severity nrcc messages, filter now accepts ! for bools
2017-03-08 09:35:23 +00:00
Evelyn
f6cb42e5af
NR: Suffix 'hidden' platforms
2017-02-26 12:27:00 +00:00
Evelyn
ddb54cd159
NR: Reference UIDs instead of RIDs in headcode ambiguity message
2017-02-16 10:42:46 +00:00
Evelyn
8682440d4c
NR: Minor formatting improvements
2017-02-16 10:32:45 +00:00
Evelyn
2dd9a9077d
NR: Reuse SOAP client for performance improvements, add delay/cancellation code command
2017-02-14 11:10:18 +00:00
Evelyn
6615dda7a1
quotes
2017-01-27 21:30:54 +00:00
Evelyn
955ba23b86
Inform the user when they've got filtering wrong
2017-01-16 16:22:09 +00:00
Evelyn
8293ade8ec
NR: Add better filtering, add arrivals capablity, add train joining information
2016-12-21 15:50:45 +00:00
Evelyn
cb41b9be37
NR: Remove unused span/countdown code
2016-12-20 14:11:16 +00:00
Evelyn
40b31d9860
NR: Train division information for services, simple '*' filtering for arrivals
2016-12-20 14:03:14 +00:00
Evelyn
9669f6d058
NR: No service information and service disambiguation aren't errors
2016-12-20 12:16:54 +00:00
Evelyn
92fa4c02b0
NR: Allow for multiple destinations for departures
2016-12-20 12:01:16 +00:00
Evelyn
7580516dff
Remove unused service list
2016-12-20 08:57:56 +00:00
Evelyn
18397bbe15
NR: Fix 'Cancelled' being shown in green, give departed trains a different colour
2016-12-20 08:54:56 +00:00
Evelyn
c5713e8b54
nr things
2016-12-17 17:34:19 +00:00
Evelyn
ba16f84b15
Convert NR module to use SV for more detail. Abridge some service info, add primitive service filtering, command for headcode/uid/rsid service summaries. If you have a NR API key, you'll need to switch it!
2016-12-16 10:05:54 +00:00
Evelyn
67f0d16c1c
Add quote to signals module
2016-12-14 14:43:55 +00:00
Evelyn
d6b50a7a63
Remove 'plat' prefix for space
2016-12-12 10:54:17 +00:00
Evelyn
5f8b61f231
Add tflservice. Arrivals are incomplete, but it's the best we can do with the API
2016-12-06 00:14:14 +00:00
jesopo
a1ddc61af8
Reset font just before "(more)" truncation.
2016-12-05 23:32:31 +00:00
Evelyn
e924d492d0
Remember the filtered output, not the entire service list for !nrservice
2016-12-04 13:50:00 +00:00
Evelyn
60a728f959
More quit quotes!
2016-11-28 10:11:22 +00:00
Evelyn
49af64d553
Dag Hammarskjöld quote
2016-11-17 22:19:26 +00:00
Evelyn
e54473622c
Use channel IDs instead of names (lolsecurity)
2016-11-12 11:07:07 +00:00
Evelyn
293f1d5935
Revert NR departures to showing times, not countdown, add colours, allow referring to service from departures
2016-11-04 17:06:07 +00:00
Evelyn
46766507c5
More reformatting, colours!
2016-11-04 16:11:03 +00:00
Evelyn
08894b26b5
Add service command to nr
2016-11-02 01:28:47 +00:00
Evelyn
b92abaf20d
Start of tflstop command
2016-11-01 21:19:03 +00:00
Evelyn
25c214f363
Force CRS to upper (Darwin doesn't like lowercase CRS codes)
2016-10-29 15:38:54 +01:00
Evelyn
fc55e853e3
more quotes and stuff
2016-10-25 21:10:56 +01:00
Evelyn
a1a816b1cd
Add monty python quit quotes!
2016-10-16 21:21:46 +01:00
Evelyn
5b527e247a
Another quit quote! :D
2016-10-13 18:14:55 +01:00
Evelyn
50a01b7bf1
Add Donald Trump, lulzsec to quotes
2016-10-09 09:07:27 +01:00
Evelyn
8d74905481
nrtrains now doesn't break if a platform isn't known
2016-10-09 09:01:06 +01:00
Evelyn
8ad424c906
Add National Rail module w/ arrivals
2016-10-06 14:27:35 +01:00
Evelyn
4b4c5e8103
tfl improvements
2016-10-03 15:10:08 +01:00
Evelyn
f8f011f69e
Hacky s/ /%20/ fixes tflsearch problem. @jesopo: Please look at URL encoding in Utils
2016-09-27 02:27:09 +01:00
Evelyn
0a468c19d4
remove comments
2016-09-26 11:05:09 +01:00
Evelyn
842ee38146
Add tflvehicle, simplify tflbus
2016-09-26 11:02:45 +01:00
jesopo
7425afa90f
Merge branch 'master' of github.com:jesopo/bitbot
2016-07-14 00:42:49 +01:00
jesopo
c55982b11f
implemented error logging to EventManager (WIP)
2016-07-14 00:42:17 +01:00
Evelyn
068011b7a2
Add proper no result message
2016-07-14 00:41:50 +01:00
Evelyn
57de4f9b44
Change tflsearch no result message
2016-07-14 00:35:11 +01:00
jesopo
5f8d51cbf0
fixed duplicate response
2016-07-14 00:31:44 +01:00
jesopo
369b784a0d
added logs.py and changed EventHook objects to know their name.
2016-07-13 07:31:09 +01:00
jesopo
e604a8de31
Merge branch 'master' of github.com:jesopo/bitbot
2016-07-13 07:06:23 +01:00
jesopo
07457a3626
fixed some crashes in tfl.py.
2016-07-13 07:05:46 +01:00
Evelyn
80bf0bb978
s/tflstop/tflsearch/
2016-07-10 23:44:37 +01:00
Evelyn
36e12dda1f
TfL stop search, 'bus' can now accept proper IDs, fixed issue with time in ms
2016-07-10 13:29:24 +01:00
Evelyn
ddd2a0a463
TfL tube line status
2016-07-10 10:19:29 +01:00
jesopo
145cb90c3d
changed tflbus command to only show next time for each bus, not every single bus it can find.
2016-07-09 14:51:39 +01:00
jesopo
f5f756b39a
added a way to filter what bus you're looking for at a stop in tfl.py.
2016-07-06 13:18:27 +01:00
jesopo
afc8a72f05
changed channel_op.py to not need an argument for (de)op/(de)voice.
2016-07-05 12:17:22 +01:00
jesopo
c02470ddbf
changed tfl.py to show bus stop name.
2016-07-05 12:16:40 +01:00
jesopo
6da747981f
did some tweaks to tfl.py.
2016-06-28 00:18:09 +01:00
jesopo
f21618eeb1
Merge branch 'master' of github.com:jesopo/bitbot
2016-06-28 00:09:51 +01:00
jesopo
cbec3657f4
added tfl.py.
2016-06-28 00:09:33 +01:00
Evelyn
51fa7fee3e
We're all fucked. I'm fucked. You're fucked. [...] It's been the biggest cock-up ever and we're all completely fucked
2016-06-27 23:11:46 +01:00
Evelyn
871e7fc80d
Add Walter Ulbricht quote
2016-06-25 22:12:06 +01:00
jesopo
6a3b9b28b4
tweaked karma.py.
2016-06-24 13:10:36 +01:00
jesopo
d3a1c2db52
added a part command to admin.py.
2016-06-24 09:17:27 +01:00
jesopo
e5dfd04045
you know what, this module has too many flaws.
2016-05-17 16:20:18 +01:00
jesopo
1c6632e0e7
fixed a problem in nickname_aliases.py that made the bot assume root aliases were just new names that needed aliasing.
2016-05-17 16:16:49 +01:00
jesopo
d042f0dc4a
added admin.py, for admin-type things.
2016-05-17 16:14:23 +01:00
jesopo
f06033483f
added a way to set the bot's nickserv password through a command.
2016-05-17 14:52:07 +01:00
jesopo
8dadd7d339
added deop, voice and devoice to channel_op.py.
2016-05-17 14:51:47 +01:00
jesopo
2fb299e9b7
on second thought, should probably only show people their nickname's permissions when they're identified.
2016-05-17 14:51:15 +01:00
jesopo
5286157326
added a command to show you what permissions you have.
2016-05-17 14:50:48 +01:00
jesopo
e31d606d16
added stats.py.
2016-05-09 16:14:12 +01:00
Evelyn
eb603fccb9
Another quote
2016-05-09 13:35:52 +01:00
jesopo
18a5d2087e
Merge branch 'master' of github.com:jesopo/bitbot
2016-05-06 13:37:30 +01:00
jesopo
5338859e31
added a function to Utils to get the "closest" setting, with channel/user settings being more important than server-wide settings.
2016-05-06 13:36:01 +01:00
Evelyn
2df29ab76e
more quotes
2016-05-04 14:31:45 +01:00
jesopo
9c9d7aa439
added wikipedia.py.
2016-05-04 13:30:31 +01:00
jesopo
9b6d8d2dc0
added bitcoin.py.
2016-05-03 11:58:42 +01:00
jesopo
bdf21643a3
made set/channelset settings consistent.
2016-05-01 22:47:59 +01:00
jesopo
3a7481315d
added a command to quotes.py to get a random quote from a category.
2016-05-01 17:47:35 +01:00
jesopo
c1f8835653
added quotes.py.
2016-04-29 12:43:48 +01:00
jesopo
52deab53aa
added an error to the kickban command in channel_op.py for when a user is not present in a channel to be kickbanned.
2016-04-24 03:01:44 +01:00
jesopo
00dd425210
added an op command to channel_op.py.
2016-04-22 11:48:28 +01:00
jesopo
5e9574e195
added a timeout error and fixed the regex on karma.py.
2016-04-21 00:09:30 +01:00
jesopo
c5c53bc481
added hash.py. why not.
2016-04-20 13:52:23 +01:00
jesopo
bc12c77891
did what I said I would sooner than I thought I would. centralised persisting timers through bot restarts.
2016-04-19 13:25:50 +01:00
jesopo
9eff1b8931
entirely reworked the timer system to work with the event system, will eventually persist all timers to database until complete in a central way.
2016-04-19 12:21:27 +01:00
jesopo
ce4f0f68b0
fixed words.py to always show nicknames with the same count in the same order.
2016-04-18 16:51:06 +01:00
jesopo
1127682872
added a way for a command callback to neatly ask to only be available for people with a rank or above, added a channel_op module to utilise this.
2016-04-18 16:50:19 +01:00
jesopo
100fad4599
added some code to the nickname_aliases module, I do not trust this module yet. :|
2016-04-18 16:49:21 +01:00
jesopo
2d729b68c3
started passing some more helpful info when preprocessing a command.
2016-04-18 16:48:36 +01:00
jesopo
9c5f0d6035
added command-prefix to channel settings.
2016-04-14 16:48:44 +01:00
jesopo
390eff4c2b
added experimental module to track what nicknames are actually aliases for other nicknames.
2016-04-13 14:55:38 +01:00
Evelyn
190d42fbb5
simpler boolean channel settings
2016-04-10 17:40:58 +01:00
jesopo
954a1b4dfc
added a confirmation of message save to in.py.
2016-04-10 17:32:51 +01:00
jesopo
ab05ea6509
beefed up the words.py module.
2016-04-10 17:32:33 +01:00
jesopo
1750c2b1ec
changed commands.py to show usage help (if available) when minimum arguments are not met.
2016-04-10 17:31:55 +01:00
jesopo
eac1d127bd
added the code to prevent users using certain commands based on permissions.
2016-04-06 18:23:02 +01:00
jesopo
99299c9df5
made some finishing touches to todo.py.
2016-04-06 16:38:46 +01:00
jesopo
3ba307300f
added more code to deal with lastfm having a ridiculously unreliably structured API.
2016-04-06 16:22:52 +01:00
jesopo
7f7a1f6d55
added spotify.py and soundcloud.py, updated bot.json.example.
2016-04-06 13:56:12 +01:00
jesopo
9b2556a65a
added usage help to a lot of modules, added a verbose option to karma.py.
2016-04-06 12:02:44 +01:00
jesopo
afec1deb5c
added tracking certain words in words.py and fixed/changed a couple of things to allow it to work.
2016-04-06 09:40:49 +01:00
jesopo
27c0de701c
added words.py for keeping track of how many words people have said.
2016-04-05 18:43:17 +01:00
jesopo
e1188e153a
fixed a crash-causing bug in lastfm when userplaycount isn't present.
2016-04-05 18:42:36 +01:00
jesopo
efa8c91552
used set.py as an example for the new usage command.
2016-04-05 18:41:33 +01:00
jesopo
e8875ef17d
added a usage command to show usage help for commands.
2016-04-05 18:41:03 +01:00
jesopo
f19389ec8c
added todo.py.
2016-04-05 14:26:46 +01:00
jesopo
f9ce711b25
oops
2016-04-04 23:20:55 +01:00
jesopo
3c0a8562a9
ironed out some little issues with permissions.py.
2016-04-04 18:48:39 +01:00
jesopo
62a73df22f
added permissions.py which contains code for identifying/registering/logouting users. updated README.md to reflect the newly required scrypt module.
2016-04-04 18:42:37 +01:00
jesopo
436db4b9a8
added a way for command event hooks to ask to only be fired from private messages.
2016-04-04 18:41:07 +01:00
jesopo
d5e4c7bbe7
added code to youtube.py to prevent a crash when a video has likes/dislikes disabled.
2016-04-04 18:40:39 +01:00
jesopo
1cc28a5581
fixed showing track tags in lastfm.py.
2016-04-04 12:37:17 +01:00
jesopo
a348bf4241
fixed some dumb typos
2016-04-03 17:08:48 +01:00
jesopo
e10ba5f293
added some more to the skeleton of the auto_mode module.
2016-04-03 13:23:47 +01:00
jesopo
504e93a78d
tinkered with some modules and fixed a few bugs, also added the skeleton for the auto_mode.py module.
2016-04-03 13:20:05 +01:00
jesopo
8843d9a469
removed yet more left over code from when commands were channel-only.
2016-03-31 13:37:08 +01:00
jesopo
4bca2cb95d
fixed the frankly ridiculously wrong youtube url regex in youtube.py.
2016-03-31 13:36:26 +01:00
jesopo
6dff99490c
added CTCP SOURCE and TIME responses.
2016-03-31 12:10:51 +01:00
jesopo
1c00b20d51
made the @ for the twitter command optional.
2016-03-31 12:10:18 +01:00
jesopo
87af05d4b6
added a "hashflag" to modules to stop modules being loaded that rely on a not-present config option.
2016-03-30 19:31:23 +01:00
jesopo
e7dc2d566c
fixed a left over reference to event["channel"] that is now broken in to.py.
2016-03-30 12:50:07 +01:00
jesopo
dc24b6b680
made channel commands prefixable with the bot's nickname, not just the command prefix.
2016-03-30 12:49:46 +01:00
jesopo
426068f0cf
fixed a couple of problems in some modules.
2016-03-29 21:06:07 +01:00
jesopo
57a0e2f10f
made commands work in channel AND in private message.
2016-03-29 16:22:22 +01:00
jesopo
16d1af9057
added bitly.py and haveibeenpwned.py.
2016-03-29 16:20:50 +01:00
jesopo
7de9970cd0
added help strings where they were missing.
2016-03-29 14:37:35 +01:00
jesopo
bf0e271546
added random.py, added code to commands.py to remove all empty strings from args_split.
2016-03-29 14:32:01 +01:00
jesopo
cd0311d269
updated ctcp.py.
2016-03-29 13:00:01 +01:00
jesopo
f943d63098
first commit.
2016-03-29 12:56:58 +01:00