UserUtil: Add getPatreonPerks helper
and patreon debug command.
This commit is contained in:
@@ -2,6 +2,7 @@ const { SlashCommandBuilder, ComponentType, ActionRowBuilder, ButtonBuilder, But
|
||||
const { customAlphabet } = require("nanoid");
|
||||
const { Card, User } = require("../models");
|
||||
const { UserUtils, CardUtils, GeneralUtils } = require("../util");
|
||||
const { PATREON } = require("../config/constants");
|
||||
const stores = require("../stores");
|
||||
require('dotenv').config();
|
||||
|
||||
@@ -26,6 +27,7 @@ module.exports = {
|
||||
{ name: 'add_secondary', value: 'add_secondary' },
|
||||
{ name: 'toggle_maintenance', value: 'toggle_maintenance' },
|
||||
{ name: 'store', value: 'store' },
|
||||
{ name: 'patreon', value: 'patreon' }
|
||||
)
|
||||
)
|
||||
.addStringOption((option) =>
|
||||
@@ -152,6 +154,15 @@ module.exports = {
|
||||
ephemeral: false
|
||||
});
|
||||
break;
|
||||
case "patreon":
|
||||
interaction.editReply({
|
||||
content: `${JSON.stringify(user)}`,
|
||||
ephemeral: false
|
||||
});
|
||||
|
||||
let patreon = await UserUtils.getPatreonPerks(interaction.client, interaction.member);
|
||||
interaction.channel.send(JSON.stringify(patreon));
|
||||
break;
|
||||
default:
|
||||
interaction.editReply({
|
||||
content: `Your permission level is ${await UserUtils.getPermissionLevel(interaction.member)}`,
|
||||
|
||||
@@ -63,6 +63,7 @@ const QUALITY_VALUES = {
|
||||
}
|
||||
|
||||
const PATREON = {
|
||||
roleServer : '441300798819794944',
|
||||
tiers : {
|
||||
1 : {
|
||||
modifiers: {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
const { User, Guild } = require("../models");
|
||||
const GeneralUtils = require("./general");
|
||||
const { PATREON } = require("../config/constants");
|
||||
|
||||
module.exports = {
|
||||
name: "UserUtils",
|
||||
@@ -102,5 +103,31 @@ module.exports = {
|
||||
|
||||
//Regular User
|
||||
return 0;
|
||||
},
|
||||
|
||||
getPatreonPerks: async function(client, member) {
|
||||
/** Returns the users highest Patreon tier and its associated perks
|
||||
* client: Discord client instance available via interaction.client
|
||||
* member: Discord member instance
|
||||
*
|
||||
* returns
|
||||
* tier: 0 if not subscribed
|
||||
* 1-n as per role mapping in the DB (e.g. {"1083018874263453868":1,"1083018984921759744":2})
|
||||
* perks: modifiers associated with the tier
|
||||
*/
|
||||
|
||||
let patreonRoles = await GeneralUtils.getBotProperty("patreonTierRoles");
|
||||
patreonRoles = JSON.parse(patreonRoles);
|
||||
const guild = await client.guilds.fetch(PATREON.roleServer);
|
||||
const guildMember = await guild.members.fetch(member.id);
|
||||
let highestRole = 0;
|
||||
for (const [role, tier] of Object.entries(patreonRoles)) {
|
||||
const matchedRole = guildMember.roles.cache.get(role);
|
||||
if(matchedRole) {
|
||||
highestRole = Math.max(highestRole, tier);
|
||||
}
|
||||
}
|
||||
let perks = PATREON.tiers[highestRole];
|
||||
return { "tier": highestRole, "perks": perks };
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user