Releases: sopel-irc/sopel
Release list
7.0.2
Changes between 7.0.1 and 7.0.2
Plugin changes
- Fix version comparison in
find_updatesplugin [#1832] - Suppress link when
xkcdplugin is triggered by a URL [#1848] - Fix
redditgrammar when post/comment only has 1 point [#1849] - Handle missing data when
safetyplugin uses VirusTotal [#1851] - Update
searchplugin for changed Bing SERPs [#1852]- Also fixes
xkcdplugin's find-comic-by-keywords functionality
- Also fixes
Core changes
- Fixed that per-channel configuration didn't work as documented for some
plugin types [#1840] - Show how to use channel key (password) in configuration examples [#1844]
- Fixed URL callbacks bypassing user/channel restrictions [#1845]
- Capped
urllib3(transitive dependency fromrequests) version on Python
3.3 to avoid a recent release breaking things - Meta: Fixed incorrect links in changelog entry for 7.0.1
API changes
- Handle 0 seconds properly in
tools.time.seconds_to_human()[#1843]
7.0.1
Changes between 7.0.0 and 7.0.1
Sopel 7.0.1 contains small fixes and tweaks for core code, core plugins, and
documentation. As this is a maintenance release, there are no new API features
or deprecations to report—but stay tuned for a few new things in version 7.1.0.
Plugin changes
- The
redditplugin now displays when a redditor is an admin [#1764] - When triggered by a native media link,
redditplugin output will include a
link to the submission page (comments view) [#1814] - Fixed
redditplugin not matching links with encoded characters [#1827] clockplugin's.setchanneltzcommand now emits an error message if an
unprivileged user attempts to use it [#1828]- Fixed the
unitsplugin's handling of 16 ounces / 1 pound [#1829] - Fixed loading
reminddatabase with reminder(s) containing certain IRC
formatting characters [#1831]
Core changes
7.0.0
Changes between 6.6.9 and 7.0.0
Sopel 7.0 contains numerous fixes, tweaks, new features, and internal
improvements. While we maintain no official statistics on such things, it's
probably the biggest release the project has ever seen.
The full, detailed list of changes is below, but you can just read the
[migration guide][sopel-7-migration] if all you care about is the really
important stuff. All breaking changes (including those planned for the next
release) are explained there.
Plugin changes
- The
spellcheckplugin has been removed to simplify dependencies [[#1675][]] - Similarly, the
ipythonplugin is now an external package, eliminating from
Sopel itself a dependency which most users will never need [[#1684][]]- Find the new
sopel-ipythonpackage [on PyPI][ipython-pypi]
- Find the new
- The
.choose/.choicecommand has been moved fromdiceinto a standalone
plugin, aptly namedchoose[[#1679][]] - Moved
.pyinto its own plugin, namedpy[[#1710][], [#1711][], [#1712][]]- In case of issues with our "official" instance, there's now a setting to
configure the address of your own [Oblique][oblique] service
- In case of issues with our "official" instance, there's now a setting to
- The
currencyplugin changed data sources to support more currencies, and
can optionally use Fixer.io for even more [[#1430][], [#1627][], [#1629][]]- Fixer.io requires a free API key, which gives plenty of calls per month
(the plugin caches exchange rates for 24 hours)
- Fixer.io requires a free API key, which gives plenty of calls per month
- Choose any of five pastebin services for
helpoutput [[#1451][], [#1651][]]- This is intended mostly for resilience (so one pastebin service going
down, as ptpb did during the 6.6.x life-cycle, won't force a new Sopel
release), but it's also just good to have choices
- This is intended mostly for resilience (so one pastebin service going
- Optionally hide IRC server name/address in
helpcommand listing [[#1459][]] - New
helpplugin setting,reply_method[[#1700][]] wiktionarynow supports many more parts of speech [[#1443][]]- Definitions can be retrieved for things like proper nouns, prepositional
phrases, and punctuation marks—things that were unsupported in Sopel 6.x - This means that the
wiktionaryplugin is now somewhat case-sensitive, to
account for common and proper nouns that differ only in capitalization
- Definitions can be retrieved for things like proper nouns, prepositional
urlwill now ignore "private" addresses by default [[#1439][], [#1624][]]- New config settings for the
urlplugin allow overriding the checks, in
cases where loading previews of e.g. LAN servers is safe - The default is off, so users don't unwittingly open themselves to attackers
fishing for running HTTP services on the local machine or network
- New config settings for the
urlnow correctly ignores invalid URLs (e.g.http://*\.com) [[#1788][]]- Various improvements to the
clockfunctions [[#1592][]]- Improved guessing in
.t/.timecommand, which no longer falls back all
the way to the bot's default timezone if given an unrecognized argument - New
.tzcommand, to explicitly get time for a timezone name (in case of
conflict between a known nick and a timezone name)
- Improved guessing in
- The
tell&remindplugins' ".db" files have changed names [[#1699][]]- Both will attempt automatic migration of existing files, if they exist,
and output debugging information if the migration fails
- Both will attempt automatic migration of existing files, if they exist,
- The
.atcommand (inremind) understands dates now [[#1590][], [#1736][]]- Finally, it's possible to set a reminder more than 24 hours ahead without
first converting the future date/time to a duration for use with.in!
- Finally, it's possible to set a reminder more than 24 hours ahead without
- A new
tellplugin setting allows delivering messages privately [[#1694][]] - The
redditplugin now also handles shortredd.itlinks, direct links to
comments, inlineu/andr/references, & reddit-hosted image/video links
[[#1503][], [#1720][], [#1722][], [#1734][], [#1760][], [#1773][]] - Spoilers & NSFW are now separate concepts in the
redditplugin [[#1620][]]- Reddit implemented spoilers as a distinct post flag some time ago. Sopel's
plugin supports independently setting channels as "SFW" or "spoiler-free".
- Reddit implemented spoilers as a distinct post flag some time ago. Sopel's
- Rolling
.dicenow officially supports trailing# comments[[#1577][]] - Python version is now included in
.versioncommand output [[#1462][]] - The
.versioncommand's output format is improved [[#1633][]] - Using the
.reloadcommand shows the specific file reloaded [[#1762][]] - The
.seencommand's output now uses relative time [[#1661][]] - Readability of
.choosecommand output is significantly improved [[#1425][]] - Added
.invitecommand [[#1497][]]- Both Sopel and the inviting user must have privileges in the target channel
- A
.restartcommand is added [[#1333][]]- Usable by admins only, just like
.quit
- Usable by admins only, just like
- The
.msgcommand is now known as.say[[#1606][]].msgwill continue to work for now, likely until being removed in Sopel 8
- The
adminplugin auto-saves channels when using.join/.part, and added
.tmpjoin/.tmppartcommands to bypass this behavior [[#1492][]] - Added command to
.unsetconfig values in theadminplugin [[#1556][]] - Restored commands in
adminchannelplugin for managing op/voice [[#1498][]]- These were removed some time ago, seemingly without reason, by the
project's previous maintainers - Since there was some desire from users to have them back, we restored them
- These were removed some time ago, seemingly without reason, by the
- Fixed/tweaked hostmask handling in
adminchannelban functions [[#1791][]] findalso collects Sopel's own messages now, so users can "correct" the bot
if they wish to be extra cheeky [[#1470][]]- Fixed that the
urlplugin had to be enabled or some link-handling functions
wouldn't work [[#1510][]] - Tweaked
.ddgcommand output so it's less likely to mangle URLs [[#1713][]] remindcommands now "reply" with error messages [[#1715][]]- Fixed
etymologyplugin error with empty argument [[#1677][]] - Fixed an uncaught exception in
instagramplugin [[#1702][]] - Handle JSON fetch/parse errors in
find_updatesplugin [[#1779][]] - Removed nonsensical uses of the
core.verify_sslsetting [[#1706][]] - Unused
clockplugin settings have been removed [[#1696][]] - Updated MaxMind database handling in
ipplugin [[#1797][]] - Reworked
safetyplugin's cache management [[#1753][], [#1802][]] - General code cleanup and tweaks all around [[#1402][], [#1486][], [#1505][],
[#1569][], [#1573][], [#1578][], [#1579][], [#1581][], [#1592][], [#1606][],
[#1607][], [#1609][], [#1678][], [#1681][], [#1696][], [#1717][], [#1721][],
[#1725][], [#1735][], [#1741][], [#1754][]]
Core changes
- Brought back support for non-SQLite databases by switching to SQLAlchemy
[[#1446][], [#1652][], [#1729][], [#1755][], [#1774][], [#1777][], [#1783][]]- For details on using non-SQLite databases, see the [README][readme-db] or
[configuration instructions][db-config-docs] - You will probably need to install additional dependencies if you wish to
use something other than SQLite - Migrating an existing database from SQLite to your chosen option is
probably easy, but we do not offer instructions for doing so - Be aware that plugins written for older versions of Sopel might not work
properly with non-SQLite databases
- For details on using non-SQLite databases, see the [README][readme-db] or
- The
db_filenameconfig setting (for SQLite) is now interpreted as relative
to the config'shomedirsetting [[#1574][]]homediritself has a default value that will be used if not set
- Added separate server & nickname authentication options [[#1513][]]
- See [authentication configuration docs][auth-config-docs]
- Added
commands_on_connectsetting to send a list of commands automatically
when Sopel's IRC connection is successfully established [[#1528][]] - Log files have become much more configurable [[#1678][], [#1714][]]
- Logs are named based on the config name
- Many, many new settings added to customize logging
- The default log format includes timestamp, source package, & level (which
will make logs much more useful when reporting bugs)
- Logs now have information about which plugin file was reloaded [[#1762][]]
- This is helpful for owners of Sopel instances with multiple versions of a
plugin available for testing or development purposes
- This is helpful for owners of Sopel instances with multiple versions of a
- Sopel's own rate-limiting & flood protection parameters are now configurable,
and can even be turned off entirely if Sopel is behind a bouncer or other IRC
proxy that handles flood protection itself [[#1518][], [#1638][]] - Added more control over JOIN throttling [[#1751][]]
- Includes a new
throttle_waitsetting instead of a hard-coded time value
- Includes a new
- Log timestamp and log line formats are now configurable [[#1512][]]
- See details in [the logging configuration docs][logging-config-docs]
- Log filenames now include the config name, to help keep track of logs from
multiple Sopel instances [[#1547][]] - Home directory is no longer assumed to be
~/.sopelon first run [[#1404][]] - Restarting Sopel via CLI is added [[#1333][]]
- Sopel's CLI is restructured [[#1493][], [#1509][], [#1718][]]
- New subcommands (
start,stop,restart, andconfigure) replace many
of the old--options, cleaning up the syntax - The legacy
--options will continue to work for the life of Sopel 7.x, and
will be removed in Sopel 8
- New subcommands (
- New
--config-dircommon option [[#1598][]] - Added a new
sopel-configcommand for working with config files [[#1507][]]- Currently supports
list(existing files),init(new config file), and
get(config value) actions - The old
--listargument tosopelis considered deprecate...
- Currently supports
7.0.0 RC2
This is a pre-release tag, intended to help verify the release process itself.
Assuming the build succeeds, it will also publish to PyPI, making available a near-final copy of Sopel 7.0 for use by developers in testing updates to their plugins.
RC2 includes tweaks to the PyPI description (README) and database API backward compatibility.
7.0.0 RC1
This is a pre-release tag, intended to help verify the release process itself.
Assuming the build succeeds, it will also publish to PyPI, making available a near-final copy of Sopel 7.0 for use by developers in testing updates to their plugins.
6.6.9
Changes between 6.6.8 and 6.6.9
Module changes
- Also block changing
core.owner_accountsetting inadminplugin [#1599] - Fixed
instagramparsing after changes to the website [#1608] tldplugin decodes HTML entities before output [#1612]- Handle an error condition when querying
ipmodule using nickname [#1631]
Core changes
- Fixed populating
user&hostin the bot's user database whenNAMESreply
arrives first [#1630]
6.6.8
Changes between 6.6.7 and 6.6.8
Module changes
adminmodule no longer allows settingcore.ownervalue [#1587]- Allowing any bot admin to change the owner opened Sopel to a
privilege-escalation attack - Even with this patch, you still should add only users you really trust to
theadminslist, for obvious reasons
- Allowing any bot admin to change the owner opened Sopel to a
API changes
- Fixed some content & formatting errors in documentation [#1589]
6.6.7
Changes between 6.6.6 and 6.6.7
Fixing this bug, which was discovered after the previous release, serves to
exorcise the curse brought upon us by version 6.6.6.
Core changes
- Fixed incorrect
MODEmessage parsing that could lead to Sopel thinking
some users had higher channel privileges than they did [#1575]
6.6.6
Changes between 6.6.5 and 6.6.6
This slightly cursed version of Sopel is brought to you by the following happy
coincidences. When this release cycle began:
- 6.6.6 was the next patch version number
- Tax Day (in the U.S.) was just a few weeks off — the perfect release date
As it happens, the v6.6.6 GitHub milestone ended up with 13 closed
issues/PRs in total. We definitely didn't try to plan any of this. Promise.
Module changes
- Potential denial-of-service via repeated long output in the
.pyand.calc
commands was mitigated [#1552] adminmodule's.setcommand no longer throws an exception if missing
arguments [#1520]- Fixed
adminmodule's.modecommand sending invalid raw line [#1549] - Tweaked output-formatting code in the
meetbot&redditmodules [#1516]- The most visible effect of this is that moderators' names will now appear
green inreddit's output, like on the site, instead of the old brown/purple
- The most visible effect of this is that moderators' names will now appear
- Updated example/test output for
.ipcommand [#1523]
Core changes
- Flood protection delay is now capped at 2 seconds [#1552]
- The flood delay penalty is calculated using the message length before
truncation. Very long command output could thus "hang" the bot for many
minutes at a time, meaning some modules could be used to DoS the bot. - Sopel 7 will add configuration for flood protection and perhaps reorganize
the logic to reduce silly bugs like this. (See: #1518, #1559)
- The flood delay penalty is calculated using the message length before
- Fixed a few cases where keyboard interrupt (Control + C) wasn't handled
correctly [#1534, #1558] - Fixed invalid
MODEcommand sent during connection phase [#1544]