How to install and host your own bot instance

If you still don't know where to host the bot, try DigitalOcean, with this link you'll get $100 of credit for 60 days, and I'll earn some credit as well to keep up Member Counter! https://m.do.co/c/360e7314770e

If you have any problem during the process, join in this discord server and feel free to ask in the support channel

Recommendations

  • Have patience

  • Be familiarized with the CLI (cmd.exe, bash)

  • Use linux if you wanna host this bot 24/7 (unless you already know how to do it in your OS)

Prerequisites

1. Download the bot to your computer

2. Set environment variables

Never share a .env file: It contains sensitive data

Here is a quick look to the .env.example

If you are using a service like heroku you can take advice of the available environment variables in the .env.example

Enable the developer mode in your discord client User settings > Appearance > Advanced > Developer Mode

Copy and paste the .env.example file and rename it to .env (if you can't do this, then you must set the variables directly, search on internet how to do it in your platform, e.g: "how to set env vars in linux" or "how to set env vars in heroku"), then create a dist folder and move the .env file there, and open it with a text editor. Below I will explain what does each necessary variable.

  • DISCORD_CLIENT_TOKEN Paste here your bot's token, and remember to keep it secret!

  • DISCORD_CLIENT_ID Paste here your bot's id and add an * at the end.

  • DB_URI If you installed mongodb, this varaible should be set to mongodb://127.0.0.1:27017/memberCounter.

  • DISCORD_PREFIX feel free to change this value to your favorite bot prefix, but be careful to don't use the same as other bots

  • BOT_OWNERS Right click your username in the discord client and press "Copy ID" and paste it here and add an * at the end, you can add as many users as you want separated by a comma (,). Any user added here will have always full access to the bot's commands without any restriction.

  • UPDATE_COUNTER_INTERVAL (Seconds) This value will change the frequency of some counter updates, you should set this at least to 300 seconds.

  • FOSS_MODE Set this to true, the bot wont kick itself when it join in a no premium server

  • PREMIUM_BOT Set this to true, to enable all the premium counters

  • PORT Set this to 8080, or any available port, don't set this if you are using a service like Heroku

  • YOUTUBE_API_KEY Paste here your YouTube API key, you can get it here

  • TWITCH_CLIENT_ID and TWITCH_CLIENT_SECRET Paste here your Twitch app credentials, you can get them here

  • MEMERATOR_API_KEY Paste here your Memerator API key, you can get it here, remember to check mark "Get Profiles - View Profiles."

  • TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET, TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET Paste here your Twitter API credentials, you can get them here

3. Install dependencies and build

You must have Python and a compiler in order to install some of the bot's dependencies, please follow the install instructions for your operating system: https://github.com/nodejs/node-gyp#installation

npm install
npm run build

4. Check that it works

  1. Start it in your terminal with npm start or node .

  2. Add the bot to your server with one of the following methods:

    1. One of the first line of the logs should contain a URL saying "Basic status website ready", access to it in your browser and click "Invite bot", by using this method you can check that the database and the discord connection is working correctly

    2. Or you can generate a link in the Discord Developer Portal -> click in your bot, click in OAuth2, in the scope section click 'bot' and then will appear more options, click in 'Administrator' and copy the generated link

  3. Testing the bot: (remember to replace mc! with your custom prefix)

    • Send mc!help

    • Send mc!guide

    • Send mc!counts

    • If you were able to run the commands successfully without any error, congrats, the bot wroks.

5. Keep it running, forever.

Method 1 (UNIX and Linux)

  1. Install pm2

    npm install pm2 -g
  2. cd to the bot folder and run this command

    pm2 start ./dist/index.js --name member-counter-bot

  3. Run this so the bot starts automatically when you boot your computer

    pm2 startup
    pm2 save

Done! Here is some commands:

Check logs:

pm2 log member-counter-bot

Start/Restart/Stop

pm2 start member-counter-bot
pm2 restart member-counter-bot
pm2 stop member-counter-bot

You can learn more about pm2 here

Method 2 (Linux with systemd)

  1. cd to the bot folder and then cd to the distfolder

  2. Check that index.js has execution permissions for you (and try it by running the bot directly in ther terminal with ./index.js)

  3. Edit the res/member-counter-bot.service file, change the path of ExecStart and WorkingDirectory to the real one and change the User and Group values to yours.

  4. Copy this file to /etc/systemd/system

    sudo cp res/member-counter-bot.service /etc/systemd/system
  5. Enable the service and start it

    sudo systemctl enable member-counter-bot.service && sudo systemctl start member-counter-bot.service
  6. Check the logs with journalctl

    sudo journalctl -u member-counter-bot.service
  7. Repeat the steps of 4.3

  8. Discard changes of member-counter-bot.service of this repo to avoid conflicts if you update the bot in a future.

    git checkout res/member-counter-bot.service