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 { customAlphabet } = require("nanoid");
|
||||||
const { Card, User } = require("../models");
|
const { Card, User } = require("../models");
|
||||||
const { UserUtils, CardUtils, GeneralUtils } = require("../util");
|
const { UserUtils, CardUtils, GeneralUtils } = require("../util");
|
||||||
|
const { PATREON } = require("../config/constants");
|
||||||
const stores = require("../stores");
|
const stores = require("../stores");
|
||||||
require('dotenv').config();
|
require('dotenv').config();
|
||||||
|
|
||||||
@@ -26,6 +27,7 @@ module.exports = {
|
|||||||
{ name: 'add_secondary', value: 'add_secondary' },
|
{ name: 'add_secondary', value: 'add_secondary' },
|
||||||
{ name: 'toggle_maintenance', value: 'toggle_maintenance' },
|
{ name: 'toggle_maintenance', value: 'toggle_maintenance' },
|
||||||
{ name: 'store', value: 'store' },
|
{ name: 'store', value: 'store' },
|
||||||
|
{ name: 'patreon', value: 'patreon' }
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
.addStringOption((option) =>
|
.addStringOption((option) =>
|
||||||
@@ -152,6 +154,15 @@ module.exports = {
|
|||||||
ephemeral: false
|
ephemeral: false
|
||||||
});
|
});
|
||||||
break;
|
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:
|
default:
|
||||||
interaction.editReply({
|
interaction.editReply({
|
||||||
content: `Your permission level is ${await UserUtils.getPermissionLevel(interaction.member)}`,
|
content: `Your permission level is ${await UserUtils.getPermissionLevel(interaction.member)}`,
|
||||||
|
|||||||
@@ -63,7 +63,8 @@ const QUALITY_VALUES = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const PATREON = {
|
const PATREON = {
|
||||||
tiers: {
|
roleServer : '441300798819794944',
|
||||||
|
tiers : {
|
||||||
1 : {
|
1 : {
|
||||||
modifiers: {
|
modifiers: {
|
||||||
drops: 1,
|
drops: 1,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
const { User, Guild } = require("../models");
|
const { User, Guild } = require("../models");
|
||||||
const GeneralUtils = require("./general");
|
const GeneralUtils = require("./general");
|
||||||
|
const { PATREON } = require("../config/constants");
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "UserUtils",
|
name: "UserUtils",
|
||||||
@@ -102,5 +103,31 @@ module.exports = {
|
|||||||
|
|
||||||
//Regular User
|
//Regular User
|
||||||
return 0;
|
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