Valentin Lorentz
a6aa5530dd
Ensure files written with AtomicFile are read in UTF8
...
With some locale configurations (not that uncommon on CentOS), open() may
default to non-UTF8 encodings (eg. ANSI_X3.4-1968).
This is usually not an issue, because we use open() both for writing and
reading. However, AtomicFile implicitly enforces UTF8; which needs to be
mirrored when reading.
2022-10-06 09:49:42 +02:00
James Lu
b1cfb87e71
String: allow multi-character inputs in "ord" and "unicodename"
...
This allows them to support emoji ZWJ sequences, which render like one character but are actually multiple.
2022-10-06 08:31:22 +02:00
Valentin Lorentz
35bf599856
utils/web: Add <br/> to the list of block elements
...
It should always be replaced with a space.
2022-09-20 07:51:46 +02:00
Valentin Lorentz
169824a9d2
Math: make @icalc
fail early when result is too large
...
This avoids inconsistent errors between CPython 3.10.7 and older
versions; and the result would not be readable anyway.
Closes GH-1517.
2022-09-18 20:06:34 +02:00
Valentin Lorentz
acdae12bbd
Bump CI version from 3.11.0-alpha.2 to 3.11.0-rc.2
2022-09-18 20:06:34 +02:00
Valentin Lorentz
bc3a441888
Poll: Make answers case-insensitive
2022-09-18 19:25:48 +02:00
Valentin Lorentz
200acdfa93
registry: Normalize values before checking they are valid
...
Otherwise, normalization is useless, and gives a surprising error message,
such as:
```
<user> config plugins.rss.sortfeeditems oldestfirst
<bot> Error: Valid values include 'asInFeed', 'oldestFirst', 'newestFirst', 'outdatedFirst', and 'updatedFirst', not 'oldestFirst'.
```
2022-09-07 12:31:22 +02:00
Valentin Lorentz
86b389618f
MessageParser: Ignore chathistory batches
...
To be consistent with commands and PluginRegexp (snarfers)
2022-08-16 00:23:33 +02:00
Valentin Lorentz
fccb4f705b
RSS: Log feed URL when feedparser.parse raises exceptions
2022-08-07 19:17:15 +02:00
Valentin Lorentz
4db32e24a5
Ctcp: Fix 'RuntimeError: dictionary changed size during iteration'
2022-08-06 15:09:10 +02:00
Valentin Lorentz
0780624450
Time: Fix typo
2022-08-06 15:08:51 +02:00
Valentin Lorentz
b8dce0d7db
Time: Skip new assertions on Python 3.6 so testSeconds passes
2022-08-02 13:16:21 +02:00
Valentin Lorentz
8f837a676d
Time: Add support for omitting space in @seconds
2022-08-02 13:01:08 +02:00
Valentin Lorentz
cd0f9f2628
Polls: Make nick matching case-insensitive
...
This prevents the same nick from voting twice by changing
the capitalization
2022-07-31 09:04:27 +02:00
Valentin Lorentz
28c52c2818
Poll: Add @poll list command
2022-07-30 21:25:47 +02:00
Valentin Lorentz
2afa3c49a1
Fediverse: run black
2022-07-30 21:23:10 +02:00
Valentin Lorentz
ef081746b1
commands: Silence noisy logging of command evaluation
2022-07-29 10:29:48 +02:00
Valentin Lorentz
ee60431396
Add debug logging when skipping SASL mechanisms
...
It is useful to figure out what you forgot to configure
2022-07-29 10:03:39 +02:00
Valentin Lorentz
f549ec12c6
Add debug logging of SASL mechanisms
2022-07-29 09:45:09 +02:00
Valentin Lorentz
796f717d09
requirements.txt: Classify and provide a rationale for each dependency
2022-07-20 18:31:24 +02:00
Valentin Lorentz
7b9a944603
Remove dependency on 'mock'
...
It is a backport of unittest.mock for Python versions before 3.3,
which we do not support anymore.
2022-07-20 18:25:27 +02:00
Valentin Lorentz
461c091b94
Fediverse: Hide channel actor on PeerTube
2022-07-20 18:15:51 +02:00
Valentin Lorentz
34f8842273
Fediverse: Add support for descriptions with line breaks
2022-07-20 18:10:14 +02:00
Valentin Lorentz
2df2bc28d0
Fediverse: Add support for videos
2022-07-20 17:57:29 +02:00
Valentin Lorentz
d67fb2a8b2
Autocomplete, Fediverse, Geography, Poll: Run Black
2022-07-20 17:53:09 +02:00
pratyushd
5d8f59bf80
add conditional to respond acc to kick being true or not ( #1512 )
...
Co-authored-by: Pratyush Desai <pratyush.desai@liberta.casa>
2022-07-13 21:02:28 +02:00
964acac058
for #1490 extend usage examples
2022-07-13 08:56:30 +02:00
James Lu
65d88440c2
supybot-plugin-doc: default to RST
...
None of the current maintainers are sure what stx is??
2022-07-09 14:24:13 -07:00
James Lu
95f6b1698e
Aka, Alias: replace obsolete LastFM example
2022-07-09 14:15:57 -07:00
James Lu
988fe08945
.gitignore: add doc-* paths from supybot-plugin-doc
2022-07-09 14:15:33 -07:00
Valentin Lorentz
96b7f51e71
callbacks: Ignore chathistory batches in PluginRegexp
...
This is consistent with what we already do with commands; and generally
makes sense, as we don't want to re-send titles and others when cycling
on UnrealIRCd (which includes a chathistory batch when joining when
chmode +H is set, despite umode +B)
2022-07-06 22:07:37 +02:00
Valentin Lorentz
3ecb37de10
test_callbacks: Add PluginRegexpTestCase.testReply to check basic behavior
2022-07-06 22:05:30 +02:00
Valentin Lorentz
6a943b8342
test_callbacks: Fix PluginRegexpTestCase to actually check regexp callbacks
2022-07-06 22:04:33 +02:00
James Lu
d00113e92d
PluginDownloader: replace automatic 2to3 step with a simple warning
...
The previous heuristic runs into false positives when imports are merged in __init__.py
More broadly though, it's unlikely automatic 2to3 is particularly useful in 2022 - plugins that were written ~10 years ago are unlikely to work even if syntax errors are fixed.
2022-06-23 22:31:17 +02:00
James Lu
8ccf2c7175
PluginDownloader: drop legacy Python 2-only repos
...
Most of these haven't been updated in ~10 years and are unlikely to work out of the box today (obsolete web APIs, etc.)
2022-06-23 22:31:17 +02:00
Valentin Lorentz
b3443a5a4c
setup: Fix install of subpackages when pip-installed from git repositories
...
It seems setuptools needs to be explicitly told to include subpackages
in this case.
2022-06-22 20:31:59 +02:00
SamStrongTalks
d04e8161d5
Add ability to exclude channel from self censoring ( #1508 )
2022-06-17 16:44:12 +02:00
Valentin Lorentz
6379a9d43a
supybot-reset-password: Update help string to match the man page
2022-06-17 09:11:35 +02:00
Valentin Lorentz
a65960bfdf
Add missing man page for supybot-reset-password.
2022-06-17 09:09:20 +02:00
Valentin Lorentz
fd04fccaec
i18n: Validate value of supybot.language
2022-06-17 00:29:38 +02:00
Valentin Lorentz
93370b6f0e
utils: Rewrite i18n initialization
...
The previous implementation was messy and needlessly complicated
This simplifies the logic and removes hackiness by making utils/str.py
handle internationalization logic itself, instead of bending over
backwards to load logic from the parent package at import time.
2022-06-17 00:05:51 +02:00
Valentin Lorentz
4a620bf7f0
Socket: Use the right variable to initialize the reconnect delay
2022-06-16 22:35:08 +02:00
Valentin Lorentz
94d669ebec
Make the minimum reconnect delay configurable
2022-05-28 13:53:05 +02:00
Valentin Lorentz
32198d42c2
i18n: Skip fuzzy strings
...
The German translation currently has at least one fuzzy string
with a missing %s; and several translations are completely wrong.
2022-04-27 22:15:43 +02:00
Valentin Lorentz
109f938b0c
Implement +draft/channel-context
2022-04-22 18:30:31 +02:00
Valentin Lorentz
1d4a43ed1b
AutoMode: Fix crash on servers without ISUPPORT PREFIX
2022-04-16 12:05:43 +02:00
Valentin Lorentz
94c7c7dfa3
supybot-plugin-create: Remove fallback for missing supybot.i18n
...
It is unlikely new plugins will be used on stock Supybot or Gribble.
2022-04-08 13:02:31 +02:00
Valentin Lorentz
9ec4eb9563
irclib: Fix assertion failure on InspIRCd when Sigyn plugin is loaded
2022-04-08 12:44:42 +02:00
Valentin Lorentz
eb6fc932d9
Web: Fix matching for youtube
2022-04-04 23:29:47 +02:00
Valentin Lorentz
21ea999e3c
Time: Add support for UTC offsets as tztime arguments.
2022-04-04 22:07:06 +02:00