UNPKG

la-cosa-nostra

Version:

A Mafia bot designed to run in Discord - beware the traitors and the lies!

85 lines (57 loc) 2.44 kB
// TODO: rewrite and assign by player instance module.exports = async function (client, config, roles) { // Create private channels [A-Z]; mafia chat-log var category = config["categories"]["private"]; // Bug with discord.js var cat_channel = client.channels.find(x => x.name === category && x.type === "category"); // Check if category configuration is correct if (cat_channel === null) { var err = "Private category is invalid or non-existent!"; throw new Error(err); }; var everyone = cat_channel.guild.roles.find(x => x.name === "@everyone"); var spectator = cat_channel.guild.roles.find(x => x.name === config["permissions"]["spectator"]); var admin = cat_channel.guild.roles.find(x => x.name === config["permissions"]["admin"]); var guild = client.guilds.get(config["server-id"]); // Create resolvables so channel creation is quicker var resolvables = new Array(); // Create A-Z chats for (var i = 0; i < roles.length; i++) { resolvables.push(assignChannel(roles[i])); // Short hiatus to prevent ENOTFOUND connection error // Critical, apparently await new Promise(function(resolve, reject) { setTimeout(function () { resolve(); }, 500); }); }; // If mafia has rendezvous chat if (config["game"]["mafia"]["has-chat"]) { var mafia = createPrivateChannel(config["game"]["mafia"]["chat-name"]); } else { var mafia = null; }; return await Promise.all([mafia, ...resolvables]); async function assignChannel (role) { var channel = await createPrivateChannel(role.alphabet); role.assignChannel(channel); return channel; }; async function createPrivateChannel (name, assign_permissions_async=false) { var channel = await guild.createChannel(name, {type: "text", permissionOverwrites: [{id: guild.id, deny: ["READ_MESSAGES"]}], parent: cat_channel}); if (assign_permissions_async) { assignPermissionsAsync(); } else { await assignPermissionsAsync(); }; return channel; async function assignPermissionsAsync () { var read_perms = config["base-perms"]["read"]; var manage_perms = config["base-perms"]["manage"]; //await channel.overwritePermissions(everyone, {READ_MESSAGES: false, SEND_MESSAGES: false}); await channel.overwritePermissions(spectator, read_perms); await channel.overwritePermissions(admin, manage_perms); }; }; };