diff --git a/build/src/main.js b/build/src/main.js index 8b25b69..979c156 100644 --- a/build/src/main.js +++ b/build/src/main.js @@ -1,4 +1,4 @@ -import { discordEvents } from "./services/discord-service.js"; +import { discordEvents } from './services/discord-service.js'; /** * Some predefined delay values (in milliseconds). */ diff --git a/build/src/main.js.map b/build/src/main.js.map index 9aa931a..77d8160 100644 --- a/build/src/main.js.map +++ b/build/src/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,uCAAW,CAAA;IACX,0CAAa,CAAA;IACb,sCAAW,CAAA;AACb,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CACnB,IAAY,EACZ,QAAgB,MAAM,CAAC,MAAM;IAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiC,EAAE,EAAE,CACvD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AAEjF,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAS;IACrC,yDAAyD;IACzD,qFAAqF;IACrF,OAAO,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,aAAa,EAAE,CAAA"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D;;GAEG;AACH,MAAM,CAAN,IAAY,MAIX;AAJD,WAAY,MAAM;IAChB,uCAAW,CAAA;IACX,0CAAa,CAAA;IACb,sCAAW,CAAA;AACb,CAAC,EAJW,MAAM,KAAN,MAAM,QAIjB;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CACnB,IAAY,EACZ,QAAgB,MAAM,CAAC,MAAM;IAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAiC,EAAE,EAAE,CACvD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,CACnD,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AAEjF,4EAA4E;AAC5E,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAAS;IACrC,yDAAyD;IACzD,qFAAqF;IACrF,OAAO,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,aAAa,EAAE,CAAC"} \ No newline at end of file diff --git a/build/src/services/alchemy-service.js b/build/src/services/alchemy-service.js index 73c14ae..9b374b6 100644 --- a/build/src/services/alchemy-service.js +++ b/build/src/services/alchemy-service.js @@ -1,11 +1,12 @@ import { Network, Alchemy, Utils } from 'alchemy-sdk'; import { shortenAddress } from '../utils/index.js'; +import { config } from '../utils/env.js'; const settings = { - apiKey: process.env.ALCHEMY_API_KEY, + apiKey: config.alchemy.apiKey, network: Network.ETH_SEPOLIA, }; const alchemy = new Alchemy(settings); -const DISCORD_CHANNEL_ID = process.env.DISCORD_CHANNEL_ID; +const DISCORD_CHANNEL_ID = config.discord.channelId; export async function getBalance(address) { return alchemy.core.getBalance(address, 'latest'); } diff --git a/build/src/services/alchemy-service.js.map b/build/src/services/alchemy-service.js.map index 73bd078..571e4c1 100644 --- a/build/src/services/alchemy-service.js.map +++ b/build/src/services/alchemy-service.js.map @@ -1 +1 @@ -{"version":3,"file":"alchemy-service.js","sourceRoot":"","sources":["../../../src/services/alchemy-service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"alchemy-service.js","sourceRoot":"","sources":["../../../src/services/alchemy-service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/src/services/discord-service.js b/build/src/services/discord-service.js index 62a5c84..5825122 100644 --- a/build/src/services/discord-service.js +++ b/build/src/services/discord-service.js @@ -1,9 +1,8 @@ -import dotenv from 'dotenv'; import { Utils } from 'alchemy-sdk'; import { Client, Events, GatewayIntentBits } from 'discord.js'; import { getBalance, getNftsForOwner, trackAddress, } from './alchemy-service.js'; import { shortenAddress } from '../utils/index.js'; -dotenv.config(); +import { config } from '../utils/env.js'; const client = new Client({ intents: [ GatewayIntentBits.Guilds, @@ -12,8 +11,8 @@ const client = new Client({ GatewayIntentBits.GuildMembers, ], }); -const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN; -const DISCORD_CHANNEL_ID = process.env.DISCORD_CHANNEL_ID; +const DISCORD_BOT_TOKEN = config.discord.botToken; +const DISCORD_CHANNEL_ID = config.discord.channelId; let trackedAddress = ''; export async function discordEvents() { client.once(Events.ClientReady, (c) => { @@ -50,6 +49,7 @@ export async function discordEvents() { return; } try { + message.channel.send(':hourglass:'); const balance = await getBalance(address); message.channel.send(`💰 Balance for address ${shortenAddress(address)}: ${Utils.formatEther(balance)} ETH`); } diff --git a/build/src/services/discord-service.js.map b/build/src/services/discord-service.js.map index 3961451..dcbf853 100644 --- a/build/src/services/discord-service.js.map +++ b/build/src/services/discord-service.js.map @@ -1 +1 @@ -{"version":3,"file":"discord-service.js","sourceRoot":"","sources":["../../../src/services/discord-service.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"discord-service.js","sourceRoot":"","sources":["../../../src/services/discord-service.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/build/src/utils/env.js b/build/src/utils/env.js new file mode 100644 index 0000000..e48cfe9 --- /dev/null +++ b/build/src/utils/env.js @@ -0,0 +1,22 @@ +import dotenv from 'dotenv'; +dotenv.config(); +const getEnv = (key, defaultValue) => { + const value = process.env[key]; + if (!value) { + if (!defaultValue) { + throw new Error(`No environment variable for ${key} - doesn't have a default fallback value`); + } + return defaultValue; + } + return value; +}; +export const config = { + discord: { + botToken: getEnv('DISCORD_BOT_TOKEN', ''), + channelId: getEnv('DISCORD_CHANNEL_ID', ''), + }, + alchemy: { + apiKey: getEnv('ALCHEMY_API_KEY', ''), + }, +}; +//# sourceMappingURL=env.js.map \ No newline at end of file diff --git a/build/src/utils/env.js.map b/build/src/utils/env.js.map new file mode 100644 index 0000000..18aae7c --- /dev/null +++ b/build/src/utils/env.js.map @@ -0,0 +1 @@ +{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/utils/env.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,EAAE,CAAC;AAgBhB,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,YAAqB,EAAU,EAAE;IAC5D,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,CAAC,YAAY,EAAE;YACjB,MAAM,IAAI,KAAK,CACb,+BAA+B,GAAG,0CAA0C,CAC7E,CAAC;SACH;QACD,OAAO,YAAY,CAAC;KACrB;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,oBAAoB,EAAE,EAAE,CAAC;KAC5C;IACD,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC;KACtC;CACF,CAAC"} \ No newline at end of file diff --git a/build/src/utils/index.js b/build/src/utils/index.js index dcad0b4..18121b0 100644 --- a/build/src/utils/index.js +++ b/build/src/utils/index.js @@ -1,6 +1,6 @@ export function shortenAddress(address) { if (!address) - return ""; - return address.slice(0, 6) + "..." + address.slice(-4); + return ''; + return address.slice(0, 6) + '...' + address.slice(-4); } //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index fbbafdb..83e98e3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,4 +1,4 @@ -import { discordEvents } from "./services/discord-service.js"; +import { discordEvents } from './services/discord-service.js'; /** * Some predefined delay values (in milliseconds). @@ -36,4 +36,4 @@ export async function greeter(name: any) { return await delayedHello(name, Delays.Short); } -discordEvents() \ No newline at end of file +discordEvents(); diff --git a/src/services/alchemy-service.ts b/src/services/alchemy-service.ts index a7a37e3..42958a7 100644 --- a/src/services/alchemy-service.ts +++ b/src/services/alchemy-service.ts @@ -1,15 +1,16 @@ import { Network, Alchemy, Utils } from 'alchemy-sdk'; import { Client } from 'discord.js'; import { shortenAddress } from '../utils/index.js'; +import { config } from '../utils/env.js'; const settings = { - apiKey: process.env.ALCHEMY_API_KEY, + apiKey: config.alchemy.apiKey, network: Network.ETH_SEPOLIA, }; const alchemy = new Alchemy(settings); -const DISCORD_CHANNEL_ID = process.env.DISCORD_CHANNEL_ID; +const DISCORD_CHANNEL_ID = config.discord.channelId; export async function getBalance(address: string) { return alchemy.core.getBalance(address, 'latest'); diff --git a/src/services/discord-service.ts b/src/services/discord-service.ts index 2490e38..b891e23 100644 --- a/src/services/discord-service.ts +++ b/src/services/discord-service.ts @@ -1,4 +1,3 @@ -import dotenv from 'dotenv'; import { Utils } from 'alchemy-sdk'; import { Client, Events, GatewayIntentBits } from 'discord.js'; import { @@ -7,8 +6,7 @@ import { trackAddress, } from './alchemy-service.js'; import { shortenAddress } from '../utils/index.js'; - -dotenv.config(); +import { config } from '../utils/env.js'; const client = new Client({ intents: [ @@ -19,8 +17,8 @@ const client = new Client({ ], }); -const DISCORD_BOT_TOKEN = process.env.DISCORD_BOT_TOKEN; -const DISCORD_CHANNEL_ID = process.env.DISCORD_CHANNEL_ID; +const DISCORD_BOT_TOKEN = config.discord.botToken; +const DISCORD_CHANNEL_ID = config.discord.channelId; let trackedAddress = ''; @@ -58,7 +56,7 @@ export async function discordEvents() { message.channel.send(`🔎 Now tracking address: ${trackedAddress}`); console.log(`Tracking address: ${trackedAddress}`); - trackAddress(address, client) + trackAddress(address, client); } else if (command === '!balance') { const address = args[0]; if (!address) { @@ -68,6 +66,7 @@ export async function discordEvents() { return; } try { + message.channel.send(':hourglass:'); const balance = await getBalance(address); message.channel.send( `💰 Balance for address ${shortenAddress( diff --git a/src/utils/env.ts b/src/utils/env.ts new file mode 100644 index 0000000..1744d3c --- /dev/null +++ b/src/utils/env.ts @@ -0,0 +1,40 @@ +import dotenv from 'dotenv'; + +dotenv.config(); + +export interface DiscordConfig { + botToken: string; + channelId: string; +} + +export interface AlchemyConfig { + apiKey: string; +} + +export interface IConfig { + discord: DiscordConfig; + alchemy: AlchemyConfig; +} + +const getEnv = (key: string, defaultValue?: string): string => { + const value = process.env[key]; + if (!value) { + if (!defaultValue) { + throw new Error( + `No environment variable for ${key} - doesn't have a default fallback value`, + ); + } + return defaultValue; + } + return value; +}; + +export const config: IConfig = { + discord: { + botToken: getEnv('DISCORD_BOT_TOKEN', ''), + channelId: getEnv('DISCORD_CHANNEL_ID', ''), + }, + alchemy: { + apiKey: getEnv('ALCHEMY_API_KEY', ''), + }, +}; diff --git a/src/utils/index.ts b/src/utils/index.ts index 04d6b0f..be98306 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,4 +1,4 @@ export function shortenAddress(address: string) { - if (!address) return ""; - return address.slice(0, 6) + "..." + address.slice(-4); + if (!address) return ''; + return address.slice(0, 6) + '...' + address.slice(-4); }