From d36f9eaa986ae26cbcda82d995a6adc91dfb0b88 Mon Sep 17 00:00:00 2001 From: Jonathan Barrow Date: Thu, 27 Oct 2022 06:05:49 -0400 Subject: [PATCH] Added admin email notifications to tier system --- example.config.json | 3 ++- src/schema/pnid.js | 1 + src/util.js | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) diff --git a/example.config.json b/example.config.json index 5edbc24..464319c 100644 --- a/example.config.json +++ b/example.config.json @@ -16,7 +16,8 @@ "stripe": { "goal_cents": 300000, "secret_key": "secret_key", - "webhook_secret": "webhook_secret" + "webhook_secret": "webhook_secret", + "notification_emails": [] }, "database": { "account": { diff --git a/src/schema/pnid.js b/src/schema/pnid.js index deabeea..a3f023d 100644 --- a/src/schema/pnid.js +++ b/src/schema/pnid.js @@ -8,6 +8,7 @@ const PNIDSchema = new Schema({ }, server_access_level: String, access_level: Number, + username: String, connections: { discord: { id: String diff --git a/src/util.js b/src/util.js index a5a9bbf..4abafc6 100644 --- a/src/util.js +++ b/src/util.js @@ -400,6 +400,19 @@ async function handleStripeEvent(event) { assignDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { logger.error(`Error assigning user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); + + for (const email of config.stripe.notification_emails) { + // * Send notification emails for new sub + try { + await mailer.sendMail({ + to: email, + subject: `[Pretendo] - New ${product.name} subscription`, + text: `${pnid.get('username')} just became a ${product.name} tier subscriber` + }); + } catch (error) { + logger.error(`Error sending notification email | ${email} | - ${error.message}`); + } + } } if (subscription.status === 'canceled') { @@ -416,6 +429,19 @@ async function handleStripeEvent(event) { removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); + + for (const email of config.stripe.notification_emails) { + // * Send notification emails for new sub + try { + await mailer.sendMail({ + to: email, + subject: `[Pretendo] - Canceled ${product.name} subscription`, + text: `${pnid.get('username')} just canceled their ${product.name} tier subscription` + }); + } catch (error) { + logger.error(`Error sending notification email | ${email} | - ${error.message}`); + } + } } if (subscription.status === 'unpaid') { @@ -432,6 +458,19 @@ async function handleStripeEvent(event) { removeDiscordMemberSupporterRole(discordId, product.metadata.discord_role_id).catch(error => { logger.error(`Error removing user Discord supporter role | ${customer.id}, ${discordId}, ${pid}, ${product.metadata.discord_role_id} | - ${error.message}`); }); + + for (const email of config.stripe.notification_emails) { + // * Send notification emails for new sub + try { + await mailer.sendMail({ + to: email, + subject: `[Pretendo] - Removed ${product.name} subscription`, + text: `${pnid.get('username')}'s ${product.name} tier subscription has been canceled due to non payment` + }); + } catch (error) { + logger.error(`Error sending notification email | ${email} | - ${error.message}`); + } + } } } }