Automatic Discord muting for Among Us! No installs necessary, just enter the code, join the voice channel, and you're off!
This is the source code for the Discord bot and Among Us client that compromise Impostor. Note that Impostor is not intended for self-hosting (although it is theoretically possible), so if you want Impostor on your Discord server the easiest solution is to simply click here.
This project consists of two components, creatively named bot and client. Bot is the Discord part written in TypeScript that handles all the logic around command handling, session management, member voice channel moving, etc. Client is a simple C# implementation of the Among Us networking protocol, just barely enough to connect to the lobby, fetch player data and emit events. Bot launches a client instance for every lobby, reading events from client through stdout.
To get started with developing the bot, you'll need to install dependencies. First of all you need to have Node.js installed. After that, simply run
npm/yarn installto get all the dependencies needed.
.envby copying the template and filling in values, then run
node dist/index.jsto start the bot.
Note that you will also need a PostgreSQL database for running the bot.
For the client, be sure to clone the repository with submodules enabled, then simply open the solution in
client/to develop. You can also use the dotnet CLI to build the client, using
git clone --recursive https://github.com/molenzwiebel/Impostor)
.env.template, duplicate the file, rename to
.env, and fill in the blanks. The result will look something like this:
DISCORD_TOKEN= AU_CLIENT_DIR=../client/bin/Debug/netcoreapp3.1 DATABASE_URL=postgresql://postgres:@localhost:5432/postgres
bot/src/constants.ts(add the ID, name, etc)
/botin your cmd/PowerShell/terminal
npm installto install dependencies.
node dist/index.js(pm2 is recommended to keep it running for long periods)
Note: When using Linux, I recommend setting up a
.shfile to simplify the process when rebooting the bot, as some bugs in the code require a restart.