Skip to content

Releases: bitbot-irc/bitbot

v1.20.0

15 Oct 15:23
Compare
Choose a tag to compare

Added:

  • ban-enforce.py to kick people that match a new ban mask
  • MLOCK-like functionality in channel_op.py
  • Channels can be opted out of inactivity pruning
  • Optional to disable youtubeifying !np output
  • Allow RSS requests to bind to specific source addresses
  • !words in PM
  • yourls.py for yourl url shortners
  • handle RPL_VISIBLEHOST

Changed:

  • ERR_LINKCHANNEL (470) now removes the initial channel from autojoin
  • (IRCv3) +draft/typing was ratified
  • We're no longer supporting a specific broken charybdis install, for line length calculations
  • Much better line truncation
  • Handle HTTP redirects ourselves, to avoid redirects on to forbidden hosts

Fixed:

  • All bot.conf paths should have ~/{DATA} expanded
  • host-meta URL for fediverse accounts should be optional - fallback to default webfinger
  • Message filter m/ criterias should operate on formatting-stripped lines
  • Quote !grabs were wiping the user's category
  • Quote !quotedels were looking at the wrong categories
  • !words was squashing results in to a dict, losing days
  • INVEX and EXCEPT lists were looking at the wrong index for masks

v1.19.0

29 Feb 22:43
Compare
Choose a tag to compare

Added:

  • Commands Specs. expression language for defining format of command args
  • .bitbot/mod-data/ for addition data files for modules
  • Concept of core vs additional modules. Core modules can be reloaded but not unloaded
  • channel_access groups: low/high/admin
  • Proof of concept reminders on a cron schedule (cron_reminders.py)
  • Show how many seconds by which you missed a duck (ducks.py)
  • Show gitlab wiki events (git_webhooks)
  • Opt-in prune inactive channels after 2 weeks (inactive_channels.py)
  • Ability to export decorated functions with @utils.export
  • Configrable chance of randomly triggered markovs (markov.py)
  • Ability to rewrite messages as well as block them (message_filters.py)
  • Ability to search through recent messages (messages.py)
  • rainbow.py because rainbow text is fun
  • Track time/commit of load and events handled per module and show it through !modinfo (modules.py)
  • Support ranges in stepped cron schedules (cron.py)
  • Format ACCOUNT events (format_activity.py)
  • Track channel list modes like ban, quiet, invex, ban exceptions (mode_lists.py)
  • Support WATCH when available for nick_regain.py

Changed:

  • IRCv3's labeled-response was ratified
  • IRCv3's setname was ratified
  • channel_log now logs to .bitbot/mod-data/channel_log/
  • channel_log can now RSA+AES(CBC) encrypt log files
  • Word tracking is now done per day. use migration/v01.19.0-words.py to migrate old data
  • Totally rewrote badges.py command interface
  • Huge refactor and rework of channel_op.py - most commands can take duration and globs now
  • Improve factoids.py (including nested factoids)
  • Split out src/utils/datetime.py
  • Show github webhook issue/PR titles in more places (git_webhooks)
  • Show google result descriptions instead of title when available (google.py)
  • Minimal formatted lines should be relayed (relay.py)
  • Totally rewrote todo.py command interface
  • IRCBuffer now holds 1024 lines of history (was 64; 1024 might be overkill...)
  • Reloaded modules will always be rolled back to previous loaded module if reload fails
  • Generate usage from command spec stings when present (help.py)
  • Much cleaner support for handling server NOTICEs (line_handler)
  • to_pretty_time can now do relative time (e.g. including years and months)
  • Souped HTTP responses changed from lxml parsing to html5lib by default
  • Bool config options now accept 0 and 1

Fixed:

  • Readded lost support for SASL USERPASS pseudo algo (ircv3_sasl)
  • Minor typo in healthchecks.py
  • Minor typo in votes.py
  • Crash caused by division by zero in title.py difference checking
  • internal.identified command was being fired for every message with an @account tag (permissions)

v1.18.2

20 Jan 16:33
Compare
Choose a tag to compare

Changed:

  • Colourise server address in server-notice formatting (format_activity.py)

Fixed:

  • user variable doesn't exist in INVITE formatting code (format_activity.py)
  • utils.datetime.find()'s not_pattern arg should be optional
  • utils.datetime.iso8601_parse no longer has a microseconds arg (youtube.py)

v1.18.1

20 Jan 14:01
Compare
Choose a tag to compare

Fixed:

  • Formatting variable typo for handling TOPIC (format_activity.py)

v1.18.0

20 Jan 13:52
Compare
Choose a tag to compare

Added:

  • New dependency in requirements.txt: dateutils
  • Show transferred github issues by default (git_webhooks)
  • hostmask-tracking.py - keep a history of what hostmasks each nickname has used
  • Also watch NICK and QUIT lines to see when our nickname might be freee (nick_regain.py)
  • IRCv3 draft/delete implementation (ircv3_editmsg.py)
  • Show account and realname in JOIN formattin when available (format_activity.py)

