Commit Graph

5960 Commits

Author SHA1 Message Date
Valentin Lorentz
5357f50bed Geography: Replace Canada/Newfoundland with America/St_Johns in tests
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1040997
2023-08-10 08:02:50 +02:00
Valentin Lorentz
71ae97ef5e MessageParser: On syntax error, detail which action caused the error
This can help users debug it.
2023-08-02 20:39:00 +02:00
Valentin Lorentz
bb3d456fdf RSS: Add support for feed attributes in template string
See https://feedparser.readthedocs.io/en/latest/common-rss-elements.html#accessing-common-channel-elements
2023-07-26 14:21:34 +02:00
Valentin Lorentz
8168c52939 RSS: Fix traceback in tests with new feedparser versions 2023-07-26 14:20:45 +02:00
James Lu
b4bf877e77 Network: accept empty args in 'command' and 'cmdall'
Closes GH-1541
2023-06-30 19:40:49 -07:00
Valentin Lorentz
97d67777d6 RSS: Sort entries in @rss responses as in announces 2023-06-08 19:58:50 +02:00
Valentin Lorentz
ac84fa4d68 ircquote: Use labeled-response when possible to reply to the user 2023-06-08 19:55:47 +02:00
Tasos Sahanidis
6021f0e6d9
String: Display regex error on invalid group reference (#1537) 2023-06-04 12:51:27 -07:00
James Lu
416a05e326
Route commands from Network.command back to the original network (#1540)
Add a replyIrc parameter to ReplyIrcProxy to run a command on one network, but route the replies to another.
This fixes a long standing issue where replies for remote commands are often lost to the void, as the nick of the caller may not exist on the target network (or worse, it could belong to a completely unrelated person).

Closes GH-556.

Co-authored-by: Val Lorentz <progval+git@progval.net>
2023-06-04 12:39:56 -07:00
Valentin Lorentz
922b00c8c3 Fediverse: Use default headers
Some instances behind Cloudflare block requests without a User-Agent
header.
2023-01-28 13:00:16 +01:00
Valentin Lorentz
efed7d8081 Move the 'ignore=False' trick from callbacks to Scheduler
I fear putting it in callbacks would be overzealous and reset it
within the processing of the same message, eg. when using conditional
to set the 'ignore' tag before other nested commands run.
2023-01-19 10:31:13 +01:00
Valentin Lorentz
f409111872 callbacks: Fix interference between Scheduler.repeat, Anonymous, and nested commands
Specifically, the issue is with Anonymous using irc.noReply() in
the first call, preventing nested commands' result from being used.

Before this commit, the second and third responses in the test would be
only "1" and "2" instead of "1 ['foo']" and "2 ['foo']".
2023-01-19 10:19:01 +01:00
Valentin Lorentz
b42596a021 Regenerate READMEs 2023-01-12 22:24:16 +01:00
Valentin Lorentz
02a0204f80 Services: Improve doc of plugins.Services.nicks 2023-01-12 22:24:16 +01:00
Valentin Lorentz
501770e544 Fediverse: Add support for missing host-meta document 2022-12-28 15:12:18 +01:00
James Lu
21a2ace7a1 Services: allow adjusting GHOST command
Anope 2.x has renamed this to /ns recover

Closes GH-1510
2022-12-24 08:53:26 +01:00
Valentin Lorentz
1a7c14f4b3 Web: Decode using the charset advertized in response headers
And fall back to the sniffing when not present
2022-11-26 09:06:47 +01:00
Valentin Lorentz
e6c4da0fff Channel: Fix and re-enable disabled tests 2022-11-23 19:25:22 +01:00
Valentin Lorentz
314fad36eb Modernize tests
Thanks to https://pypi.org/project/teyit/
2022-11-20 19:33:23 +01:00
Valentin Lorentz
fd248dc521 Channel: Fix documentation, --exact cannot be combined 2022-11-20 19:07:44 +01:00
Valentin Lorentz
d7d97d3b93 Google: Remove broken commands 2022-11-10 01:48:49 +01:00
Valentin Lorentz
4da1291876 URL: Lazily deserialize records from the end in @last
Before this commit, the plugin first fetched a list of all
(deserialized) records in a list, then reversed the list, and iterated
on the reverse list.
This proved to be slow, with most of the time being spent in
`dbi.DB._newRecord` (which essentially deserializes one list of CSV).

After this commit, the list is reversed first, then the plugin iterates
on its generator, which calls `_newRecord` on records as they are
requested.

This means that when there are many URLs in the database, `@last` does
not need to waste time deserializing most records, when the result is
near the end (and if the result is the first record, then it does
exactly as much work as before).
2022-10-30 20:46:35 +01:00
Valentin Lorentz
f4ac7f88fe RSS: Don't crash on invalid variable name
It's confusing not to have feedback on IRC when a variable name
is typoed.
2022-10-28 22:41:43 +02:00
Valentin Lorentz
2cfc821203 Web: Allow configuring higher peekSize on Youtube 2022-10-28 14:18:52 +02:00
Valentin Lorentz
d0a484c11c Sort remaining nondeterministc sets of values
Closes GH-1516
2022-10-20 18:35:58 +02:00
Valentin Lorentz
8c17505221 User: Sort output of @capabilities
It's more readable than a random order.
2022-10-13 21:46:50 +02:00
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
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
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
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
95f6b1698e Aka, Alias: replace obsolete LastFM example 2022-07-09 14:15:57 -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
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