Google Hangouts bot
This release bumps the version of hangups in order to fix a breaking change to Hangouts, as well as pinning a maximum version of slackclient so we remain on a compatible version.
⚠️ Python version requirement change: In order to keep in sync with the latest changes to hangups (the underlying Hangouts library), the new minimum supported version is Python 3.5.3 (up from 3.4.4).
@
command preprocessor made case-insensitive_finalise()
as a coroutine for async unloading tasksThis is the official release of version 3 of hangoutsbot. v3 has been available for a while under the v3.0 beta branch, now battle-tested and surpassing v2 in stability.
If you've been running the v3.0 branch, you need only switch back to master and pull; no major changes have occured. If you're on v2.x, it should be a relatively painless in-place upgrade: take a backup of your config and memory files, git pull
to bring in the new version, restart your bot, and any config migrations should be applied at startup. Note that this means you can't roll back to 2.x after a startup on 3.0, unless you restore a backup of your config and memory files.
Supporting the latest hangups version
hangoutsbot depends on hangups, a Python library that handles the underlying connection to Hangouts. In v2, we used an old forked version with legacy data structures; in v3, we're now up-to-date with the latest version of hangups.
Chatbridge framework and sync improvements
The chatbridge is an internal protocol that standardises bridges to external networks, like Slack or Telegram. With it brings common features like message formatting in Hangouts, linked identities, and bridged PM support for commands like /bot help
.
Rewritten version of SlackRTM
A new plugin _chatbridge.chatbridge_slackrtm
has been added, which supersedes slackrtm
. It's written from the ground up, is a lot slimmer than its predecessor, and supports some of Slack's more recent changes like file threads.
Switching is just a case of replacing slackrtm
with _chatbridge.chatbridge_slackrtm
in your plugins list. Note that the config format has changed, and will be migrated at first startup. If you need to switch back, a copy of the old config block will be present under slackrtm [legacy backup]
-- you'll need to replace the slackrtm
block with its contents.
Controlling hangout history & link joins
Two new plugins, linksharing
and offtherecord
, allow you to set and lock the join-by-link and message history settings in individual hangouts. Use /bot linksharing
and /bot offtherecord
respectively to cycle the current setting.
special note: this release was incorrectly tagged as v2.8.0
(with the v
) - an identical commit tagged 2.8.0
has been added - the release notes here are applicable to both tags.
This is the last version that works with our local forked version of hangups - the next major release (3.0) will only be compatible with the latest official hangups library.
Further info and detailed change logs can be found in #776.
Upgrade guidance
plugins
key in config.json, please add the image
plugin
image_linker_reddit
in the plugins dir, containing another empty __pycache
subfolder - you may safely remove thisKnown bugs/issues
telesync
:
slackrtm
usage of memory.json is semi-broken (long-term issue, re: #797)telesync
, slackrtm
, syncrooms
, slack
and telegram
e.g. messages duplication, failed to sync, infinite messaging loops, messages not relayed, etc/bot
help
auto_alias_one_to_one
turns off botalias requirement in direct bot chats (default: false)pluginmanager
commands now part of plugin control commands; outputs actions taken when run<convid|partial conv title>
matching a single group conversation/bot optout <convid|partial conv title>
again/bot optout
is unchanged until user successfully adds first per-conversation opt-out; to quick-convert per-conversation opt-outs back to a global opt-out, use /bot optout all
tagging-merge
- instead of exclusively using the highest-specificity conv/user tag, merge the entire chain from most-specific (e.g <convid>|<chatid>
) to least specific (global conv/user wildcard *
)bot.call_shared()
: image_validate_link
, image_upload_single
, image_upload_raw
, image_validate_and_upload_single
(docs
/bot tagset conv <conv_id> autoreplies-merge
/bot tagset conv * autoreplies-merge
+ /bot tagset conv * tagging-merge
(optional, merges all tag from per-conversation to wildcards to global)"autoreplies.merge": true
to switch on global merging{tldr}
into a response to inject the target conversation's TLDR text into autoreply response/bot tagset conv <convid> restrictedadd-whitelist
- this tag overrides global strict_botkeeper_check
/bot testsubscribe <keyword>
to trigger your own subscriptions_unittest_*.py
moved to _unittest/unittest_*.py
_example_*.py
moved to _example/example_*.py
image_*.py
moved to image/image_*.py
It's here! #727 brings in patches, and new features!
Major updates:
mentions.py
: Mentions directly link to the chatpluginmanager.py
: addplugin and removeplugin actually loads/unloads the plugin now, getplugins sorts the plugins alphabeticallytelesync
: Major updates, including ability to sync replies and G+ profiles. Refer to wikitldr.py
: New command tldrecho
to configure where the bot sends the tldr. Refer to wikirestrictedadd.py
Works for bots joining hangouts, can enable/disable strict_botkeeper_check
per hangout or globallyMinor updates:
mentions.py
now indicates if mention is coming from an @all
trigger #734config.json
api.py
now supports CORS #641cleverbot.py
fix for server requiring loginforecast.py
updated to reflect using darksky.net instead of forecast.ioimage_screenshot.py
slackrtm.py
join message changedspawn.py
executes in lowercasesubscribe.py
regex updatedxkcd.py
plugin cleanupCore Bot
Plugins
[WARNING]
Run pip3 install -r requirements.txt --upgrade
to get translations working!
General:
New Plugins:
Others: