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 |
|