{"id":23089153,"url":"https://github.com/marahin/letter-bot","last_synced_at":"2025-08-13T20:11:12.979Z","repository":{"id":198754755,"uuid":"701448994","full_name":"Marahin/letter-bot","owner":"Marahin","description":"Letter is a Discord bot for reserving respawns in Tibia. ","archived":false,"fork":false,"pushed_at":"2025-07-27T02:00:11.000Z","size":8556,"stargazers_count":9,"open_issues_count":8,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-27T05:11:58.202Z","etag":null,"topics":["booking","bot","discord","respawn","tibia"],"latest_commit_sha":null,"homepage":"https://tibialoot.com","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Marahin.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-10-06T16:50:33.000Z","updated_at":"2025-07-27T01:03:30.000Z","dependencies_parsed_at":"2023-11-12T10:29:31.710Z","dependency_job_id":"65b0bbad-b6f8-4a8b-8965-5bf00baca2c9","html_url":"https://github.com/Marahin/letter-bot","commit_stats":null,"previous_names":["marahin/letter-bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Marahin/letter-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fletter-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fletter-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fletter-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fletter-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Marahin","download_url":"https://codeload.github.com/Marahin/letter-bot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Marahin%2Fletter-bot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270305630,"owners_count":24562087,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-13T02:00:09.904Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["booking","bot","discord","respawn","tibia"],"created_at":"2024-12-16T20:30:07.217Z","updated_at":"2025-08-13T20:11:12.951Z","avatar_url":"https://github.com/Marahin.png","language":"Go","funding_links":["https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee\u0026emoji=\u0026slug=marahin\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff","https://www.buymeacoffee.com/marahin"],"categories":[],"sub_categories":[],"readme":"# Letter, Tibia's booking bot\n\n[![Go Report Card](https://goreportcard.com/badge/github.com/marahin/letter-bot)](https://goreportcard.com/report/github.com/marahin/letter-bot)\n![License](https://img.shields.io/github/license/marahin/letter-bot)\n[![golangci-lint](https://github.com/Marahin/letter-bot/actions/workflows/golangci-lint.yml/badge.svg?branch=main)](https://github.com/Marahin/letter-bot/actions/workflows/golangci-lint.yml)\n[![ci](https://github.com/Marahin/letter-bot/actions/workflows/test.yml/badge.svg)](https://github.com/Marahin/letter-bot/actions/workflows/test.yml)\n[![CodeQL](https://github.com/Marahin/letter-bot/actions/workflows/github-code-scanning/codeql/badge.svg)](https://github.com/Marahin/letter-bot/actions/workflows/github-code-scanning/codeql)\n\n---\n\nLetter is a Discord bot for reserving respawns in [Tibia](https://tibia.com). It registers slash commands allowing users to manage their respawn bookings.  \nCurrently used by servers with over 3k members. \n\n\n---\n\n[![buymeacoffee](https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20coffee\u0026emoji=\u0026slug=marahin\u0026button_colour=FFDD00\u0026font_colour=000000\u0026font_family=Cookie\u0026outline_colour=000000\u0026coffee_colour=ffffff)](https://www.buymeacoffee.com/marahin)  \nIf you like the bot and want to support its development, you can buy me a coffee!\n---\n## Overview\n* [**LICENSE**](LICENSE)\n* [Invite link, self-hosting](#Invite-link-self-hosting)\n* [Trivia](#Trivia)\n* [**Screenshots**](#Screenshots)\n  * [Booking](#Booking)\n  * [Unbooking](#Unbooking)\n  * [Feedback](#Feedback)\n  * [Pie chart showing distribution of reservations](#Pie-chart-showing-distribution-of-reservations)\n  * [List of upcoming reservations](#List-of-upcoming-reservations)\n* [**Development**](#Development)\n\n\n--- \n## Invite link, self-hosting\n\n**Hosted version is available on demand**. Reach out on [Tibialoot Discord Server](https://discord.com/invite/F4YKgsnzmc). \n\nSelf-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](https://discord.com/invite/F4YKgsnzmc).\n\n## Trivia\n\nLetter bot originated within [Refugees](https://www.tibia.com/community/?subtopic=guilds\u0026page=view\u0026GuildName=Refugees), the dominating guild on one of the oldest Tibia servers, Celesta.\n\n## Screenshots\n\n### Booking\n\n![booking command](docs/booking.png)\n\n### Unbooking\n\n![unbooking command](docs/unbooking.png)\n\n### Feedback\n\n![reservation outcomes](docs/reservations_outcomes.png)\n\n### Pie chart showing distribution of reservations\n\n![summary pie chart](docs/summary_pie_chart.png)\n\n## List of upcoming reservations\n\n![summary list](docs/sample_summary_list.png)\n\n## Development\n\n### Prerequisites\n\n* `docker` and `docker-compose` (unless you want to go bare-metal),\n* `make` (unless you want to run commands manually),\n* `go` (if you want to develop),\n* `atlas` to manage migrations https://atlasgo.io\n* `sqlc` to generate Go wrappers around SQL queries https://sqlc.dev/\n\n### docker-compose\n\n#### Initial setup\n\n1. Copy `.env.example` to `.env` and fill in the values (or leave as-is).\n3. Run `docker-compose up -d` to start the stack.\n4. Run `docker-compose exec bot sh -c \"bin/migrate\"` to apply migrations.\n4. Run `docker-compose exec db bash -c \"seed\"` to fill any entry-level data.\n5. Run `docker-compose restart bot` (as it failed originally, when the database was not set up).\n\n#### After initial setup\n\n1. To start: `docker-compose up -d`\n2. Development should hot reload (recompile and restart the bot) on file changes.\n2. To stop:`docker-compose stop` or `... down`\n\n#### Shutdown / teardown\n\n1. To shut the service down, `docker-compose stop`\n2. (optional) To remove containers and networks, `docker-compose down`\n2. (optional) To remove the volumes, such as database, `docker volume rm letter_bot_postgres`\n\n### Database and migrations\n\n* make changes in schema, \n* `bin/generate_migration \u003cmigration_title\u003e`\n* create new queries, if needed\n* `make sqlc-generate`\n\nTo apply migrations, run `docker-compose exec bot sh -c \"bin/migrate\"`.\n\n### Contributing\n\nWe will be very happy for each contribution. \n\n1. Fork the repository\n2. Create a branch with your changes\n3. Push the branch to your fork\n4. Create a pull request\n5. Wait for the review\n\n### TibiaData integration\n\nThe bot has [TibiaData](https://tibiadata.com/) integration, which allows for showing online/offline indicators for players with reservations.\n\nIn order to enable it, you need to set the `TIBIADATA_API_KEY` environment variable. \n\nThere are examples in [.env.sample](.env.sample) file, along with [docker-compose.yml](docker-compose.yml).\n\n## Credits\nLetter-bot is one of many tools prototyped by (and for) [TibiaLoot.com](https://tibialoot.com)  \n\nAuthor: [marahin](https://github.com/marahin)\n\nContributors: \n\n* [patryk-fuhrman](https://github.com/patryk-fuhrman)\n* [pawcioma](https://github.com/pawcioma/)\n* [mariyusz](https://github.com/mariyusz)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarahin%2Fletter-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarahin%2Fletter-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarahin%2Fletter-bot/lists"}