squIRCy2 is an IRC bot written in Go and is scriptable using an embedded JavaScript runtime.
It features a robust CLI with REPL and auto-completion, a web management interface, an embedded document store, and event based in-program communication.
Customize the bot’s functionality with JavaScript scripts. Bind event handlers to handle events that occur in the application. Events come from IRC, the CLI, or even the web.
Install squIRCy2 with go get
.
go get -u github.com/veonik/squircy2/...
After squIRCy2 is installed, you can run it immediately with squircy2
. On first run, a default configuration will be initialized in ~/.squircy2
.
squircy2
For information on modifying and customizing squIRcy2, see Contributing.
squIRCy2 command-line usage.
squIRcy2 version dev (go1.8)
Usage: squircy2 [-no-interactive] [-root-path <config root>] [-version]
-no-interactive
Run without user interaction.
-root-path string
Specify a custom root path. (default "~/.squircy2")
-version
Display the version and exit.
Customize where squIRCy2 stores data by specifying a custom -root-path
. Specifying -no-interactive
will disable the CLI.
The squIRCy2 command line starts in “Command Mode” which offers a few basic commands, including connecting/disconnecting from IRC, enabling/disabling the web server, and starting a REPL.
Enter “REPL Mode” by entering the repl
command. This REPL features history navigable with the arrow keys, history search with CTRL+R, and auto-completion with TAB.
Once the bot is up and running, you can access the web management interface via localhost:3000
. From this interface you can write scripts and use a web-based REPL, as well as configure squIRCy2 to your liking.
From the Settings page, you can configure:
squIRCy2 embeds a JavaScript interpreter, allowing you to write scripts to implement various bot behaviors.
A full introduction to the squIRCy2 JavaScript API can be found in the JavaScript API reference.
Check the Example Scripts section for ideas for squIRCy2 scripts.
See the dedicated section on Webhooks.
squIRCy2 leverages go-irc-event for IRC interaction. It makes use of martini for serving web requests and dependency injection. Tiedot is used as the storage engine. squIRCy2 embeds the otto JavaScript VM for scripting and it uses the stick templating engine for rendering HTML templates.