Letter is a Discord bot for reserving respawns in Tibia. It registers slash commands allowing users to manage their respawn bookings.
Currently used by servers with over 3k members.
Hosted version is available on demand. Reach out on Tibialoot Discord Server.
Self-hosting is possible but it's your job to figure out how you want it done. If you require support, hit us up Tibialoot Discord Server.
Letter bot originated within Refugees, the dominating guild on one of the oldest Tibia servers, Celesta.
dockeranddocker-compose(unless you want to go bare-metal),make(unless you want to run commands manually),go(if you want to develop),atlasto manage migrations https://atlasgo.iosqlcto generate Go wrappers around SQL queries https://sqlc.dev/
- Copy
.env.exampleto.envand fill in the values (or leave as-is). - Run
docker-compose up -dto start the stack. - Run
docker-compose exec bot sh -c "bin/migrate"to apply migrations. - Run
docker-compose exec db bash -c "seed"to fill any entry-level data. - Run
docker-compose restart bot(as it failed originally, when the database was not set up).
- To start:
docker-compose up -d - Development should hot reload (recompile and restart the bot) on file changes.
- To stop:
docker-compose stopor... down
- To shut the service down,
docker-compose stop - (optional) To remove containers and networks,
docker-compose down - (optional) To remove the volumes, such as database,
docker volume rm letter_bot_postgres
- make changes in schema,
bin/generate_migration <migration_title>- create new queries, if needed
make sqlc-generate
To apply migrations, run docker-compose exec bot sh -c "bin/migrate".
We will be very happy for each contribution.
- Fork the repository
- Create a branch with your changes
- Push the branch to your fork
- Create a pull request
- Wait for the review
The bot has TibiaData integration, which allows for showing online/offline indicators for players with reservations.
In order to enable it, you need to set the TIBIADATA_API_KEY environment variable.
There are examples in .env.sample file, along with docker-compose.yml.
The bot exposes Prometheus metrics via an internal HTTP server.
- Endpoint:
/metrics - Address: configured by
METRICS_ADDR - Implementation: Prometheus client, wired by infrastructure HTTP server
Exposed metrics
letter_bot_discord_slash_command_invocations_total{guild_id,command}: total slash command invocations per guild and command.letter_bot_booking_overbook_invocations_total{guild_id}: totalbookinvocations with theoverbookflag per guild.letter_bot_discord_command_errors_total{guild_id,command}: total command handler errors per guild and command.letter_bot_reservations_upcoming_count{guild_id}: gauge with the current number of upcoming reservations per guild.
Examples
- All slash commands:
sum(letter_bot_discord_slash_command_invocations_total) - Per guild:
sum by (guild_id) (letter_bot_discord_slash_command_invocations_total) - Errors per command/guild:
sum by (guild_id, command) (letter_bot_discord_command_errors_total) - Overbook counts:
sum by (guild_id) (letter_bot_booking_overbook_invocations_total) - Upcoming total:
sum(letter_bot_reservations_upcoming_count)
Two HTTP endpoints are provided for container health probes:
/livez: liveness probe. Returns 200 when the bot process is running; 503 otherwise./readyz: readiness probe. Returns 200 when the bot is running and database ping succeeds; 503 otherwise.
Configure your probes to hit these endpoints on the same port as metrics (default :2112, configurable with METRICS_ADDR).
Letter-bot is one of many tools prototyped by (and for) TibiaLoot.com
Author: marahin
Contributors:




