UNPKG

la-cosa-nostra

Version:

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

87 lines (58 loc) 2.87 kB
var Discord = require("discord.js"); var pinMessage = require("../executable_misc/pinMessage.js"); module.exports = async function (player, stagger=400) { var client = player.game.client; var config = player.game.config; var flavour = player.game.getGameFlavour() || new Object(); var flavours = flavour.flavours || new Object(); var flavour_role = flavours[player.flavour_role] || new Object(); var flavour_info = flavour.info || {"show-role-equivalent": false, "show-vanilla-banner": true}; // Staggering prevents overload await new Promise(function(resolve, reject) { setTimeout(function () { resolve(); }, Math.random() * stagger*player.game.players.length); }); var role = player.role; var guild = client.guilds.get(config["server-id"]); var channel = guild.channels.get(player.channel.id); if (flavour_role.banner && flavour.assets[flavour_role.banner]) { // Flavour role card available var attachment = new Discord.Attachment(flavour.assets[flavour_role.banner], "role_card.png"); // Post var message = await channel.send(undefined, attachment); await pinMessage(message); }; if (role.role_card !== undefined && flavour_info["show-vanilla-banner"]) { // Role card available var attachment = new Discord.Attachment(await role.role_card, "role_card.png"); // Post var message = await channel.send(undefined, attachment); await pinMessage(message); }; var send = "**Your role:** {;role}{;true_role}\n\n**Alignment:** {;alignment}\n\n```fix\n{;description}```\n<@{;player_id}>"; send = send.replace(/{;role}/g, cpl(flavour_role["name"] || role["role-name"])); if (flavour_info["show-role-category"] === false) { send = send.replace(/{;alignment}/g, cpl(role["alignment"])); } else { send = send.replace(/{;alignment}/g, cpl(role["alignment"] + "-" + cpl(role["class"]))); }; send = send.replace(/{;description}/g, flavour_role["secondary-description"] || flavour_role["description"] || role["description"]); send = send.replace(/{;player_id}/g, player.id); if (flavour && flavour_info["show-role-equivalent"] && flavour_role["name"] !== role["role-name"]) { send = send.replace(/{;true_role}/g, "\n\n**Vanilla role equivalent:** " + role["role-name"]); } else { send = send.replace(/{;true_role}/g, ""); }; var message = await channel.send(send); await pinMessage(message); var start_message = await channel.send("~~ ~~ **" + player.game.getFormattedDay() + "** [*game start*]"); await pinMessage(start_message); for (var i = 0; i < player.intro_messages.length; i++) { await channel.send(player.intro_messages[i]); }; player.intro_messages = new Array(); }; function cpl (string) { return string.charAt(0).toUpperCase() + string.slice(1); };