From 27f3214f2a3a06158ed876295f4622a5522b1626 Mon Sep 17 00:00:00 2001 From: Noah Heague Date: Sun, 5 Sep 2021 14:57:26 +1000 Subject: [PATCH 1/2] Added .env file support as well as a script to generate it --- bot/.gitignore | 1 + bot/package.json | 4 +++- bot/scripts/createEnv.sh | 16 ++++++++++++++++ bot/src/index.ts | 16 ++++++++++++---- bot/src/slashCommands/register.ts | 2 +- bot/yarn.lock | 5 +++++ 6 files changed, 38 insertions(+), 6 deletions(-) create mode 100644 bot/scripts/createEnv.sh diff --git a/bot/.gitignore b/bot/.gitignore index 63bc32ec2..fc8f7df0d 100644 --- a/bot/.gitignore +++ b/bot/.gitignore @@ -2,3 +2,4 @@ node_modules .idea .vscode yarn-error.log +.env diff --git a/bot/package.json b/bot/package.json index 9c1400b04..2faa6c7d7 100644 --- a/bot/package.json +++ b/bot/package.json @@ -4,7 +4,8 @@ "main": "src/index.ts", "license": "MIT", "scripts": { - "start": "ts-node src/index.ts" + "start": "ts-node src/index.ts", + "setup": "./scripts/createEnv.sh" }, "devDependencies": { "@babel/preset-env": "^7.15.0", @@ -22,6 +23,7 @@ "@discordjs/rest": "^0.1.0-canary.0", "deezer-api-ts": "^1.2.1", "discord.js": "^13.1.0", + "dotenv": "^10.0.0", "songlink-api": "^1.0.0", "ts-node": "^10.2.0", "winston": "^3.3.3" diff --git a/bot/scripts/createEnv.sh b/bot/scripts/createEnv.sh new file mode 100644 index 000000000..6312a68fa --- /dev/null +++ b/bot/scripts/createEnv.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +DOT_ENV_PATH="$(dirname "$0")/../.env" + +# Wipe existing file +rm "$DOT_ENV_PATH" 2> /dev/null + +# Setup env based on $ENV +if [[ "$ENV" != "PROD" ]]; then + # Non-prod environment + echo "ENV=DEV" >> "$DOT_ENV_PATH" + echo "DISCORD_TOKEN=${NON_PROD_DISCORD_TOKEN:-"_"}" >> "$DOT_ENV_PATH" +else + # Prod environment + echo "ENV=PROD" >> "$DOT_ENV_PATH" + echo "DISCORD_TOKEN=${PROD_DISCORD_TOKEN:-"_"}" >> "$DOT_ENV_PATH" +fi diff --git a/bot/src/index.ts b/bot/src/index.ts index 33fcccf59..3bf5daae6 100644 --- a/bot/src/index.ts +++ b/bot/src/index.ts @@ -2,6 +2,9 @@ import { Client, Intents } from "discord.js"; import { LoggerLayers } from "./config"; import { registerSlashCommands, slashCommands, tidyGuildCommands, SlashCommand } from "./slashCommands/register"; import { createLayeredLogger } from "./utils/logger"; +import { config } from "dotenv"; + +config(); const logger = createLayeredLogger(LoggerLayers.client); @@ -32,13 +35,18 @@ client.on("interactionCreate", async (interaction) => { (async () => { try { - await client.login(process.env.DISCORDTOKEN); + if (!process.env.ENV) { + throw new Error("Environment not configured"); + } + + logger.info(`Running on ${process.env.ENV} environment`); + await client.login(process.env.DISCORD_TOKEN); logger.info(`Logged in successfully to ${client.guilds.cache.size} guilds`); - } catch (e) { - logger.error("Log in Failed:", e); - } finally { + await tidyGuildCommands(client); await registerSlashCommands(client); + } catch (e) { + logger.error("Log in Failed:", e); } })(); diff --git a/bot/src/slashCommands/register.ts b/bot/src/slashCommands/register.ts index 3b498ce21..8747ae0cf 100644 --- a/bot/src/slashCommands/register.ts +++ b/bot/src/slashCommands/register.ts @@ -28,7 +28,7 @@ export const slashCommands: SlashCommand[] = [ } ]; -const rest = new REST({ version: "9" }).setToken(process.env.DISCORDTOKEN); +const rest = new REST({ version: "9" }).setToken(process.env.DISCORD_TOKEN); export const registerSlashCommands = async (client: Client): Promise => { try { logger.info("Registering slash commands"); diff --git a/bot/yarn.lock b/bot/yarn.lock index 64889d97d..eedfa300e 100644 --- a/bot/yarn.lock +++ b/bot/yarn.lock @@ -2145,6 +2145,11 @@ dot-prop@^6.0.1: dependencies: is-obj "^2.0.0" +dotenv@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-10.0.0.tgz#3d4227b8fb95f81096cdd2b66653fb2c7085ba81" + integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q== + electron-to-chromium@^1.3.793: version "1.3.806" resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.806.tgz" From 2a5fed00180297e9ec25b5ff41fee92b1e53a1f0 Mon Sep 17 00:00:00 2001 From: Noah Heague Date: Sun, 5 Sep 2021 15:01:44 +1000 Subject: [PATCH 2/2] Removed extra space on rm --- bot/scripts/createEnv.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot/scripts/createEnv.sh b/bot/scripts/createEnv.sh index 6312a68fa..ab49cd865 100644 --- a/bot/scripts/createEnv.sh +++ b/bot/scripts/createEnv.sh @@ -2,7 +2,7 @@ DOT_ENV_PATH="$(dirname "$0")/../.env" # Wipe existing file -rm "$DOT_ENV_PATH" 2> /dev/null +rm "$DOT_ENV_PATH" 2> /dev/null # Setup env based on $ENV if [[ "$ENV" != "PROD" ]]; then