Tillerinobot
This project contains the IRC frontend and a growing part of the backend for ppaddict recommendations and similar services. The web frontend can be found in the ppaddict project.
Just want to use the bot? Message Tillerino in-game!
Please visit the wiki for documentation.
Join the discussion on discord!
Technology
Since I use the bot as a playground to try out technologies and concepts, it's... interesting in some places and inconsistent at times. The bot is written mostly in Java with increasing amounts of Rust sprinkled about.
frequently asked:
- The IRC frontend is built using the Rust irc crate.
- For the osu! API, I rolled my own Java library. It's available in maven central. It also does some of the AR/OD calculations. The bot still accesses the v1 api, I'd like to move to v2 when we can also use that for messaging.
- To calculate pp, we first use SanDoku to calculate difficulty attributes and then our own translation of the original pp code into Java.
less frequently asked:
- In a nutshell, the application runs in three containers:
- The IRC frontend
- The backend for this GUI
- The core which is mostly in the tillerinobot module, the ppaddict backend and some closed source stuff.
- These three containers communicate via RabbitMQ with the contracts in tillerinobot-model and tillerinobot-rabbit. Some of the communication is RPC (where it needs to be synchronous, e.g. block until a pong is received from IRC to prevent bursting), some is standard pub/sub.
- There are a bunch of auxiliary containers, e.g. SanDoku (see above), some authentication stuff, RabbitMQ of course, etc.
- I initially rolled my own ORM for database access. It was living in the closed-source part of the backend. Since I wanted to open-source more and more of the backend and was hesitant about open-sourcing the ORM (it was messy), I migrated all the database code that went into this repository to Spring Data JPA. However, the use case is way too thin to justify the insane overhead of JPA, so I polished my own ORM (dubbed mORMon) a bit and it now lives in this repository. I'm in the process of removing Spring Data JPA.
Building/Running Tillerinobot (for developing purposes)
Check out the wiki to find out how to build and run Tillerinobot locally for developing purposes.
If you want to support the project, consider becoming a patron:
For more info check out the Wiki!