A simple Discord bot to check for ArmA 3 and DCS server status.
This project is made to improve players convenience and reduce time spent when checking current mission and number of players of ArmA 3 and DCS servers through Discord integration.
The bot is able to show current mission, number of players and active players list on a server when !serverstats command is invoked by a user.
It asynchronously fetches ArmA 3 server data directly from the host server's Steam query port (which defaults to port 2303 if not specified by user) with python-a2s while DCS server data is asynchronously fetched through DCS official website server list.
Users can browse through the list of ArmA 3 servers on Battlemetrics by server name to retrieve the server IP with !serversearch command.
Channel authorization can be managed by users with sufficient permission in the Discord guild through !channelconfig command.
Respectively, server list can also be managed by by users with sufficient permission in the Discord guild through !serverconfig command.
The bot is also containerized using Docker with image pulled from Platform One registry to provide more security and portability in deployment.
It is using Sentry for logging and error tracking, Segment with Amplitude integration for analytics and Google Cloud Firestore to store channel, server list and configuration variables.
There are two available built-in runtime modes, each accomodates for development and production purpose. This is designed to keep environments across the application lifecycle as similar as possible and maximize dev/prod parity.
Display help message.
Authorize or revoke bot access to channels.
Authorize bot access to #example-channel.
Revoke bot access to #example-channel.
Search for ArmA 3 servers IP address.
Search for ArmA 3 server IP address by server name.
Assign or remove ArmA 3/DCS servers to the bot.
You can specify optional Steam query port for ArmA 3 server on IP address argument.
DCS servers must have -dcs suffix on its name.
Assign a name to ArmA 3 server using the respective IP address and save it to the bot.
Assign a name to ArmA 3 server using the respective IP address with optional Steam query port on IP address parameter and save it to the bot.
Assign a name to DCS server using the respective IP address and save it to the bot.
Remove saved server from the bot by the assigned name.
Check status of saved server.
Check status of a server by the assigned name.