/discord-battlebot

An extensible Discord game server query and topic monitoring bot.

Primary LanguageElixirMIT LicenseMIT

BattleBot

BattleBot v2

An extensible Discord game server query and monitoring bot.

Add to Discord

Feature RequestReport BugLegacy: BattleBot v1 (Node)
You can see BattleBot in action on the Tribes 2 Discord.

Table of Contents
  1. About This Project
  2. Supported Games
  3. Roadmap
  4. Contributing
  5. Acknowledgments
  6. License



About This Project

BattleBot v1 was initially written in Node around Fall 2017 for the Tribes 2 Discord community, allowing users to query Tribes 2 servers in real-time.

As BattleBot's feature set grew (some being experimental), so did its complexity. With BattleBot evolving, therein lies the opportunity to learn more Elixir and completely rewrite BattleBot, and its Tribes 2 server query engine. Previously, the query engine was using qstat. BattleBot's core is now even more modular, including the ability to handle more games, with Tribes 2 being the first.

Features

Application (Slash) Commands

Slash Command Description
/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 and output the results in an embedded list.
> server : Select from a list of predefined servers
> ip : Manually enter a server's IP:PORT to be queried
> format : Output options: image (default), raw
/events List server events
/info Info about BattleBot

Ephemeral Message Responses

By default, any response BattleBot yields with will automatically be deleted after 5 minutes have passed. This keeps the chat and query outputs tidy. :)

The default message timeout is configurable in config/config.exs. This will eventually be an option you can pass into any /query command to set a custom timeout.

Server Topic Monitoring

Coming soon! On the roadmap.

(back to top)

Built With

(back to top)

Supported Games

  • Tribes 2
  • Suggest your favorite title :)

(back to top)

Roadmap

  • Slash commands
  • Tribes 2 Server and list queries
  • Custom message timeout option for slash commands
  • Topic Monitoring :: Monitor game server populations and update Discord channel topics

(back to top)

Contributing

Any 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!

You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! :)

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/NewFeature)
  3. Setup any applicable tests for your module or feature in ./test/*.exs
  4. Commit your Changes (git commit -m 'feat(new): Command to query <insert your favorite game here>')
  5. Push to the Branch (git push origin feature/NewFeature)
  6. Open a Pull Request

Testing, Formatting and Styling

Please run credo and dialyzer static code analysis on any contributions you make so that we can keep the codebase consistent.

  • mix credo : Static Code Analysis
  • mix dialyzer : Static Code Analysis
  • mix test : Test runner
  • mix format : Code formatting

Getting Started

Run BattleBot:

iex -S mix

Prerequisites

Installation

mix deps.get

(back to top)

Acknowledgments

(back to top)

License

MIT

(back to top)