A proper IRC bot.
squircy3 is a cross-platform application written in Go that works nearly anywhere.
squircy3 is also a framework based around a plugin architecture that can be extended to support new and custom functionality.
Clone this repository, then build using
git clone https://code.dopame.me/veonik/squircy3 cd squircy3 make all
squircy executable and all built plugins will be in
a successful build.
squircy in interactive mode with
-interactive and specify the
directory as the root.
squircy creates the root directory if it does not yet exist. If the root does not contain config.toml or package.json, defaults will be created.
out/squircy -interactive -root out
This will automatically create
package.json within the
out/ directory. The default configuration enables all plugins available
and connects to freenode. As such, on the first run, expect to see some
Expect to see some warnings on the first run. All plugins are enabled, by default, so NodeJS dependencies must be installed for everything to function.
Modify the default configuration in
out/config.toml as necessary. Comment
out or remove the plugins listed under
extra_plugins to disable any
To get the babel and node_compat plugins working, install Node dependencies using npm or yarn.
yarn --cwd out install
For more information on plugins, see the section below
Run squircy3 in Docker using the
veonik/squircy3 image hosted on Docker Hub.
docker run -it veonik/squircy3:latest
squircy3 is configured using the TOML file
config.toml below the bot's root
See config.toml.dist for the reference version of this file.
By default, the root directory is
~/.squircy. If the root directory does not
exist, it will be created and a default configuration will be populated.
squircy3 can also be configured using command line flags. Run
squircy -h for
a full list of available options.
plugin subpackage provides the interface for loading and managing plugins
Plugins may be built-in to the binary application, or built as shared libraries (.so files) that can be loaded at runtime.
Core plugins are built-in to the squircy application and are always loaded.
configis a framework for pluggable, dynamic configuration management.
eventis an event dispatcher, allowing for decoupled communication between plugins and user scripts.
vmplugin includes a mostly Node-compatible
ircis an IRC client that utilizes the event dispatcher from the event package to notify the application of messages, etc.
Extra plugins are available to extend default functionality. These are built as shared libraries and loaded at runtime using the Go plugin API.
babelprovides a transparent ES2017+ transpilation layer so that modern features can be used such as classes and async/await.
babelplugin requires external NodeJS dependencies to operate. Use package.json as a starting point for installing these.
node_compatadds an additional layer of compatibility with standard NodeJS APIs.
event.EventEmitter, NodeJS Streams (
crypto.createHash, and basic forms of
regenerator-runtimewhich allows Generators (ie.
yield) and async/await to function.
squircy2_compatprovides a compatibility layer with squircy2.