jesopo
|
f1348e5679
|
Handle IRCArgs being empty strings (e.g. 'PRIVMSG #test :')
|
2019-03-08 23:23:09 +00:00 |
|
jesopo
|
b3472c009a
|
Only log exception message, not full stacktrace, when a connect fails
|
2019-03-08 10:12:01 +00:00 |
|
jesopo
|
6b59830a6e
|
Only print ANSI reset characters when appropriate
|
2019-03-06 21:48:31 +00:00 |
|
jesopo
|
1b7a8bc896
|
Log content of lines that need fallback encoding
|
2019-03-06 17:19:37 +00:00 |
|
jesopo
|
c842c459f4
|
Specifically only catch UnicodeDecodeError in IRCSocket.read
|
2019-03-06 17:02:58 +00:00 |
|
jesopo
|
11c4d70156
|
add IRCServer.clear_send_buffer() to clear queued lines
|
2019-03-05 11:35:24 +00:00 |
|
jesopo
|
91c2ab03ba
|
add IRCServer.send_enabled, to prevent sending after QUIT in signals.py
|
2019-03-05 11:29:46 +00:00 |
|
jesopo
|
b43a5a7c74
|
Add -N to start.py to disable to-file logging
|
2019-03-04 19:35:18 +00:00 |
|
jesopo
|
7a3db82300
|
Add IRCServer.has_capability and use it throughout line_handler
|
2019-03-03 22:38:34 +00:00 |
|
jesopo
|
197ae2e053
|
Raise a specific exception in utils.http.request for "wrong content type"
|
2019-02-28 23:28:45 +00:00 |
|
jesopo
|
948c86adbc
|
Need to str() Hostmask objects in ParsedLine.format()
|
2019-02-28 16:22:17 +00:00 |
|
jesopo
|
9335ca5d16
|
Treat both a and a= as None for message-tags
|
2019-02-27 22:20:01 +00:00 |
|
jesopo
|
d16046fb49
|
Simplify ParsedLine._tag_str and ParsedLine.format()
|
2019-02-27 22:14:53 +00:00 |
|
jesopo
|
846b881e52
|
Throw ValueError when utils.http.request tries to soup non-html/xml data
|
2019-02-27 15:16:08 +00:00 |
|
jesopo
|
cfaf6864fc
|
Don't try to parse non-html/xml stuff with BeautifulSoup
|
2019-02-26 11:18:50 +00:00 |
|
jesopo
|
5aaf6eb7df
|
Bump version to v1.2.1
|
2019-02-25 21:47:36 +00:00 |
|
jesopo
|
56f6511ad3
|
Critical security fix: truncate IRCLine.ParsedLine.format() at newline
|
2019-02-25 21:46:23 +00:00 |
|
jesopo
|
d627ed49e2
|
Pull "is main thread" logic out to utils, force Database to be accessed on main
thread
|
2019-02-25 10:36:17 +00:00 |
|
jesopo
|
faa305f2e8
|
Add -m/-M args to ./start.py that call command_line on individual modules
|
2019-02-24 10:43:46 +00:00 |
|
jesopo
|
276d753711
|
Change --verbose short to -V, add --version/-v, add IRCBot.VERSION
|
2019-02-24 08:37:42 +00:00 |
|
jesopo
|
8d55319f56
|
Rename IRCLine.Line to IRCLine.SentLine, for clarity
|
2019-02-24 08:25:12 +00:00 |
|
jesopo
|
1473f41b03
|
Fire preprocess.send per-command - use this to only strip colors from ParsedLine
objects for PRIVMSG and NOTICE
|
2019-02-23 21:40:11 +00:00 |
|
jesopo
|
5baa688fbc
|
Make IRCArgs mutable
|
2019-02-23 21:39:46 +00:00 |
|
jesopo
|
8c94bcf6ca
|
Move utils.irc.IRCParsedLine to IRCLine.ParsedLine, improve truncation
mechanism, don't convert sent line from ParsedLine to text to ParsedLine for
line_handler handling
|
2019-02-23 21:33:04 +00:00 |
|
jesopo
|
c6699c509e
|
.upper() command in IRCParsedLine.format()
|
2019-02-23 16:11:26 +00:00 |
|
jesopo
|
54218b747f
|
Only allow the last arg of a formatted line to be :trailing
|
2019-02-23 16:07:20 +00:00 |
|
jesopo
|
8b54046ca4
|
Add target typehint on IRCServer.send_tagmsg, add send_tagmsg to IRCChannel/IRCUser
|
2019-02-22 22:34:54 +00:00 |
|
jesopo
|
9d72cbca73
|
Keep track of a user's away message, not just whether they're away or not
|
2019-02-22 22:26:50 +00:00 |
|
jesopo
|
8a0fd009e4
|
Also unload submodules within packages (ModuleManager.py)
|
2019-02-22 17:58:53 +00:00 |
|
jesopo
|
47c2cbb0fa
|
Split line_handler.py out in to different files for different categories
|
2019-02-22 11:23:36 +00:00 |
|
jesopo
|
62eab40968
|
Revert "Treat both a and a= as having a value of None in message-tags (utils.irc)"
This reverts commit e7ec4b5716 .
|
2019-02-21 07:29:19 +00:00 |
|
jesopo
|
e7ec4b5716
|
Treat both a and a= as having a value of None in message-tags (utils.irc)
|
2019-02-20 22:26:31 +00:00 |
|
jesopo
|
deedab7248
|
Add IRCServer.send_joins, a nicer interface than manually ",".join ing
|
2019-02-20 17:08:30 +00:00 |
|
jesopo
|
ddb69685d3
|
again, r"\" isn't valid.
|
2019-02-20 16:53:40 +00:00 |
|
jesopo
|
e343bf3e6a
|
Check throttle space when queueing more data not whether there's no queued data
|
2019-02-20 16:52:45 +00:00 |
|
jesopo
|
98215f66eb
|
r"\" isn't valid - use "\\" (utils.irc)
|
2019-02-20 16:52:14 +00:00 |
|
jesopo
|
c1881fbafb
|
Remove '\' from post-unescaped message-tags
|
2019-02-20 16:34:14 +00:00 |
|
jesopo
|
47841ed154
|
don't replace '\\' with '\\' with message-tag unescape
|
2019-02-20 16:33:48 +00:00 |
|
jesopo
|
81d82413d4
|
draft/message-tags-0.3 (JSON tags) was rejected
|
2019-02-20 14:46:40 +00:00 |
|
jesopo
|
577fae7cea
|
Don't pass None around as tag default, fix some missing return type args
|
2019-02-19 15:57:00 +00:00 |
|
jesopo
|
3f8ac871ed
|
typo, 'utls' -> 'utils' (utils.irc)
|
2019-02-19 15:44:23 +00:00 |
|
jesopo
|
114d1054a5
|
Add .message( and .notice( to IRCSendBatch
|
2019-02-19 15:41:17 +00:00 |
|
jesopo
|
bc772ef5cc
|
Default IRCParsedLine.tags to empty dict, not None
|
2019-02-19 15:40:56 +00:00 |
|
jesopo
|
53e5a7fe7e
|
contextualise JOIN key check, otherwise it doesn't send channel_name
|
2019-02-19 09:32:17 +00:00 |
|
jesopo
|
9f946e236d
|
copy paste fail, batch end should be "-" not "+"
|
2019-02-19 08:25:25 +00:00 |
|
jesopo
|
81ae0cc889
|
Add make_batch and send_batch to IRCServer
|
2019-02-18 23:16:47 +00:00 |
|
jesopo
|
b76b153672
|
Add batch_start and batch_end to utils.irc.protocol
|
2019-02-18 23:11:36 +00:00 |
|
jesopo
|
509a7ff42e
|
Default tags to null for utils.irc.protocol's message and notice
|
2019-02-18 23:06:41 +00:00 |
|
jesopo
|
07cb14d98c
|
utils.irc.protocol.join()'s keys param should be typing.Optional
|
2019-02-18 23:03:21 +00:00 |
|
jesopo
|
3bb917b619
|
Add src/utils/irc/__init__.py that should have been added some commits ago
|
2019-02-18 23:00:50 +00:00 |
|
jesopo
|
cd97a653cc
|
Don't try to use keys if we try to join a channel without any keys
|
2019-02-18 15:00:05 +00:00 |
|
jesopo
|
186b6b82a2
|
Shift formatting protocol data to it's own file: utils.irc.protocol
|
2019-02-18 14:58:27 +00:00 |
|
jesopo
|
d937145f93
|
Add missing :
|
2019-02-18 13:54:09 +00:00 |
|
jesopo
|
6da35a899b
|
don't pass around has_arbitrary - we don't need it.
|
2019-02-18 12:42:52 +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
|
be495344d4
|
How did this newline get here
|
2019-02-17 12:40:31 +00:00 |
|
jesopo
|
716568c21d
|
'src/IRCServer.capabilities' -> 'src/IRCServer.agreed_capabilities'
|
2019-02-16 09:12:43 +00:00 |
|
jesopo
|
23b0e58665
|
Send CAP REQ in 10-item chunks (src/IRCServer.py)
|
2019-02-16 08:21:42 +00:00 |
|
jesopo
|
ed99d66163
|
Don't add a space after a formatted tagmsg in _tag_str (src/IRCServer.py)
|
2019-02-14 21:59:26 +00:00 |
|
jesopo
|
8d97e51bf3
|
Add IRCServer.send_tagmsg, to send TAGMSG commands
|
2019-02-14 21:36:59 +00:00 |
|
jesopo
|
708ba2ddc7
|
Support one-shot event hooks (src/EventManager.py)
|
2019-02-14 10:36:11 +00:00 |
|
jesopo
|
1136162057
|
Fix 'Optional[str]!=str' type hinting issue in utils.irc line parsing
|
2019-02-13 11:00:22 +00:00 |
|
jesopo
|
e1de8cd9be
|
We were just checking if arbitrary was falsey, thus losing empty trailing args
(' :' with nothing after it) (utils.irc)
|
2019-02-12 20:42:09 +00:00 |
|
jesopo
|
b4092a14ca
|
Also strip \x01 off the start of CTCP commands, if it's there (utils.irc)
|
2019-02-12 16:49:24 +00:00 |
|
jesopo
|
86bc49a0a1
|
Only put a ":" on trailing args when it's required
|
2019-02-12 13:55:57 +00:00 |
|
jesopo
|
01a7c05687
|
Change arg types of constant_time_compare to typing.AnyStr (utils.security)
|
2019-02-12 11:59:55 +00:00 |
|
jesopo
|
9667b8a6e0
|
Move constant-time compare function to utils.security
|
2019-02-12 11:57:49 +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
|
2f5a232c4e
|
Hold on to tags and type for BATCHes
|
2019-02-11 22:15:12 +00:00 |
|
jesopo
|
b37a50ed7a
|
IRCServer should handle ping_sent, not IRCSocket
|
2019-02-11 21:23:52 +00:00 |
|
jesopo
|
a8d9365442
|
last_read/last_send is now handled by IRCSocket.py
|
2019-02-11 20:49:53 +00:00 |
|
jesopo
|
6c6f1f9c2b
|
socket.getpeername() can return more than 2 values (IRCSocket)
|
2019-02-11 20:34:15 +00:00 |
|
jesopo
|
137d5b1a58
|
connected status is now tracked by IRCSockets
|
2019-02-11 20:34:02 +00:00 |
|
jesopo
|
48fe6b7391
|
Add IRCSocket.connected_ip to hold on to the IP address we connected to (e.g.
so we know which IP we picked from a round robin DNS)
|
2019-02-11 16:10:23 +00:00 |
|
jesopo
|
9b44b6cd13
|
Shift socket.socket related logic to IRCSocket.py
|
2019-02-11 10:00:41 +00:00 |
|
jesopo
|
b6b7345764
|
We don't need to send writebuffer.empty event any more (src/IRCServer.py)
|
2019-02-11 00:00:58 +00:00 |
|
jesopo
|
63dc5009f7
|
Actually return str object from IRCLine.__str__
|
2019-02-10 23:57:38 +00:00 |
|
jesopo
|
1d48f6f19d
|
Add _char_limit return type hint, fix decoded_data return type hint
(src/IRCLine.py)
|
2019-02-10 23:52:25 +00:00 |
|
jesopo
|
ecb197858e
|
Import IRCServer in IRCLine so type hint comment is valid (src/IRCLine.py)
|
2019-02-10 23:51:28 +00:00 |
|
jesopo
|
f8e6a55ada
|
Add a comment as to why IRCLine's LINE_CUTOFF is 470, not 510
|
2019-02-10 22:52:23 +00:00 |
|
jesopo
|
fc5ade7112
|
Change LINE_CUTOFF to 470, now that we compute max char counts (src/IRCLine.py)
|
2019-02-10 20:54:12 +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
|
89f035fdcf
|
Add IRCServer.hostmask() to construct our nick!user@host hostmask
|
2019-02-10 20:44:29 +00:00 |
|
jesopo
|
a3b9be3d3d
|
Shift encoding/truncating IRC lines to src/IRCLine.py
|
2019-02-10 18:43:04 +00:00 |
|
jesopo
|
bd9eaad0b2
|
Return truncted data from encode_truncate and hold it in IRCLine.Line
|
2019-02-10 18:16:19 +00:00 |
|
jesopo
|
7952d4c366
|
Make use of utils.truncate_encode, to avoid cutting utf8 sequences in half
|
2019-02-10 16:48:08 +00:00 |
|
jesopo
|
f2c762a2d0
|
add utils.truncate_encode , to encode and truncate a string while respecting utf8 multi-byte encoding
|
2019-02-10 16:41:56 +00:00 |
|
jesopo
|
b744281e3d
|
Don't send empty space with JOIN if key=="" (src/IRCServer.py)
|
2019-02-10 15:02:24 +00:00 |
|
jesopo
|
d62b8c79fd
|
Return IRCLine object from IRCServer.send() (and functions that call .send())
|
2019-02-10 14:21:14 +00:00 |
|
jesopo
|
8e03bc66af
|
fix self.batches type hint (src/IRCServer.py)
|
2019-02-10 14:20:40 +00:00 |
|
jesopo
|
eb00f331e5
|
IRCLine's data should be bytes
|
2019-02-10 14:19:43 +00:00 |
|
jesopo
|
4772564115
|
Add missing src/IRCLine.py file
|
2019-02-10 14:18:33 +00:00 |
|
jesopo
|
28107292f5
|
now isn't defined now that throttle code has been separated out (src/IRCServer.py)
|
2019-02-10 14:12:39 +00:00 |
|
jesopo
|
7792be247c
|
Track lines-to-be-sent up until they're completely sent, queue up more than 1
line at a time in write buffer if we've got space (src/IRCServer.py)
|
2019-02-10 14:09:27 +00:00 |
|
jesopo
|
7f7941f564
|
rename, 'IRCLine' -> 'IRCParsedLine' (utils.irc)
|
2019-02-10 14:08:59 +00:00 |
|
jesopo
|
23da45bebc
|
Make line cutoff character count a const (src/IRCServer.py)
|
2019-02-10 14:08:07 +00:00 |
|
jesopo
|
41503ab5ae
|
Add TimersContext.find_all
|
2019-02-10 13:01:52 +00:00 |
|
jesopo
|
7704de25b6
|
Add Timers.find_all, to find all timers of a certain name
|
2019-02-10 12:58:15 +00:00 |
|
jesopo
|
e558a7676b
|
Abstract ssl socket wrapping away so we can reuse it
|
2019-02-10 12:36:52 +00:00 |
|
jesopo
|
1d807fefe0
|
Old copypaste fail - we were returning the most recent user id when creating channels
(Database.py)
|
2019-02-10 00:04:00 +00:00 |
|
jesopo
|
b44c456081
|
Set default values for various types of channel modes (src/IRCServer.py)
|
2019-02-09 18:52:59 +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
|
d86a0fc55c
|
Return "0s" from utils.to_pretty_time when given 0 seconds
|
2019-02-07 22:47:03 +00:00 |
|
jesopo
|
bae98d1236
|
Send CAP LS after we send PASS (if applicable) (src/IRCServer.py)
|
2019-02-07 17:41:10 +00:00 |
|
jesopo
|
76fd67235a
|
Add optional default param to Exports.get_one() (src/Exports.py)
|
2019-02-07 13:36:34 +00:00 |
|
jesopo
|
e124b8e79d
|
Implement ExportsContext.get_one
|
2019-02-07 10:10:13 +00:00 |
|
jesopo
|
8c1c10b3c7
|
Implement Exports.get_one()
|
2019-02-07 10:02:27 +00:00 |
|
jesopo
|
f94f233eb3
|
Fix mypy typing issue with importspec loader Optionalness (src/ModuleManager.py)
|
2019-02-06 22:41:37 +00:00 |
|
jesopo
|
1895ac34d7
|
If a server has a hostname that's not an IP, use it as SNI server name
|
2019-02-06 18:11:19 +00:00 |
|
jesopo
|
70b29a345a
|
Don't break if we try to "finish" a waiting CAP when it's already finished
|
2019-02-06 15:44:09 +00:00 |
|
jesopo
|
2f7937adc5
|
Don't .lower() nicknames in Database.py, it doesn't know about IRC casemapping
|
2019-02-06 11:25:20 +00:00 |
|
jesopo
|
cbbe6f1569
|
STARTTLS was removed long ago
|
2019-02-05 22:26:41 +00:00 |
|
jesopo
|
5991e02b0a
|
Manually count ACK/NAK for REQed CAPs before ENDing CAP negotiation
|
2019-02-05 19:20:02 +00:00 |
|
jesopo
|
c311521a31
|
Switch to using __init__.py as main file of directory modules, so they behave
like a package (also put the modules manually in sys.modules
|
2019-02-05 15:53:11 +00:00 |
|
jesopo
|
607c6eddf9
|
Switch to a non-deprecated method of loading files by filename
(`importlib.util.spec_from_file_location`)
|
2019-02-05 13:34:13 +00:00 |
|
jesopo
|
5dda000c96
|
Add make_event(..) to EventHookContext
|
2019-01-30 19:37:52 +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
|
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
|
cc8478c50c
|
Only search messages from other users in find_from (src/IRCBuffer.py)
|
2019-01-26 15:58:57 +00:00 |
|
jesopo
|
e1e4fbf9bc
|
Add find_from to IRCBuffer.Buffer, to find the most recent line from a given
user (src/IRCBuffer.py)
|
2019-01-26 15:46:20 +00:00 |
|
jesopo
|
8dcd6b2937
|
Make sure more than one hook can catch preprocess.send but still respect any
that return a change to the output (src/IRCServer.py)
|
2019-01-26 11:05:25 +00:00 |
|
jesopo
|
1a24f17375
|
IRCServer.Server.irc_lower should have a return type hint of str
|
2019-01-24 17:15:02 +00:00 |
|
jesopo
|
3df6b39228
|
Typo, IRCServer.Server.irc_equal -> IRCServer.Server.irc_equals
|
2019-01-24 17:13:51 +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
|
baeff58539
|
Fix incorrect indentation level in Logging.py
|
2019-01-18 16:28:09 +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
|
4c5af0845c
|
output of len() needs to have a -1 on it when matching it against indexes
within the given string (src/utils/irc.py)
|
2019-01-16 12:42:45 +00:00 |
|
jesopo
|
2331205368
|
Don't ignore a color code when it's right at the end of a message
(src/utils/irc.py)
|
2019-01-16 12:41:41 +00:00 |
|
jesopo
|
470f85b009
|
Pushing logging on to another thread was a ridiculous idea. it means CRITICAL
logs are in a race condition to write to file before the main thread exits.
|
2019-01-16 12:03:56 +00:00 |
|
jesopo
|
6405ee2582
|
Support removal of modes without args that we don't know about in a way that
doesn't push code execution down the wrong path (src/IRCChannel.py)
|
2019-01-16 11:59:36 +00:00 |
|
jesopo
|
aa40936ce6
|
Support a mode being removed from a channel, without an arg, that we weren't yet
aware of (src/IRCChannel.py)
|
2019-01-16 11:47:42 +00:00 |
|
jesopo
|
8ed89b3f31
|
Add src/utils/_consts_256_color.py that should have been added 2 commits ago
|
2019-01-16 11:25:40 +00:00 |
|
jesopo
|
3b75519fb0
|
Fix regression that caused only foreground to be parsed if there's foreground
AND background formatting (src.utils.irc)
|
2019-01-16 11:24:47 +00:00 |
|
jesopo
|
8f4312d002
|
Support IRC colors 16 through 98
|
2019-01-16 11:18:51 +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
|
97b7249989
|
don't consume 3 digits for a colour code when the first char is 0 and the second
two chars make up a valid colour code (src.utils.irc)
|
2019-01-13 01:54:02 +00:00 |
|
jesopo
|
9944f08acf
|
Typo, '=' -> '==' (utils.irc)
|
2018-12-12 11:50:59 +00:00 |
|
jesopo
|
d5467aefe9
|
Support '99' as a 'transparent' irc color code
|
2018-12-12 11:49:42 +00:00 |
|
jesopo
|
85840a68dd
|
Preserve logged exc_info across threads
|
2018-12-12 11:33:29 +00:00 |
|
jesopo
|
2d3bb2b5e8
|
Typo in utils.http.request, 'response_heders' -> 'response_headers'
|
2018-12-11 22:31:14 +00:00 |
|
jesopo
|
5b59740043
|
Pass a dict to utils.CaseInsensitiveDict, not a MutableMapping
|
2018-12-11 22:30:57 +00:00 |
|
jesopo
|
d373edfaae
|
Add missing utils import in utils.http
|
2018-12-11 22:30:05 +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
|
f77c443ac1
|
Add type hint for Logging._queue
|
2018-12-10 13:38:49 +00:00 |
|
jesopo
|
312293b221
|
Make block param of queue.get() explicitly refer to block
|
2018-12-10 13:34:53 +00:00 |
|
jesopo
|
df8135f105
|
Put logging functionality on to it's own thread
|
2018-12-10 13:18:15 +00:00 |
|
jesopo
|
dea63d9cf2
|
By the time we take ref counts, we've already removed module from
`loaded_module`
|
2018-12-09 11:24:05 +00:00 |
|
jesopo
|
8c3f87b029
|
change self.modules to be a dict of str:LoadedModule, not str:BaseModule
|
2018-12-09 11:22:30 +00:00 |
|
jesopo
|
ac71cfa4fa
|
Add missing change to loaded_module.module (from module ) in unload_module
|
2018-12-09 11:20:55 +00:00 |
|
jesopo
|
91beadd1cd
|
def LoadedModule -> class LoadedModule
|
2018-12-09 11:18:55 +00:00 |
|
jesopo
|
6935c926dc
|
Don't store any information used to load/unload modules on the module it's self
thus preventing even the possibility that modules can change them
|
2018-12-09 11:15:04 +00:00 |
|
jesopo
|
1c546a8244
|
Add typing hints to CaseInsensitiveDict, fix it's __setitem__ signature, call
.items() on `other` in ctor
|
2018-12-08 09:13:01 +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
|
bae1fac147
|
Add returns type hint in EventManager.py.call
|
2018-12-06 10:15:12 +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
|
d60c441ce2
|
fix incorrect retyping of "event_path" as "event, path" (i wasn't paying enough
attention)
|
2018-12-05 15:23:40 +00:00 |
|
jesopo
|
4015275afc
|
Add missing ")" from last commit
|
2018-12-05 15:19:58 +00:00 |
|
jesopo
|
df624e7e29
|
Don't do unnecessary work when someone tries to call a not-hooked-in-to event
|
2018-12-05 15:18:40 +00:00 |
|
jesopo
|
50149523dd
|
re-add check in utils.irc.parse_line that prevents us having an empty string as
an arg when there's no non-arbitrary args
|
2018-12-03 18:25:57 +00:00 |
|
jesopo
|
9dd9111f85
|
Further clarification of type hints in ModuleManager.py, including now making it
explicit that module objects MUST inherit from BaseModule
|
2018-12-02 16:00:55 +00:00 |
|
jesopo
|
9466f57efc
|
Use getattr to get Module classes out of modules in ModuleManager.py; this
makes more sense and removes some errors from type linting
|
2018-12-02 10:14:18 +00:00 |
|
jesopo
|
50ced296d1
|
Clarify func_queue type (IRCBot.py)
|
2018-12-02 10:08:58 +00:00 |
|
jesopo
|
10f84f970d
|
Clarify/fix type hints throughout EventManager.py
|
2018-12-02 10:04:05 +00:00 |
|
jesopo
|
08bd31f150
|
A couple of tweaks to clarify some type hints
|
2018-12-02 09:56:57 +00:00 |
|
jesopo
|
c4ea6fa562
|
data is now line
|
2018-12-02 09:48:06 +00:00 |
|
jesopo
|
cbc3ae3432
|
Remove usage of sys.stderr in IRCBot.py, change disconnect logs from info to
`warn`
|
2018-12-02 09:43:57 +00:00 |
|
jesopo
|
9a311c88b6
|
Remove print calls from IRCBot.py, move received data logging to IRCServer
|
2018-12-02 09:41:21 +00:00 |
|
jesopo
|
eb0c13971a
|
Omit Config keys that have falsey values (empty)
|
2018-12-02 08:28:59 +00:00 |
|
jesopo
|
cdfe6d2959
|
'uderline' -> 'underline' typo in utils.irc
|
2018-11-30 16:32:18 +00:00 |
|
jesopo
|
4dfb2ffeaa
|
Support ANSI underline
|
2018-11-30 16:30:56 +00:00 |
|
jesopo
|
af0fddf9ba
|
'find_*_setting' functions don't exist anymore!
|
2018-11-28 10:12:17 +00:00 |
|
jesopo
|
e1cdd4a353
|
Add type hint for return type of IRCBot.trigger
|
2018-11-27 17:29:38 +00:00 |
|
jesopo
|
9d9deb28b5
|
Raise exceptions back up through .trigger()
|
2018-11-27 15:06:10 +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
|
7c4b2b6c4e
|
Add .nickname/.username/.realname/.hostname to IRCServer
|
2018-11-27 12:16:36 +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
|
dce050aac5
|
Convert BOOLEAN sqlite3 types to bool objects when retrieving them
|
2018-11-27 11:39:50 +00:00 |
|
jesopo
|
fba1dd2271
|
Nope, just combine previous color-char and current color-char and see if it's
less than or equal to 15 (utils.irc)
|
2018-11-26 17:34:27 +00:00 |
|
jesopo
|
9a614846b0
|
Don't reject 6-9 (inclusive) when it's prepended by 0 (src/utils/irc.py)
|
2018-11-26 17:31:56 +00:00 |
|
jesopo
|
f93e3f927f
|
If a color code is double-digit, make sure it's 0-15, not just 0-20
|
2018-11-26 17:23:11 +00:00 |
|
jesopo
|
8d32fed2fe
|
ModuleWarnings in src/ModuleManger.py should be logged as warn , not error
|
2018-11-26 14:42:41 +00:00 |
|
jesopo
|
1b03d31c6b
|
Switch back to logging events as 2 messages as a lot of other logs can happen
between the start and end of an event and grouping them together is very useful
|
2018-11-26 14:23:20 +00:00 |
|
jesopo
|
6d6bfa3262
|
Don't assume a given mode is in IRCChannel.modes when we check to see if a given
mode has any arguments against it
|
2018-11-26 13:39:26 +00:00 |
|
jesopo
|
8cd069d37d
|
'bot.log' -> 'trace.log' and add a 'warn.log' log file that only catches
warn-and-worse
|
2018-11-26 11:09:43 +00:00 |
|
jesopo
|
5b70f37796
|
also support zero-padded color codes
|
2018-11-25 13:32:57 +00:00 |
|
jesopo
|
6d2c15ed2c
|
Don't eat numbers after color formatting if they'd end up making the color code
`20` or more
|
2018-11-25 13:23:00 +00:00 |
|
Evelyn
|
8cd7393d17
|
Regression: Don't connnect if a server's 'connect' setting is false
|
2018-11-24 12:14:36 +00:00 |
|
jesopo
|
d606944648
|
Move self.name = self.nickname_lower to under setting self.nickname_lower ,
otherwise `self.name` will be `""`
|
2018-11-23 13:55:40 +00:00 |
|
jesopo
|
3061c65024
|
IRCServer.Server.get_user should be 'typing.Optional[IRCUser.User]', not just
'IRCUser.user'
|
2018-11-21 20:18:12 +00:00 |
|
jesopo
|
5001e47af9
|
typo in src/IRCServer.py, 'typing.float' -> 'float'
|
2018-11-21 20:17:02 +00:00 |
|
jesopo
|
9ecbb6be7b
|
Fix mypy issues caused by overwriting a bytes variable with a str object
|
2018-11-21 20:16:07 +00:00 |
|
jesopo
|
bab4fca287
|
Add more return type annotations to src/IRCServer.Server
|
2018-11-21 20:13:56 +00:00 |
|
jesopo
|
9a5ba99840
|
Add some missing return type annotations in src/IRCServer.Server
|
2018-11-21 20:05:21 +00:00 |
|
jesopo
|
2852afd5f7
|
Add IRCServer.Server.get_target, to get an IRCChannel if the given target is a
channel name or an IRCUser
|
2018-11-21 20:04:07 +00:00 |
|
jesopo
|
60acf02cee
|
prefix should be a Optional[IRCHostmask], we shouldn't use Optional[] as a
compile-time object (utils.irc)
|
2018-11-20 17:23:47 +00:00 |
|
jesopo
|
549c12da10
|
Clarify typing in src/IRCChannel.py
|
2018-11-20 14:08:36 +00:00 |
|
jesopo
|
5d813175a1
|
Don't enable write throttling until we get 005
|
2018-11-19 10:12:52 +00:00 |
|
jesopo
|
f46015d9d8
|
Minor code styling change in urils.irc
|
2018-11-17 12:48:56 +00:00 |
|
jesopo
|
756c543c32
|
Typo in utils.__init__, 'number' -> 'number_str'
|
2018-11-16 17:45:40 +00:00 |
|
jesopo
|
8300c84f6a
|
Log event timing in 1 message, not 2
|
2018-11-14 23:08:39 +00:00 |
|
jesopo
|
ae8aeaeef4
|
Typo in src/Database.py, 'total_millisecons' -> 'total_milliseconds'
|
2018-11-14 23:06:41 +00:00 |
|
jesopo
|
1ec6d0ad40
|
Log query timing in src/Database.py in 1 line, not 2
|
2018-11-14 23:04:54 +00:00 |
|
jesopo
|
1297901dca
|
We do indeed need to see "\x03" even when there's no foreground/background
(color reset)
|
2018-11-14 22:50:04 +00:00 |
|
jesopo
|
2fc948ab24
|
Don't eat commas when there's no background color or when a comma directly
follows a background color
|
2018-11-14 22:35:13 +00:00 |
|
jesopo
|
81e1f11872
|
Missed a 'message' -> 'ctcp_message'
|
2018-11-14 22:13:31 +00:00 |
|
jesopo
|
1380f6c534
|
Typo in utils.irc, 'message' -> 'ctcp_message'
|
2018-11-14 22:10:45 +00:00 |
|
jesopo
|
19b195eb1d
|
Stop supporting using ansi bold for brightening colors, support ansi background
colors
|
2018-11-14 22:07:34 +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
|
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
|
f7872fac43
|
Typo in src/utils/irc.py, 'resplace' -> 'replace'
|
2018-11-14 13:16:11 +00:00 |
|
jesopo
|
99c2147512
|
Don't assume a reconnect timer event will always have connection_params
|
2018-11-14 13:08:57 +00:00 |
|
jesopo
|
76d9face44
|
You can join color and bold in to one \033 ansi sequence
|
2018-11-14 12:19:31 +00:00 |
|
jesopo
|
0e499a4078
|
Support irc format full reset (\x0F) as ansi reset (\033[0m)
|
2018-11-14 12:13:08 +00:00 |
|
jesopo
|
bbcde2d1d5
|
Use extended ANSI colors to avoid using bold to make colors lighter
|
2018-11-14 11:47:15 +00:00 |
|
jesopo
|
2fcde64bfd
|
'ANSI_RESET' -> 'ANSI_BOLD_RESET' typo, 'ansi_bold' -> 'color_bold'
clarification, fix issue in color tokenizing that caused bolds to be put in the
wrong place
|
2018-11-14 11:44:56 +00:00 |
|
jesopo
|
bcdbb3640c
|
Add type annotions to irc->ansi color functions
|
2018-11-14 10:28:38 +00:00 |
|
jesopo
|
00eb4027ec
|
Only reset ansi bolding when both color-bold and bold are false
|
2018-11-14 08:09:01 +00:00 |
|
jesopo
|
e5f068f660
|
Bold reset is 22, not 21
|
2018-11-13 18:19:37 +00:00 |
|
jesopo
|
5c6aa87470
|
Fix bolding/unbolding code in utils.irc
|
2018-11-13 18:05:25 +00:00 |
|
jesopo
|
d18d28f0a2
|
Apparently '39' is 'font reset' for ansi colors
|
2018-11-13 17:53:37 +00:00 |
|
jesopo
|
f1b54efe77
|
Visual tweak; align "="s in utils.consts
|
2018-11-13 17:43:00 +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
|
7918f9cc4e
|
Better constifying of COLORs
|
2018-11-13 17:23:18 +00:00 |
|
jesopo
|
8b9062b942
|
Better constifying of color/font chars
|
2018-11-13 16:02:26 +00:00 |
|
jesopo
|
16c4e1bfc6
|
I was accidentally removing two characters from the start of :nick!user@host
|
2018-11-13 15:04:11 +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
|
e9c9ec778c
|
Add .keys()/.values()/.items to src/IRCChannels.py
|
2018-11-13 11:36:44 +00:00 |
|
jesopo
|
36048be2fb
|
That shouldn't be there
|
2018-11-13 11:36:28 +00:00 |
|
jesopo
|
66643a1bd8
|
Return new user's id in Database.users.add
|
2018-11-13 11:19:43 +00:00 |
|
jesopo
|
8fc7a7652a
|
Return new server_id from Database.servers.add
|
2018-11-13 11:13:04 +00:00 |
|
jesopo
|
73c0c911d4
|
Move logic for adding a server to the database out to utils.cli and add a
--add-server flag for start.py, to add new server
|
2018-11-13 10:40:49 +00:00 |
|
jesopo
|
20b1e8b800
|
Remove unneeded const
|
2018-11-12 17:14:38 +00:00 |
|
jesopo
|
2747999ca6
|
We don't need utils.irc.remove_colon anymore!
|
2018-11-12 17:13:49 +00:00 |
|
jesopo
|
8b135d8310
|
Add type annotionations to src/Timers.py and src/IRCBuffer.py
|
2018-11-11 19:12:59 +00:00 |
|
jesopo
|
db1e2ea406
|
Add missing imports and Channel namespacing to src/IRCChannel.py
|
2018-11-11 16:11:45 +00:00 |
|
jesopo
|
a9b6086c70
|
Split out Channels in to IRCChannels.Channels, not IRCChannel.Channels
|
2018-11-11 14:53:16 +00:00 |
|
jesopo
|
0f53d2e828
|
Fix type annotations for utils.parse.keyvalue
|
2018-11-11 14:43:31 +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
|
e29cc1c52c
|
Implement __len__ on src/IRCChannel.py.Channels
|
2018-11-11 12:52:30 +00:00 |
|
jesopo
|
4e06a52bd9
|
Copypaste fail in src/IRCChannel.py, 'self.id' -> 'self._server.id'
|
2018-11-11 12:49:34 +00:00 |
|
jesopo
|
f6a997e3b9
|
Copypaste fail in src/IRCChannel.py, 'self.bot' -> 'self._bot'
|
2018-11-11 12:48:30 +00:00 |
|
jesopo
|
e133401ed9
|
Copypaste fail in src/IRCChannel, 'get_channel_id' -> '_get_id'
|
2018-11-11 12:47:02 +00:00 |
|
jesopo
|
32dccc65e0
|
Typin in src/IRCChannel.py, 'self._add' -> 'self.add'
|
2018-11-11 12:46:14 +00:00 |
|
jesopo
|
8eef9a612d
|
Readd line I accidentally removed in src/Database.py
|
2018-11-11 12:45:10 +00:00 |
|
jesopo
|
245c4599dd
|
Typo in src/IRCChannel.py, 'Iterable' -> 'typing.Iterable'
|
2018-11-11 12:43:39 +00:00 |
|
jesopo
|
0248c7503a
|
Forgot to import EventManager in src/IRCChannel.py
|
2018-11-11 12:43:11 +00:00 |
|
jesopo
|
44393a3170
|
Add missing ":" in src/IRCChannel.py
|
2018-11-11 12:41:31 +00:00 |
|
jesopo
|
c84205ed9b
|
Add a threading.Lock() around cursor.execute(...) in Database.py
|
2018-11-11 12:40:24 +00:00 |
|
jesopo
|
2816fe67bb
|
Move channel tracking data/functions to src/IRCChannel.Channels
|
2018-11-11 12:34:22 +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
|
a2292eb439
|
Filter out empty items in utils.parse.keyvalue
|
2018-11-08 22:41:30 +00:00 |
|
jesopo
|
3ff68dc427
|
Support passing unrestricted args between connections
|
2018-11-08 17:09:07 +00:00 |
|
jesopo
|
6bf6905262
|
Keep a track of bytes written and read per server
|
2018-11-08 13:31:05 +00:00 |
|
jesopo
|
26a16a7762
|
Keep a dict of isupport key:values on IRCServer.Server
|
2018-11-08 12:34:30 +00:00 |
|
jesopo
|
03cae696c1
|
Technically, we only need to unescape non-json message-tag *values*
|
2018-11-08 11:52:53 +00:00 |
|
jesopo
|
0c6d54f5fd
|
Only mesage-tag unescape non-json tags after we split on ";"
|
2018-11-08 11:43:32 +00:00 |
|
jesopo
|
729d1424ed
|
Unescape message-tags as per spec Escaping Rules
|
2018-11-08 11:37:23 +00:00 |
|
jesopo
|
5e7b335d04
|
Fix issues that were introduced in message-tag parsing when I added support for
JSON message tags
|
2018-11-08 11:13:24 +00:00 |
|
jesopo
|
3d00a1e15a
|
Explicitly denote when an :arbitrary arg is present in an IRCLine
|
2018-11-08 10:36:40 +00:00 |
|
jesopo
|
dccb460e5c
|
'rename_channel' -> 'rename' in src/Database.channels
|
2018-11-05 21:39:00 +00:00 |
|
jesopo
|
0a70fda6dc
|
Don't pass connection_params through to reconnect in normal circumstances
|
2018-11-05 20:51:51 +00:00 |
|
jesopo
|
ce3b319bee
|
Only automatically reconnect to a server when we don't already have a server
with the same ID (to make reconnection work)
|
2018-11-05 20:33:45 +00:00 |
|
jesopo
|
3cb9baeec3
|
Cache a server fileno from connect onwards, like we used to
|
2018-11-05 20:33:30 +00:00 |
|
jesopo
|
e2c806ffe4
|
Typo in IRCServer, 'nicknamme' -> 'nickname'
|
2018-11-05 20:18:22 +00:00 |
|
jesopo
|
9571c3f9fa
|
Update IRCServer.__repr__ to use connection_params
|
2018-11-05 20:18:06 +00:00 |
|
jesopo
|
afce01d0f8
|
Fall back to nickname for username/realname, as it used to be
|
2018-11-05 20:08:55 +00:00 |
|
jesopo
|
8b1e1fbb2e
|
Clarify typing of .nickname/.nickname_lower/.name in IRCUser
|
2018-11-05 18:37:15 +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
|
d92fc7f6b8
|
Add missing import of json in utils.irc
|
2018-11-05 17:44:21 +00:00 |
|
jesopo
|
0676b7b0db
|
Call Database.channels.rename in IRCServer.Server.rename_channel
|
2018-11-05 16:47:47 +00:00 |
|
jesopo
|
055390e220
|
Add Database.channels.rename, as part of support for IRCv3's RENAME
|
2018-11-05 16:46:24 +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
|
aaf0c8cf2a
|
Reschedule STS expiration on disconnect
|
2018-11-05 14:12:21 +00:00 |
|
jesopo
|
6ca8017966
|
Give Logging.Log object to modules
|
2018-11-05 12:38:40 +00:00 |
|
jesopo
|
10130d7288
|
I forgot the "normal" event hook syntax!
|
2018-11-05 12:34:18 +00:00 |
|
jesopo
|
86bbd370fb
|
'self.events' -> 'self._events' in IRCBot
|
2018-11-05 12:29:13 +00:00 |
|
jesopo
|
c3f654673a
|
Cache socket fileno in IRCServer.Server just before disconnecting
|
2018-11-05 12:27:30 +00:00 |
|
jesopo
|
fa3fc7e3fb
|
@utils.hook doesn't work outside of modules!
|
2018-11-05 12:27:11 +00:00 |
|
jesopo
|
fcedc434f2
|
it should be self.bindhost, now that we've moved the logic to .connect() instead
of __init__
|
2018-11-05 12:18:30 +00:00 |
|
jesopo
|
1065bba3ef
|
Typo in src/IRCServer.py; 'self.AF_INET' -> 'socket.AF_INET'
|
2018-11-05 12:16:30 +00:00 |
|
jesopo
|
7cc6b559be
|
Clarify items and var_items typing in src.utils.parse
|
2018-11-05 11:56:52 +00:00 |
|
jesopo
|
9c233cd4dd
|
Add src.utils.parse.keyvalue, mostly for IRCv3 CAP negotiation
|
2018-11-05 11:56:28 +00:00 |
|
jesopo
|
c2ebc7b5e4
|
Refactor IRCServer .connect() logic
|
2018-11-05 11:53:33 +00:00 |
|
jesopo
|
66ee3ce5f1
|
Add __repr__ to utils.irc.IRCArgs
|
2018-11-05 10:03:20 +00:00 |
|
jesopo
|
c1e9825a33
|
Don't set args to a split of the data left over when parsing out a command if
there's not a space after the command
|
2018-11-04 17:23:34 +00:00 |
|
jesopo
|
1610cfb499
|
Implement utils.irc.IRCArgs.__len__
|
2018-11-04 17:06:50 +00:00 |
|
jesopo
|
b8e3cdb075
|
Fix typo in utils.irc, 'self_args' -> 'self._args'
|
2018-11-04 17:04:16 +00:00 |
|
jesopo
|
52aa8a51a6
|
Move definition of IRCArgs above IRCLine
|
2018-11-04 17:03:01 +00:00 |
|
jesopo
|
e1d261bda0
|
Fix typo in utils.irc
|
2018-11-04 17:01:50 +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
|
9fe7815c17
|
utils.irc.color should take int for foreground/background, not str
|
2018-11-02 13:14:42 +00:00 |
|
jesopo
|
5b27ccb551
|
Add src/__init__.py to allow mypy to see src/ as a module
|
2018-11-02 11:51:13 +00:00 |
|
jesopo
|
a4d8d1f855
|
Fix some non-explicit None returns, add type hints to important variables
|
2018-10-31 15:12:46 +00:00 |
|
jesopo
|
7d54bd6ad0
|
Move setting BitBotFormatter's converter (to time.gmtime) to class definition as
it's not technically correct to overwrite a funcion on an existing object
|
2018-10-30 18:03:44 +00:00 |
|
jesopo
|
b543e31cd2
|
Fix/refactor issues brought up by type hint linting
|
2018-10-30 17:49:35 +00:00 |
|
jesopo
|
d0e3574227
|
Typo in src/Exports; 'self_exports' -> 'self.exports'
|
2018-10-30 16:28:39 +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
|
50e7aa40b9
|
Typo in utils.parse_docstring, 'multiple_items' -> 'var_items'
|
2018-10-28 11:53:44 +00:00 |
|
jesopo
|
857761a653
|
Support multiple items for docstring kwargs in utils.parse_docstring
|
2018-10-28 11:43:41 +00:00 |
|
jesopo
|
3094bb7748
|
Specifically handle OSError (e.g. Network is unreachable) as a disconnect
|
2018-10-26 11:30:16 +01:00 |
|
jesopo
|
d3231e3282
|
signal.signal timer callback takes 2 args
|
2018-10-25 14:09:19 +01:00 |
|
jesopo
|
4d3ff60205
|
Update src/IRCUser.py.send_notice to take a prefix kwarg
|
2018-10-25 12:15:12 +01:00 |
|
jesopo
|
8ea6db9422
|
Standardise "Failed to load results" errors!
|
2018-10-20 20:53:24 +01:00 |
|
jesopo
|
6bcfcb60ea
|
Some networks allow you to remove user modes that don't exist e.g. removing +o
from someone that doesn't have it. wtf.
|
2018-10-18 21:07:08 +01:00 |
|
jesopo
|
751aaa3365
|
Add missing return in src/IRCServer.py.get_user_setting
|
2018-10-18 17:16:23 +01:00 |
|
jesopo
|
4796d4264c
|
Print lines not [lines] in src/IRCBot.py
|
2018-10-17 17:36:01 +01:00 |
|
jesopo
|
c48574a3d6
|
"Cannot" -> "can't" in IRCServer encoding fallback
|
2018-10-17 17:04:56 +01:00 |
|
jesopo
|
a4bfae9557
|
TRACE log when we have to use fallback encoding
|
2018-10-17 16:54:33 +01:00 |
|
jesopo
|
6c6d593e6d
|
Only log exceptions when they're not unsafe
|
2018-10-16 14:53:37 +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
|
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
|
40ffb6ce0e
|
Typo in src/IRCServer.py, 'defau;t' -> 'default'
|
2018-10-14 14:31:30 +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
|
43d026cc9d
|
Typo in src/Timers.py, 'conteext' -> 'context'
|
2018-10-13 09:16:53 +01:00 |
|
jesopo
|
5e3399f73e
|
Actually, don't give contexts to timers that aren't contextual. (e.g. pesistent
timers)
|
2018-10-13 09:10:26 +01:00 |
|
jesopo
|
33921a8912
|
Timers._add takes a "context" param
|
2018-10-13 09:09:51 +01:00 |
|
jesopo
|
64cc1bf16c
|
a Timer object can have a context yet not be a contextual timer
|
2018-10-13 09:09:24 +01:00 |
|
jesopo
|
561d686643
|
Correctly remove contextual timers from src/Timers.py
|
2018-10-13 01:13:14 +01:00 |
|
jesopo
|
0a93e76333
|
Use Timers.get_timers() instead of Timers.timers
|
2018-10-12 18:15:22 +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
|
cb94fa9ae4
|
Add TimersContext, to be able to purge timers when modules are unloaded
|
2018-10-12 17:54:15 +01:00 |
|
jesopo
|
d460375629
|
Use decimal.Decimal in utils.parse_number
|
2018-10-12 11:28:14 +01:00 |
|
jesopo
|
d427e29936
|
Actually pass format args to ValueErrors in utils.parse_number
|
2018-10-12 11:21:57 +01:00 |
|
jesopo
|
a810d273d1
|
int(number) after we've checked .isdigit() in utils.parse_number
|
2018-10-12 11:19:04 +01:00 |
|
jesopo
|
9771fc9f7a
|
Add utils.parse_number, to turn 1k/1m/1b in to 1_000/1_000_000/1_000_000_000
|
2018-10-12 11:16:39 +01:00 |
|
jesopo
|
e6a55b2b22
|
Improve "non-complete line" TRACE log
|
2018-10-11 18:07:11 +01:00 |
|
jesopo
|
dceed3d439
|
TRACE log when we receive and buffer a non-complete line
|
2018-10-11 17:56:19 +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
|
c655668bbe
|
Add fallback_encoding to utils.http.get_url, in case a page has no implicit
encoding
|
2018-10-10 23:49:59 +01:00 |
|
jesopo
|
f286f3bf48
|
.decode data prior to json.loads in utils.http.get_url
|
2018-10-10 15:25:08 +01:00 |
|
jesopo
|
951c315cec
|
Fix syntax error for throwing a timeout when signal.alarm fires
|
2018-10-10 15:07:04 +01:00 |
|
jesopo
|
015fa8ddff
|
.decode plaintext returns from utils.http.get_url
|
2018-10-10 15:06:30 +01:00 |
|
jesopo
|
5b9ffe013d
|
Use signal.alarm to Deadline utils.http.get_url and throw useful exceptions
|
2018-10-10 14:25:44 +01:00 |
|
jesopo
|
be75f72356
|
Set a max size of 100mb for utils.http.get_url
|
2018-10-10 14:05:15 +01:00 |
|
jesopo
|
68f5626189
|
Change utils.http to use requests
|
2018-10-10 13:41:58 +01:00 |
|
jesopo
|
c28a41ad21
|
Remove debug print in src.utils.http
|
2018-10-09 22:39:34 +01:00 |
|
jesopo
|
f69a1ce7c1
|
Return response code from utils.http.get_url when code=True and soup=True
|
2018-10-09 22:16:04 +01:00 |
|
jesopo
|
b144d5e37e
|
Don't continue trying to use None data
|
2018-10-08 23:03:49 +01:00 |
|
jesopo
|
383767c7fb
|
Support post_data in utils.http.get_url
|
2018-10-08 12:43:31 +01:00 |
|
jesopo
|
681866339c
|
Support multiple types of comments in utils.get_hashflags
|
2018-10-07 11:24:13 +01:00 |
|
jesopo
|
29d8549da1
|
clear _trigger_functions after we've called all the waiting functions
|
2018-10-07 08:06:41 +01:00 |
|
jesopo
|
a77a985d5d
|
Optionally take a function in IRCBot.trigger, a function to be called on the
main thread
|
2018-10-07 08:01:54 +01:00 |
|
jesopo
|
472d745401
|
Socket on_read functions take 2 args (socket, string)
|
2018-10-07 07:56:11 +01:00 |
|
jesopo
|
bb533ab9e8
|
This is a far less complicated way of triggering epoll.poll
|
2018-10-07 07:54:10 +01:00 |
|
Evelyn
|
661199aa54
|
Research suggests _config and config are not synonymous
|
2018-10-06 22:58:59 +01:00 |
|
jesopo
|
825fb15c87
|
Add control-socket to bot.conf.example, only start up control socket is a unix
domain socket location is provided
|
2018-10-06 18:31:00 +01:00 |
|
jesopo
|
9458d9fee2
|
'control_socket_client' -> '_control_client' in src/IRCBot.py
|
2018-10-06 16:42:38 +01:00 |
|
jesopo
|
90680c11ef
|
Remove debug print in src/ControlSocket.py
|
2018-10-06 15:46:58 +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
|
0794a5173a
|
Add a way to track non-IRC sockets within the main epoll loop; use this for a
unix domain control socket!
|
2018-10-06 15:37:05 +01:00 |
|
jesopo
|
df94020ef5
|
Add database.find_by_setting, send github commits to interested channels
|
2018-10-06 09:54:21 +01:00 |
|
jesopo
|
60ec6fe2db
|
'ssl-certificate'/'ssl-key' -> 'tls-certificate'/'tls-key'
|
2018-10-05 23:01:12 +01:00 |
|
jesopo
|
096fd05cee
|
Typo in utils, 'line.replace[3:]' -> 'line[3:]'
|
2018-10-04 16:01:34 +01:00 |
|
jesopo
|
f2d9ff9d3b
|
Checking for the presence of the seperator in the return from .partition is a
more "correct" way of doing this
|
2018-10-04 15:27:52 +01:00 |
|
jesopo
|
feed251f82
|
Non-present hashflag values should be None, not empty string
|
2018-10-04 15:23:35 +01:00 |
|
jesopo
|
8d3255c46d
|
Simplify hashflag parsing
|
2018-10-04 15:22:09 +01:00 |
|
jesopo
|
c0fbe963a5
|
Try calling module.unload() (if it exists) when unloading a module
|
2018-10-04 14:45:32 +01:00 |
|
jesopo
|
72602e13f9
|
IRCChannel.send_part should have a self param!
|
2018-10-04 14:45:14 +01:00 |
|
jesopo
|
b00819d581
|
self.lock.acquire() should be after epoll.poll has returned
|
2018-10-04 14:44:50 +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
|
934ee7bf8e
|
Typo in src/IRCChannel.py. 'del self.user_modes' -> 'del self.user_modes[user]'
|
2018-10-04 04:41:28 +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
|
6c1ac52fde
|
Use docstring key, not value, as a key.
|
2018-10-03 16:00:53 +01:00 |
|
jesopo
|
0a5aef09b4
|
Fix start.py not giving the right arguments to database.servers.add
|
2018-10-03 16:00:25 +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
|
760c9d8844
|
Add a way to not add a user automatically in IRCServer.get_user
|
2018-10-03 11:32:31 +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 |
|
jesopo
|
9118af5e9c
|
Support changing command responses from PRIVMSG to NOTICE
|
2018-10-02 21:40:34 +01:00 |
|
jesopo
|
74180cb103
|
Simplify Utils.seperate_hostmask
|
2018-10-02 17:59:33 +01:00 |
|
jesopo
|
59a5d1283a
|
Make use of str.partition in Utils.parse_docstring
|
2018-10-02 17:47:28 +01:00 |
|
jesopo
|
362bbf89f7
|
... actually add src/IRCObject.py to git. that should have been present many
commits ago.
|
2018-10-02 15:16:20 +01:00 |
|
jesopo
|
150788c6c6
|
Add !leave to modules/channel_op.py
|
2018-10-02 14:55:12 +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
|
3201f198da
|
EventHook._call takes 3 args
|
2018-10-01 16:33:04 +01:00 |
|
jesopo
|
cf83c310dd
|
Change trace logging level from 5 to logging.DEBUG-1
|
2018-10-01 16:04:41 +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
|
6af738107b
|
Implement client-side bindhost
|
2018-10-01 14:06:50 +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
|
416d744291
|
Log remaining referrers to a module when it's unloaded
|
2018-09-30 20:12:28 +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
|
1f2c2b719b
|
Cache._items is a {id: [item, timeout]} dict, not {id: item}
|
2018-09-30 18:00:23 +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
|
63fc39e448
|
Use a zero-width non-joiner to prevent highlights, instead of a zero-width
joiner
|
2018-09-29 15:57:15 +01:00 |
|
jesopo
|
bcb67db3fd
|
Add !reloadscripts to modules/scripts.py
|
2018-09-29 15:05:50 +01:00 |
|
jesopo
|
fe981f9911
|
Actually get "item" when a cached item expires
|
2018-09-29 13:37:19 +01:00 |
|
jesopo
|
47ec11bbef
|
Add src/Cache.py, use it in modules/coins.py
|
2018-09-29 12:53:39 +01:00 |
|
jesopo
|
dfe5cb0be8
|
Add IRCBot.directory, in case we need it.
|
2018-09-29 09:24:26 +01:00 |
|
jesopo
|
df2ebfb315
|
Give EventHook objects their full delimited event name
|
2018-09-29 09:24:10 +01:00 |
|
jesopo
|
0f7a122a84
|
Move hashflag parsing to Utils.get_hashflags
|
2018-09-29 09:23:40 +01:00 |
|
jesopo
|
5cd1936af9
|
Correct syntax of event call in Timers.call
|
2018-09-28 17:01:41 +01:00 |
|
jesopo
|
c5c2c50bc4
|
Correctly access bot_settings in Timers.py
|
2018-09-28 17:01:20 +01:00 |
|
jesopo
|
fe1b479b2c
|
Add missing 'self' to args of Timer.finish()
|
2018-09-28 17:01:00 +01:00 |
|
jesopo
|
2fecfbb700
|
Fix find_prefix functions in Database.py ('%s%' -> '%s%%')
|
2018-09-28 16:52:17 +01:00 |
|
jesopo
|
a8bf3c9300
|
Remove cyclical references to IRCBot
|
2018-09-28 16:51:36 +01:00 |
|
jesopo
|
5674dc4a82
|
Open module files explicitly as utf8 in ModuleManager
|
2018-09-27 12:35:09 +01:00 |
|
jesopo
|
6c63655a6e
|
Pass parent EventHook down to children
|
2018-09-27 12:16:30 +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
|
af2b34b92b
|
Don't give IRCBot instance to things that don't need it, use a better way of
doing default locations for config/database/log
|
2018-09-27 11:07:29 +01:00 |
|
jesopo
|
6b01c8bb04
|
Change IRCBot.reconnect to only pass server_id to IRCBot.add_server
|
2018-09-27 10:22:57 +01:00 |
|
jesopo
|
f261b6d744
|
Create delimited|multiple|events from the correct EventHook when using
delimited.event.chains
|
2018-09-26 20:28:05 +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
|
b775f39d2b
|
Add missing format args in ModuleManager exceptions
|
2018-09-26 11:20:18 +01:00 |
|
jesopo
|
39c4ef1749
|
Don't use assert, throw a better exception for module name collisions
|
2018-09-26 11:19:48 +01:00 |
|
jesopo
|
12f68f55a7
|
IRCBot.bot_directory is no longer used
|
2018-09-24 17:29:06 +01:00 |
|
jesopo
|
a0b39043c0
|
Use 'bitbot_%s' import name format when unloading a module
|
2018-09-24 16:20:58 +01:00 |
|
jesopo
|
301a973aad
|
Import modules internally as 'bitbot_%s' to avoid name collisions (e.g.
'telegram')
|
2018-09-24 16:15:17 +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 |
|