Commit Graph

5942 Commits

Author SHA1 Message Date
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
Pratyush Desai 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
SamStrongTalks d04e8161d5
Add ability to exclude channel from self censoring (#1508) 2022-06-17 16:44:12 +02:00
Valentin Lorentz 1d4a43ed1b AutoMode: Fix crash on servers without ISUPPORT PREFIX 2022-04-16 12:05:43 +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
Valentin Lorentz 4f3d6fc39f Geograpy: Fix formatting of negative non-integral offsets (and improve others) 2022-04-04 22:06:19 +02:00
Valentin Lorentz 66d986e820 Web: Add overrides to support Youtube and Reddit; remove Twitter from tests. 2022-03-03 22:16:53 +01:00
Valentin Lorentz 76f7eced5d Fediverse: Update tests broken by previous commit 2022-02-19 21:18:24 +01:00
Valentin Lorentz 4e60d8812d Misc: Make @last handle --regexp in a single process for all messages
Spawning one process for each message was a little silly, considering
there can be thousands of messages.

Plus, some instances do reach the timeout after running for a few weeks,
so we really need to fix this.

Ideally, `regexp_wrapper` should also be removed from other plugins
(Todo, Notes, ...) as they have the same issues, but this will do for
now.
2022-02-16 21:27:28 +01:00
Valentin Lorentz 4b892c2b1d all: Update .pot and .po files 2022-02-06 00:14:47 +01:00
Valentin Lorentz 5b7b2bd85b Fix chmods 2022-02-05 23:37:39 +01:00
James Lu 0ed743bb8e Format: allow empty substrings in 'replace'
This allows for easy substring removal without having to use regex.
2022-01-28 17:50:31 -08:00
Valentin Lorentz da549e4fde Geography: Print current UTC offset next to timezones. 2022-01-16 20:45:41 +01:00
Valentin Lorentz 880efbbd27 Merge branch 'geography' into testing 2022-01-16 19:44:22 +01:00
Valentin Lorentz 28b28fe3cf Config: Fix crash happening since the previous commit 2022-01-11 20:38:14 +01:00
Valentin Lorentz dcca9f9637 RSS: Make feed announces actually network-specific
.getSpecific() always returned the  channel-specific but non-network-specific var,
unless the channel-specific and network-specific one was manually set.
2022-01-11 20:13:39 +01:00
Valentin Lorentz 74f86654b1 Remove fallbacks for old Python versions. 2022-01-01 18:11:36 +01:00
Valentin Lorentz 7fade191c3 Google: Update suggestions in the deprecation warning
1. DDG is now built-in
2. GoogleCSE is actually limited to site-specific search
2021-12-23 20:09:49 +01:00
Valentin Lorentz caa5aa3d84 Config: Replace inconsistent terminology 2021-12-19 21:11:26 +01:00