Err v4.0.0 Release Notes
Release Date: 2016-03-13 // about 8 years ago-
🚀 This is the next major release of errbot with significant changes under the hood.
v4.0 New features
- 🔌 Storage is now implemented as a plugin as well, similar to command plugins and backends. This means you can now select different storage implementations or even write your own. The following storage backends are currently available: + The traditional Python `shelf` storage. + In-memory storage for tests or ephemeral storage. + `SQL storage <https://github.com/errbotio/err-storage-sql>`_ which supports relational databases such as MySQL, Postgres, Redshift etc. + `Firebase storage <https://github.com/errbotio/err-storage-firebase>`_ for the Google Firebase DB. + `Redis storage <https://github.com/errbotio/err-storage-redis>`_ (thanks Sijis Aviles!) which uses the Redis in-memory data structure store. - Unix-style glob support in `BOT_ADMINS` and `ACCESS_CONTROLS` (see the updated `config-template.py` for documentation). - 📚 The ability to apply ACLs to all commands exposed by a plugin (see the updated `config-template.py` for documentation). - The mention_callcack() on IRC (mr. Shu). - A new (externally maintained) `Skype backend <https://github.com/errbotio/errbot-backend-skype>`_. - ⚡️ The ability to disable core plugins (such as `!help`, `!status`, etc) from loading (see `CORE_PLUGINS` in the updated `config-template.py`). - ➕ Added a `--new-plugin` flag to `errbot` which can create an emply plugin skeleton for you. - 🔧 IPv6 configuration support on IRC (Mike Burke) - More flexible access controls on IRC based on nickmasks (in part thanks to Marcus Carlsson). IRC users, see the new `IRC_ACL_PATTERN` in `config-template.py`. - 🔌 A new `callback_mention()` for plugins (not available on all backends). - 🔌 Admins are now notified about plugin startup errors which happen during bot startup - The repos listed by the `!repos` command are now fetched from a public index and can be queried with `!repos query [keyword]`. Additionally, it is now possible to add your own index(es) to this list as well in case you wish to maintain a private index (special thanks to Sijis Aviles for the initial proof-of-concept implementation). 🛠 v4.0 fixed ~~~~~~~~~~ - IRC backend no longer crashes on invalid UTF-8 characters but instead replaces them (mr. Shu). - 🛠 Fixed joining password-protected rooms (Mikko Lehto) - Compatibility to API changes introduced in slackclient-1.0.0 (used by the Slack backend). - Corrected room joining on IRC (Ezequiel Hector Brizuela). - Fixed *"team_join event handler raised an exception"* on Slack. - Fixed `DIVERT_TO_PRIVATE` on HipChat. - Fixed `DIVERT_TO_PRIVATE` on Slack. - Fixed `GROUPCHAT_NICK_PREFIXED` not prefixing the user on regular commands. - Fixed `HIDE_RESTRICTED_ACCESS` from accidentally sending messages when issuing `!help`. - Fixed `DIVERT_TO_PRIVATE` on IRC. - Fixed markdown rendering breaking with `GROUPCHAT_NICK_PREFIXED` enabled. - 🛠 Fixed `AttributeError` with `AUTOINSTALL_DEPS` enabled. - IRC backend now cleanly disconnects from IRC servers instead of just cutting the connection. - 🌲 Text mode now displays the prompt beneath the log output - 🔌 Plugins which fail to install no longer remain behind, obstructing a new installation attempt v4.0 Breaking changes
🔨 The underlying implementation of Identifiers has been drastically refactored to be more clear and correct. This makes it a lot easier to construct Identifiers and send messages to specific people or rooms.
⏪ The file format for
--backup
and--restore
has changed between 3.x and 4.0 On the v3.2 branch, backup can now backup using the new v4 format with!backupv4
to make it possible to use with--restore
on errbot 4.0.
🚚 A number of features which had previously been deprecated have now been removed. These include:
configure_room
andinvite_in_room
inXMPPBackend
(use the equivalent functions on theXMPPRoom
object instead)The
--xmpp
,--hipchat
,--slack
and--irc
command-line options fromerrbot
(set a properBACKEND
inconfig.py
instead).
v 4.0 Miscellaneous changes
- 🔖 Version information is now specified in plugin `.plug` files instead of in the Python class of the plugin. - ⚡️ Updated `!help` output, more similar to Hubot's help output (James O'Beirne and Sijis Aviles). - XHTML-IM output can now be enabled on XMPP again. - 🆕 New `--version` flag on `errbot` (mr. Shu). - 🌲 Made `!log tail` admin only (Nicolas Sebrecht). - Made the version checker asynchronous, improving startup times. - 🔧 Optionally allow bot configuration from groupchat - `Message.type` is now deprecated in favor of `Message.is_direct` and `Message.is_group`. - 🔨 Some bundled dependencies have been refactored out into external dependencies. - 📄 Many improvements have been made to the documention, both in docstrings internally as well as the user guide on the website at http://errbot.io. Further info on identifier changes
- Person, RoomOccupant and Room are now all equal and can be used as-is to send a message to a person, a person in a Room or a Room itself.
The relationship is as follow:
📄 .. image:: https://raw.githubusercontent.com/errbotio/errbot/master/docs/_static/arch/identifiers.png :target: https://github.com/errbotio/errbot/blob/master/errbot/backends/base.py
For example: A Message sent from a room will have a RoomOccupant as frm and a Room as to.
This means that you can now do things like:
self.send(msg.frm, "Message")
self.send(self.query_room("#general"), "Hello everyone")
.. v9.9.9 (leave that there so master doesn't complain)