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
JavaScript
;
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 };
});
}