UNPKG

better-giveaways

Version:

A modern, feature-rich Discord giveaway manager with TypeScript support, flexible storage adapters, and comprehensive event system

56 lines (55 loc) 2.5 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkRequirements = checkRequirements; const i18n_1 = require("./i18n"); function checkRequirements(user, member, requirements) { return __awaiter(this, void 0, void 0, function* () { if (!requirements) return { passed: true }; if (requirements.requiredRoles) { const hasRoles = requirements.requiredRoles.every((roleId) => member.roles.cache.has(roleId)); if (!hasRoles) return { passed: false, reason: `${(0, i18n_1.t)("you_role")}: ${requirements.requiredRoles .map((id) => `<@&${id}>`) .join(", ")}`, }; } if (requirements.accountAgeMin) { if (user.createdTimestamp > requirements.accountAgeMin) { return { passed: false, reason: `${(0, i18n_1.t)("you_account")} <t:${Math.floor(requirements.accountAgeMin / 1000)}:R>`, }; } } if (requirements.joinedServerBefore) { if (member.joinedTimestamp === null || member.joinedTimestamp > requirements.joinedServerBefore) return { passed: false, reason: `${(0, i18n_1.t)("you_member")} <t:${Math.floor(requirements.joinedServerBefore / 1000)}:D>`, }; } if (requirements.custom) { const custom = yield requirements.custom(user.id); if (!custom.passed) { return { passed: false, reason: custom.reason, }; } } return { passed: true }; }); }