Table of Contents

Introduction

FabIO is a C++ Discord bot using Sleepy Discord (docs at: https://yourwaifu.dev/sleepy-discord/documentation.html). Internally it hosts a LUA state for game programming, and renders flat html files for visuals. It is meant as a step towards the Zero Project, and allows a wide variety of rpg and board-like games to be played via Discord chat.

Given you have access to this forum, you can program the bot using the guide below. Essentially it is as simple as making a wiki page for your game, and then telling the bot to load the code from that wiki page.

Programming Details

I am not going to list all the programming details here for the bot, but the general overview. If you are working on these scripts I'm sure you'll be in Discord to ask any specific questions you might have. Also, I'm recording a bit here to make sure I remember how things work!

Basic Concepts

The FabIO bot runs LUA scripts at its core. It is just a frame for them, and allows those scripts to be called from Discord and then output an html view that is fed to a local server. In this way the scripts are the 'magic' between Discord and that webpage. To organize this all in a useful way, the bot supports: games and instances.

Wiki Linkage

The FabIO bot maintains local copies of scripts from games on this wiki. Editing a game page here has no immediate effect. You must tell the bot in DM to $upload <game-name>. Then it'll parse the wiki page, find all the scripts, copy them locally, and compile them into a game state for use. Any errors it finds will be reported directly to you in response.

HTML Output

You can find the output of the bot here: http://fabio.unusualperson.com/games.

Game Code Pages