This repository has been archived on 2026-03-12. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
cordelia-taryne/src/utils/isSubscribed.ts
T
naomi 61f4fa05c6
Node.js CI / Lint and Test (push) Successful in 1m4s
Code Analysis / SonarQube (push) Successful in 1m19s
fix: correct sku
2025-04-09 09:37:42 -07:00

41 lines
1.2 KiB
TypeScript

/**
* @copyright nhcarrigan
* @license Naomi's Public License
* @author Naomi Carrigan
*/
import {
ActionRowBuilder,
ButtonBuilder,
ButtonStyle,
type ChatInputCommandInteraction,
} from "discord.js";
/**
* Checks if a user has an active entitlement (subscription) for the bot.
* If they do not, it responds to the interaction with a button to subscribe.
* @param interaction -- The interaction payload from Discord.
* @returns A boolean indicating whether the user is subscribed.
*/
export const isSubscribed = async(
interaction: ChatInputCommandInteraction,
): Promise<boolean> => {
const isEntitled = interaction.entitlements.find((entitlement) => {
return entitlement.userId === interaction.user.id && entitlement.isActive();
});
if (!isEntitled && interaction.user.id !== "465650873650118659") {
const subscribeButton = new ButtonBuilder().
setStyle(ButtonStyle.Premium).
setSKUId("1338672773261951026");
const row = new ActionRowBuilder<ButtonBuilder>().addComponents(
subscribeButton,
);
await interaction.editReply({
components: [ row ],
content: "You must be subscribed to use this feature.",
});
return false;
}
return true;
};