{"id":21567364,"url":"https://github.com/amineo/discord-battlebot","last_synced_at":"2025-04-10T13:21:03.338Z","repository":{"id":41948327,"uuid":"106181370","full_name":"amineo/discord-battlebot","owner":"amineo","description":"An extensible Discord game server query and topic monitoring bot. ","archived":false,"fork":false,"pushed_at":"2025-04-07T21:23:29.000Z","size":541,"stargazers_count":8,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-07T22:29:08.173Z","etag":null,"topics":["battlebot","discord","discord-bot","elixir","tribes","tribes2"],"latest_commit_sha":null,"homepage":"","language":"Elixir","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/amineo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2017-10-08T14:10:50.000Z","updated_at":"2024-05-20T20:58:17.000Z","dependencies_parsed_at":"2024-01-03T00:29:07.634Z","dependency_job_id":"c1189b98-ddb8-4842-9871-361dda0e1fbf","html_url":"https://github.com/amineo/discord-battlebot","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amineo%2Fdiscord-battlebot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amineo%2Fdiscord-battlebot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amineo%2Fdiscord-battlebot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amineo%2Fdiscord-battlebot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amineo","download_url":"https://codeload.github.com/amineo/discord-battlebot/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248225660,"owners_count":21068078,"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","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":["battlebot","discord","discord-bot","elixir","tribes","tribes2"],"created_at":"2024-11-24T10:30:09.287Z","updated_at":"2025-04-10T13:21:03.314Z","avatar_url":"https://github.com/amineo.png","language":"Elixir","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- header --\u003e\n\u003cdiv id=\"top\" align=\"center\"\u003e\n  \u003cimg src=\"images/logo.png\" alt=\"BattleBot\" width=\"80\" height=\"80\"\u003e\n  \u003ch2 align=\"center\"\u003eBattleBot v2\u003c/h2\u003e\n  \u003cp align=\"center\"\u003e\n    An extensible Discord game server query and monitoring bot.\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/amineo/discord-battlebot\"\u003e\u003cstrong\u003eAdd to Discord\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/amineo/discord-battlebot/issues\"\u003eFeature Request\u003c/a\u003e\n    \u0026#8226;\n    \u003ca href=\"https://github.com/amineo/discord-battlebot/issues\"\u003eReport Bug\u003c/a\u003e\n    \u0026#8226;\n    \u003ca href=\"https://github.com/amineo/discord-battlebot/tree/v1-node\"\u003e\u003cem\u003eLegacy: BattleBot v1 (Node)\u003c/em\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    You can see BattleBot in action on the \u003ca href=\"https://discord.gg/Y4muNvF\"\u003eTribes 2 Discord\u003c/a\u003e.\n  \u003c/p\u003e\n\u003c/div\u003e\n\u003c!-- /header --\u003e\n\n\n\u003c!-- TOC --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-this-project\"\u003eAbout This Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\u003c/li\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e        \n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#supported-games\"\u003eSupported Games\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#roadmap\"\u003eRoadmap\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\n          \u003ca href=\"#getting-started\"\u003eGetting Started\u003c/a\u003e\n          \u003cul\u003e\n            \u003cli\u003e\u003ca href=\"#prerequisites\"\u003ePrerequisites\u003c/a\u003e\u003c/li\u003e\n            \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n          \u003c/ul\u003e\n        \u003c/li\u003e        \n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#acknowledgments\"\u003eAcknowledgments\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\u003c!-- /TOC --\u003e\n\n\u003cbr /\u003e\n\n---\n\n\u003cbr /\u003e\n\n\n## About This Project\n\nBattleBot [v1](https://github.com/amineo/discord-battlebot/tree/v1-node) was initially written in Node around Fall 2017 \nfor the [Tribes 2 Discord](https://discord.gg/Y4muNvF) community, allowing users to query Tribes 2 servers in real-time.   \n\nAs BattleBot's feature set grew (*some being experimental*), so did its complexity. With BattleBot evolving, therein lies the \nopportunity to learn more Elixir and completely rewrite BattleBot, and its [Tribes 2 server query engine](https://github.com/amineo/t2_server_query_elixir). \nPreviously, the query engine was using [qstat](https://github.com/Unity-Technologies/qstat). \nBattleBot's core is now even more modular, including the ability to handle more games, with Tribes 2 being the first.\n\n### Features\n#### Application (Slash) Commands\n\n| Slash Command | Description |\n| :---          |    :----   |\n| `/query t2`   | Query options: `server`, `ip`, `format`. If a server or IP option is not selected, BattleBot will query all servers configured in [config/t2_servers.exs](config/t2_servers.exs) and output the results in an embedded list. |\n| | `\u003e server` : Select from a list of predefined servers     |\n| | `\u003e ip` : Manually enter a server's IP:PORT to be queried  |\n| | `\u003e format` : Output options: `image` *(default)*, `raw`   |\n| `/events`     | List server events          |\n| `/info`       | Info about BattleBot        |\n\n\n#### Ephemeral Message Responses\nBy default, any response BattleBot yields with will automatically be deleted after 5 minutes have passed. This keeps the chat and query outputs tidy. :)\n\nThe default message timeout is configurable in [config/config.exs](config/config.exs). This will eventually be an option you can pass into any `/query` command to set a custom timeout.\n\n\n#### Server Topic Monitoring\n`Coming soon! On the roadmap.`\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\n### Built With\n- [Elixir](https://elixir-lang.org/)\n- [Nostrum](https://github.com/Kraigie/nostrum)\n- T2ServerQuery: [Repo](https://github.com/amineo/t2_server_query_elixir) \u0026#8226; [Docs](https://hexdocs.pm/t2_server_query)\n- [t2-server-image](https://github.com/exogen/t2-server-xbar/tree/main/packages/t2-server-image)\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- /About This Project --\u003e\n\n\n\n## Supported Games\n- Tribes 2\n- *Suggest your favorite title :)* \n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- /Supported Games --\u003e\n\n\n\n## Roadmap\n\n- [x] Slash commands\n- [x] Tribes 2 Server and list queries\n- [ ] Custom message timeout option for slash commands\n- [ ] Topic Monitoring :: Monitor game server populations and update Discord channel topics\n\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- /Roadmap --\u003e\n\n\n## Contributing\nAny contributions you make are **greatly appreciated**. If you have a suggestion that would make this better, please fork the repo and create a pull request. I'd love to learn from you!\n\nYou can also simply open an issue with the tag \"enhancement\". **Don't forget to give the project a star!** :)\n\n1. Fork the Project\n2. Create your Feature Branch (`git checkout -b feature/NewFeature`)\n3. Setup any applicable tests for your module or feature in `./test/*.exs`\n4. Commit your Changes (`git commit -m 'feat(new): Command to query \u003cinsert your favorite game here\u003e'`)\n5. Push to the Branch (`git push origin feature/NewFeature`)\n6. Open a Pull Request\n\n\n### Testing, Formatting and Styling\nPlease run `credo` and `dialyzer` static code analysis on any contributions you make so that we can keep the codebase consistent.\n\n- `mix credo`    : Static Code Analysis\n- `mix dialyzer` : Static Code Analysis\n- `mix test`     : Test runner\n- `mix format`   : Code formatting\n\n\n\n### Getting Started\nRun BattleBot:\n```\niex -S mix\n```\n\n#### Prerequisites\n- Install Elixir \u0026 Erlang : [Guide with ASDF version manager](https://www.pluralsight.com/guides/installing-elixir-erlang-with-asdf)\n- The project's Elixir \u0026 Erlang versions are found here in: [./elixir_buildpack.config](./elixir_buildpack.config)\n- **Not required but recommended**: For VSCode, [ElixirLS: Elixir support and debugger](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls)\n- **Required Environment Variables**\n  - `DISCORD_BOT_TOKEN` : Your secret bot token. ([Create a new bot application](https://discord.com/developers/applications))\n  - `TEST_GUILD_ID`  : Your **dev channel** for testing slash commands\n  - ~ **TIP:** Using [direnv](https://direnv.net/) can make your life easier for auto loading envs/secrets for a project\n\n#### Installation\n```\nmix deps.get\n```\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- /Contributing --\u003e\n\n## Acknowledgments\n- @exogen: [t2-server-image](https://github.com/exogen/t2-server-xbar/tree/main/packages/t2-server-image)\n- @ChocoTaco1: [https://github.com/ChocoTaco1/TacoServer](https://github.com/ChocoTaco1/TacoServer), BattleBot Logo\n- The Tribes 2 Community\n- T2ServerQuery: [Repo](https://github.com/amineo/t2_server_query_elixir) \u0026#8226; [Docs](https://hexdocs.pm/t2_server_query)\n- [Nostrum](https://github.com/Kraigie/nostrum)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- /Acknowledgments --\u003e\n\n\n## License\n[MIT](LICENSE.txt)\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n\u003c!-- /License --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famineo%2Fdiscord-battlebot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famineo%2Fdiscord-battlebot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famineo%2Fdiscord-battlebot/lists"}