Yaboli (Yet Another Bot Library) is a Python library for creating bots for euphoria.io.
Ensure that you have at least Python 3.7 installed.
To install yaboli or update your installation to the latest version, run:
$ pip install git+https://github.com/Garmelon/yaboli@v1.2.0
The use of venv is recommended.
A simple echo bot that conforms to the botrulez can be written like so:
class EchoBot(yaboli.Bot):
HELP_GENERAL = "/me echoes back what you said"
HELP_SPECIFIC = [
"This bot only has one command:",
"!echo <text> – reply with exactly <text>",
]
def __init__(self, config_file):
super().__init__(config_file)
self.register_botrulez(kill=True)
self.register_general("echo", self.cmd_echo)
async def cmd_echo(self, room, message, args):
await message.reply(args.raw)
The bot's nick, cookie file and default rooms are specified in a config file, like so:
[general]
nick = EchoBot
cookie_file = bot.cookie
[rooms]
test
The help command from the botrulez uses the HELP_GENERAL
and HELP_SPECIFIC
fields.
In the __init__
function, the bot's commands are registered. The required
botrulez commands (!ping, !help, !uptime) are enabled by default. Other
commands like !kill need to be enabled explicitly.
In the cmd_echo
function, the echo command is implemented. In this case, the
bot replies to the message containing the command with the raw argument string,
i. e. the text between the end of the "!echo" and the end of the whole message.
The full version of this echobot can be found in the examples.
- document yaboli (markdown files in a "docs" folder?)
- document new classes (docstrings, maybe comments)
- write examples
- make yaboli package play nice with mypy
- implement !uptime for proper botrulez conformity
- implement !kill
- untruncate LiveMessage-s
- config file support for bots, used by default
- make it easier to enable log messages
- make it easier to run bots
- package in a distutils-compatible way (users should be able to install
yaboli using
pip install git+https://github.com/Garmelon/yaboli
) - implement !restart
- write project readme
- cookie support
- fancy argument parsing