github PhantomBot/PhantomBot v3.3.0
PhantomBot v3.3.0

latest releases: v3.14.0.6, v3.14.0.5, v3.14.0.4...
3 years ago

📢 PhantomBot v3.3.0 is now available as a stable build

✅ Added:
➡️ Added case-matching option to systems/keywordSystem.js (robsdedude #2246)
➡️ Added the ability to search for a random quote containing a keyword (robsdedude #2287)
➡️ Added GamesListUpdater, which updates the games auto-complete on the Dashboard every week (gmt2001)
➡️ Added proper handling for Twitch requesting that PubSub reconnects (gmt2001)
➡️ Added ability to call tag parser with local transformers that are only used for the one call and to disable the global transformers for the one call (gmt2001)
➡️ Added ability to add/replace global tag transformers from other scripts (gmt2001)
➡️ Added a channel points handler script (MzLiv #2326)
➡️ Added a warning when attempting to access the YT Player via an IP URL instead of a hostname, since YouTube Embed API will throw a fit (gmt2001)

🌀 Changed:
➡️ Updated all embedded links (gmt2001)
➡️ Changed Discord mod log embeds to link to the user's Twitch viewer card instead of the user's channel page (emilweth #2315)
➡️ Changed (pointtouser) to always output DisplayName -> even when no arguments are present (gmt2001)
➡️ Restored the ability to connect to the Twitch PubSub Moderation Feed using an APIOAuth from the Bot's account (gmt2001)
➡️ Changed PubSub to permanently shutdown until the bot restarts if Twitch rejects subscriptions to both chat_moderator_actions and channel-points-channel-v1 due to inappropriate OAuth tokens (gmt2001)
➡️ Changed Twitch PubSub to use an exponential backoff approach if the connection closes unexpectedly (gmt2001)
➡️ Replaced tags handling for commands/customCommands.js with a recursive, modular parser system (robsdedude #2253)
➡️ Changed the charset for MySQL tables to utf8mb4, only applies to newly created tables (emilweth #2332)

🛠️ Fixed:
➡️ Fixed issues with LangFileUpdater paths causing Lang files to fail to load or save from the Localization page on the panel (gmt2001)
➡️ Fixed checkLink@core/chatModerator.js TypeError: Cannot find function matchAll (gmt2001)
➡️ Fixed the Dashboard Game autocomplete and Localization Editor on the remote panel (gmt2001)
➡️ Fixed the built-in panel not loading the Broadcaster's logo (gmt2001)
➡️ Fixed java.lang.ArrayIndexOutOfBoundsException when attempting to parse a multi-message string from TMI, as well as the potential to ignore a chat message for the same reason, depending on the ordering of specific messages (gmt2001, reported by robsdedude #2321)
➡️ Fixed (playsong) not allowing the number 0 in the audio hook name (gmt2001, reported by taradinoc #2331)
➡️ Fixed DiscordUtil.getUserAsync returning empty Mono when lookup parameter was an @mention (gmt2001, reported by der_dude)
➡️ Fixed DiscordUtil.getRoleAsync returning empty Mono when lookup parameter was an @mention (gmt2001)
➡️ Fixed discord/core/roleManager.js not handling java.util.NoSuchElementException: Source was empty when calling DiscordUtil.getRoleAsync and DiscordUtil.getUserAsync (gmt2001)
➡️ Fixed java.lang.UnsupportedOperationException when calling DiscordUtil.editUserRoles (gmt2001)
➡️ Fixed TypeError: Cannot read property "script" from undefined when running createcmdlist and the database has a reference to a command that no longer exists (gmt2001, reported by tooti31 #2337)
➡️ Fixed YT Player main connection possibly getting stuck open on the bot side, causing it to be unusable until a restart (gmt2001, reported by phr3d3 gmt2001#136)

🛑 Removed:
➡️ Removed toggles, output, and other references to the defunct cbenni.com tool (gmt2001)

🌐 Download It:
➡️ Downloads attached to the bottom of this release notice

❗ Remember to install to a separate folder, then copy over the config dir, as well as any custom scripts or files in addons
➡️ PhantomBot official builds are now available on Docker at gmt2001/phantombot-stable and gmt2001/phantombot-nightly. See the readme text on the appropriate pages for Docker Compose files

🗒️ Notes:
➡️ We now have guides starting to come up on PhantomBot. You can contribute by submitting a Pull Request adding or editing .md files in the /docs/guides/content folder of the repo. See the guides for info about formatting.
➡️ The syntax for searching quotes by keyword is !quote [keyword]

NOTE: You must encluse the keyword in double quotes (") if there is a space in the keyword
➡️ The syntax for keywordSystem has changed, the new syntax is !keyword add (--regex) (--case-sensitive) [keyword] [response]

Existing keywords will be migrated and set to case-sensitive on first-run of the update. Newly created keywords after the update will be case-insensitive
➡️ If you have both a regular keyword and a regex keyword with the same trigger, the update task will fail. Please ensure each keyword only exists once before updating
➡️ After installing this update, or if installing PhantomBot for the first time, GamesListUpdater will refresh the list from scratch, which may cause high IOs for a brief time. This may also occur if the bot is offline, fails to download the games list for more than 10 weeks, or if the associated keys in the database get wiped
➡️ Due to the recursive nature of the new command tags parser, any command tag args that currently contain parenthesis () that should not be treated as an argument or a backslash \ need to be re-written with a backslash \ escape. For more information on escaping, as well as the command tag parser in general (ie. for adding new tags), see #2253
➡️ Some tags do not behave the same with the new command tag parser. For information on how to get the previous behavior, see #2253
➡️ The new tags transformer can be accessed by calling $.tags(event, message, atEnabled, localTransformers = {}, disableGlobalTransformers = false) where the parameters are

  • event: The command event object
  • message: The message with tags to be transformed
  • atEnabled: (Optional) If specified as true and no tags are in the message, a mod using this command with an argument will respond with (arg1) -> message. Good for @mentioning a viewer with a !blind command, but still being able to use !blind without mentioning anyone
    • Mod: !blind @annoyinguser
    • Bot: @annoyinguser -> This is a blind playthrough!
    • Mod: !blind
    • Bot: This is a blind playthrough!
  • localTransformers: (Optional) If specified, must be a javascript object of transformers to be used only for this call, defined as { 'tagname': function(tagArgs, event), ... }
    • The function must return a javascript object defined as {result: text, cache: bool, raw: bool, cancel: bool}
    • result: The text output of the tag
    • cache: If true, the value of result is cached and used to quick replace any other iterations of this exact same tag with the exact same arguments. The cache is only good for the current call to $.tags
    • raw: If true, the value of result is not escaped during transformation, allowing this tag to return more tags, which will be transformed
    • cancel: If true, the transform of this message is cancelled and $.tags returns null
  • disableGlobalTransformers: (Optional) If specified as true, only transformers specified in localTransformers and the mod argument feature, if atEnabled is true, will be used to transform the message

NOTE: If certain tags fail to process, $.tags will return null and print errors to console and chat

➡️ New tag transformers can be globally added or replaced by calling $.addTagTransformer(tagName, function(tagArgs, event))

See the localTransformers point above for information on the required return of the transformer function

Don't miss a new PhantomBot release

NewReleases is sending notifications on new releases.