Changed:

  • Removed --data-dir, --database and --log-dir, these options have been moved to bot.conf
  • Reworded karma change output
  • !grab not tries to attach quote to account, not just nickname (quotes.py)
  • !wordiest not defaults to the current channel (words.py)
  • !part now works for +o users or users with channel_access part (admin.py)

Fixed:

  • cron would fail to initialise at 59 minutes past the hour (core_modules/cron.py)
  • Don't send typing notications by default for pattern-based commands
  • Regex error when replacement starts with a number (sed.py)
  • Reimplement lost IRCv3 account-tag functionality (permissions)
  • Show username when fediverse displayname is "" (fediverse)
  • ++asd++ used to give karma to both asd++ and ++asd (karma.py)

v1.17.1

13 Dec 17:25
Compare
Choose a tag to compare

Fixed:

  • Crash caused by switching coins.py to using cron scheduling without removing timer-related code
  • Typo in function call name in cron.py

v1.17.0

13 Dec 15:14
Compare
Choose a tag to compare

Added:

  • Ability to .save() bot.conf - we now use only this for module whitelist/blacklist
  • A cron system (src/core_modules/cron.py)
  • healthcheck.py - ping a URL every 10 minutes (for uptime-tracking services)
  • Support ++nickname style karma (karma.py)
  • Bot-wide aliases (!balias in aliases.py)
  • Support per-user (PM) command-method setting (commands)
  • dnsbl module to loop up given IPv4 and IPv6 addresses in blacklists

Changed:

  • "Core" modules (modules needed for base operation of bitbot) moved to src/core_modules and made blacklist-immune
  • Better parsing error for !config u birthday (birthday.py)
  • Show display name, not username, when available (fediverse.py)
  • By default, show locked/unlocked github issue/PR events (git_webhooks)
  • Switch back to full wolframalpha API but use it better than we used to (wolframalpha.py)
  • Hostmasks are now precompiled to find users that match them (permissions)

Removed:

  • -m/-M args to bitbotd - didn't work any more due to databse locking
  • database_backup.py - this was always a weird hack. Added a note about backups in README.md

v1.16.1

02 Dec 08:05
Compare
Choose a tag to compare

Changed:

  • Response to giving karma now makes sense

Fixed:

  • Typo preventing users giving karma

v1.16.0

01 Dec 09:50
Compare
Choose a tag to compare

Added:

  • Show target in formatted private NOTICE events (format_activity.py)
  • Show first 100 chars of GitHub issue comments (git_webhooks)
  • Show who opened a GitHub pull request when approperiate (git_webhooks)
  • Timed user ignores (ignore.py)
  • Support "$$" as "$" in command alias argument replacement (aliases.py)
  • Show explicitly when only a title of an issue/PR was changed (git_webhooks)
  • Show URLs in !wikipedia output (wikipedia.py)
  • !raw and !perform now support "human" formats (e.g. /msg user message)
  • Listing servers with !servers (stats.py)

Changed:

  • Complete refactor of permissions module - now with hostmask support
  • Big refactor of commands module
  • Command aliases moved to their own module. Run migration/v01.16.00-aliases.py to migrate old aliases.
  • Karma is now stored per-user and you can give yourself karma. Run migration/v01.16.00-karma to migrate old karma.
  • Unique User-Agent (utils.http.USERAGENT)
  • Nickname hashed colourisation now matches weechat's default (utils.irc)
  • ./bitbotd -m permissions -M master-password moved to ./bitbotctl command master-password
  • utils.http.Response.data is now always bytes - use .decode()/.json()/.soup()
  • to.py -> tell.py; move !to to !tell but add !to as an alias
  • Sed edits are now cumulative (sed.py)

v1.15.0

18 Nov 12:21
Compare
Choose a tag to compare

Added:

  • Optionally colourise nicknames when printed to log (format_activity.py and print_activity.py)
  • Show git branch in !version output (info.py)
  • Stop/start REST API HTTPd when trying to reload all modules (ModuleManager and rest_api.py)
  • Individual channels can opt out of printing to INFO log (!config c print off, print_activity.py)
  • Opt-in shlex argument parsing for command callbacks (commands)
  • Show when BitBot first saw you speak in !words output (words.py)

Changed:

  • Logging moved to ~/.bitbot/logs/ by default
  • Better eval API for eval_python.py (now py3 only)
  • Better single-line normalisation for ActivityPub Activities (fediverse)
  • Better error messages shown to user when a fediverse Actor can't be found (fediverse)
  • Git hashes are now truncated to 7 chars, not 8 (git_webhooks)
  • Split utils/__init__.py out in to more separate files
  • Show channel mode status symbols when formatting NOTICEs (format_activity.py)
  • Conbine YouTube API requests in to 1 request, rather than 3 (youtube.py)

Fixed:

  • Multiple channel keys should be expressed as comma-separated (channel_keys.py)
  • !duckstats <nickname> was meant to show stats for another user (ducks.py)
  • Fix almost completely broken 908 (RPL_SASLMECHS) handling
  • Background colour formatting was being lost (utils.irc)

Removed:

  • tfl.py moved to bitbot-modules