Skip to content

Built in Behaviors

Protected edited this page Nov 18, 2023 · 7 revisions

Rowboat has the following built-in Behavior types. You can have Rowboat load a Behavior by declaring it in config.yaml.

You can also create your own!

For full details on parameters use the command line argument:

node . --behaviorTypes [NAME]

Core Behaviors

Users (and permission providers)

An internal user account system for Rowboat capable of associating each account with a username, Environment-specific identification masks, permissions and metadata. It can be used explicitly or implicitly when cross-platform user account support is required.

A system for registering callbacks for text chat-based commands. It has a built-in help system and alias support, and integrates with Users for permission-locking commands and providing account information to callbacks.

Miscellaneous Behaviors

Activity

Cross-environment Behavior that registers users' latest activity and provides !seen and !last commands.

Alerts

Allows users to create rules for receiving alerts via private message when Rowboat sends messages matching custom regular expression filters.

BridgeDiscordIRC

Bridges a multi-channel Discord server with a single IRC channel. This is a smart bridge that translates style codes, mentions, etc.

BridgeSimple

A straightforward bridge that can be used to connect any two Environments.

Implements a game that allows users to input dictionary entries and then randomly queries users on those entires against a timer. For assistance with language learning.

DynamicCommands

A Commands extension that lets users dynamically create custom chat commands for other others. Custom commands support randomized custom replies, argument substitution and statistics tracking (useful for polling).

Behavior for logging events that functions separately from the internal Logger. By default provides logging for Joins, Parts and Messages, but other Behaviors can use it for logging additional event types. Commands can use it for logging command usage as well.

Memo

Cross-environment system for storing messages that will be delivered to another user on activity, using the !memo command. Supports Users accounts.

RSS

Tracks RSS or Atom feeds and sends new entries as messages to an Environment. Supports Embeds when used with Discord Environments.

Warning: This Behavior can be resource intensive and slow down the node process.

A Users add-on that lets users manually register their own accounts or link identities across multiple Environments. Adds the commands !register, !link and !whoami.

Time

Lets users register a political timezone for themselves (from the tz database), see other users' local time and compare their time offsets.

Behaviors that provide simple commands

DuckDuckGo

Perform a DuckDuckGo search using the !duck command. Supports image and video searches and several filter options.

Google

Perform a Google search using the !google command. Requires a valid Google API key. Supports passthrough of some API parameters.

Random

Generate random numbers, roll dice and shuffle lists using !random, !roll, !shuffle and !pick.

Whois

Adds !netwhois, which returns information on Registered Internet Resources using the Whois protocol. Supports custom servers.

Discord-specific Behaviors

DiscordChannelDownload

Generate a JSON backup of a Discord channel's entire text message history using !download and attach it to a DM. Includes a HTML viewer that replicates Discord's basic look and feel, with support for dark mode and image loading.

DiscordPing

Coarse utility for measuring the latency between Rowboat and Discord. While in use, updates a message dynamically with the current results.

DiscordPresenceTracker

Rule-based utility for announcing updates to user presence in a Discord channel, such as when playing a game or streaming. Contains a default rule for announcing Twitch streams.

DiscordReactionChannels

Monitors reactions to control messages in order to toggle user access to channels on an off by manipulating the VIEW_CHANNEL permission directly for the user.

DiscordReactionCounter

Ranks Discord channel messages (over the channel's entire history) by reactions of a given symbol.

DiscordReactionRoles

Monitors reactions to control messages in order to toggle user roles on and off. Supports constraints between roles (requirement, add as consequence and remove as consequence). Roles are grouped by color.

DiscordTempVoice

Create a temporary voice channel associated with the text channel in which the command is used, and with the requested as moderator. The channel is junked once it's no longer in use.

DiscordTimeRoles

A Time add-on that assigns and unassigns roles to users based on their current timezone.

DiscordVoiceText

Toggles user access to a text channel on and off depending on whether the user is connected to a certain voice channel, by manipulating the VIEW_CHANNEL permission directly for the user.

The Grabber Behavior will monitor one or more channels in an Environment for music, cache that music and index it with its metadata. It's capable of scanning a channel's past message history, converting between mp3, pcm (wav) and flac, normalizing song volume, splitting chapters, cropping and more.

A !song command is provided for searching the index and manually setting or adjusting metadata.

The SongRanking Behavior is an add-on to Grabber that allows users to add a personal score to songs in the index using !song like or by reacting to messages.

A Grabber add-on that will make Rowboat connect to a voice channel and play a music radio using songs listed in the index. Songs are selected automatically based on several criteria, including requests, past history/statistics, song length, SongRanking likes and dislikes (if present), etc.

Rowboat instance owners can deploy a webpage for browsing the Grabber library and seeing Radio statistics. The files can be found in extra/radio.

VRChat API integrations

This Behavior authenticates with the VRChat backend (including support for 2FA through e-mail OTP) and is capable of polling endpoints and emitting websocket events for other Behaviors.

Additionally, it lets users assign Discord accounts to VRChat accounts in order to: Synchronize display names, announce when they go online/offline, list profile and recently seen world information in Discord channels, and deliver instance invites to VRChat users in response to Discord button clicks.

VRChatGroups

An add-on to VRChat that adds support for Groups integration. Features include announcing group member arrival/departure, showing group member online/representing status, and synchronizing group and discord roles.

VRChatFavorites

An add-on to VRChat that manages an unsynchronized list of worlds. World URLs or IDs sent to the managed channel are replaced with an embed containing the world thumbnail, description, tags and invite buttons. Provides a command for generating a backup of the contents and commands for selecting random entries based on a filter.

VRChatPhotos

An add-on to VRChat that manages a channel with images that are meant to be photos or screenshots captured in VRChat. Supports extracting and displaying metadata from the (now-defunct) Lag-Free Screenshots and from (still extant) VRCX.

Retired Behaviors

The following Behaviors used to exist in previous versions of Rowboat, but are currently retired or pending reimplementation:

  • Alpha: Wolfram Alpha integration.
  • AOW: PBEM Age of Wonders alerts provider.
  • DiscordChannels: Dynamic channel system for older versions of Discord.
  • DynamicConfig: Commands for editing the Rowboat v1 configuration file without restarting.
Clone this wiki locally