Compare commits

...

2 Commits

Author SHA1 Message Date
rhearmas 2434b76b31 Add rfa.js 2020-08-15 07:45:54 -04:00
rhearmas b764bc7667 Add rfa, update some more stuff 2020-08-15 07:45:36 -04:00
4 changed files with 226 additions and 17 deletions

View File

@ -20,8 +20,12 @@ exports.run = async (client, message, args) => {
let fetched;
fetched = await chnl.fetchMessages();
await output.edit(`Clearing messages in ${chnl}.`);
chnl.bulkDelete(fetched);
await output.edit(`Messages cleared in ${chnl}.`);
if(fetched) {
chnl.bulkDelete(fetched);
await output.edit(`Messages cleared in ${chnl}.`);
} else {
await output.edit(`No messages found in ${chnl}.`);
}
}
clearLanding();
@ -29,33 +33,27 @@ exports.run = async (client, message, args) => {
.setTitle("Introduction")
.setColor(0x2f3136)
.setDescription(`Welcome to **${guild.name}**! This is a Discord server that I personally run for all my shenanigans. This is the channel where I explain rules and stuff and other stuff.`)
.addField("IMPORTANT DISCLAIMER:", "This list does not constitute the full list of rules. With that in mind, try to use common sense and good judgement for any action you're about to take at all times.")
.addField("Before we go further...","I don't care if you use profanity here, since Discord only allows users who are at least 13 years of age. If you have a problem with this, then this isn't the discord server for you.")
.addField("Before we jump in...", "This list does not constitute the full list of rules. With that in mind, try to use common sense and good judgement for any action you're about to take at all times.\nDiscord's [Community Guidelines](https://discord.com/channels/387727726297088002/743142164564803705) also have some important rules not mentioned here.")
.setThumbnail(guild.iconURL);
const textrules = new Discord.RichEmbed()
.setTitle("Text Channel Rules")
.setColor(0x2f3136)
.addField("Use common sense.","This means that you shouldn't be a jerk to others.")
.addField("No raiding.","Nobody here endorses raiding. Raiding this server or trying to rally other users to help you raid this server or another server is not allowed.")
.addField("Do not attempt to destroy the server.","This includes vandalizing non-spam channels with spam or playing excessively loud music.")
.addField("Abide by Discord's global ruleset.","This means that you should take the time to read the [Discord Terms of Service](https://discordapp.com/terms) and [Community Guidelines](https://discordapp.com/guidelines).")
.addField("Do not attempt to destroy the server.","For example, don't vandalize media channels with spam or try to check your level in the general chat.")
.addField("No discrimination.","This includes disrespecting people because of personal factors such as gender, sexual orientation, mental disabilities, race, age, location of residence, or anything else of the like.")
.addField("Threats towards others are not allowed.","Do not attempt to cause others to feel endangered in this server. We want to provide a safe space for everyone here, so don't ruin it.")
.addField("Abide by Discord's global platform rules.","This means that you should take the time to read the [Discord Terms of Service](https://discordapp.com/terms) and [Community Guidelines](https://discordapp.com/guidelines).")
.addField("Don't complain about your punishments.","They were given for a valid reason. ModMail exists just in case a staff member falsely punishes you.")
.addField("Loopholes aren't a thing, so don't go looking for them.","Don't be a wise-ass and just follow the rules. Don't test your boundaries, being here is a priviledge, not a right.")
.addField("Advertising outside of the advertisement channel is not permitted.","This includes third-party services (that are not related to this Discord) or anything you or others have created, regardless of permission granted. Advertising other Discord servers -- or advertising **anything** in your playing status or through unsolicited DMs -- is strictly forbidden.")
.addField("Loopholes aren't a thing, so don't go looking for them.","Don't be a wise-a## and just follow the rules. Don't test your boundaries; being here is a priviledge, not a right.")
.addField("Advertising outside of the advertisement channel is not permitted.","Things such third-party services that are not related to this Discord or anything you or others have created arne't allowed. Advertising other Discord servers -- or advertising **anything** in your playing status or through unsolicited DMs -- is strictly forbidden.")
.addField("Don't cause beef with other members.","Don't send hate to other people if you see them as a bad person. Tolerate everyone here, even if you despise them, and don't engage in arguments.")
.addField("Do not humiliate other people.","Mentioning previous drama or other situations any person was involved in is included.")
.addField("No excuses for punishment.","The rule nullification system exists for a valid reason. Staff don't care until someone complains. Don't use this system as a way to attempt to circumvent a punishment.")
.addField("Absolutely no NSFW content.","Shocking or graphic content, animal cruelty, and gore are not allowed whatsoever outside of the designated NSFW channels. Breaking this rule will result in a permanent ban on sight.");
const voicerules = new Discord.RichEmbed()
.setTitle("Voice Channel Rules")
.setColor(0x2f3136)
.addField("Most text rules apply in the voice chat.","Don't go crazy because of the channels being different.")
.addField("No loud audio.","Playing loud and/or annoying audio through your microphone or music bots is not allowed.")
.addField("Be responsible.","Everyone in the server holds the right to report users in the voice channels to have them muted as needed.")
.addField("Use common sense.","You can't escape this rule. Please don't ignore it.")
.addField("Limit the usage of voice changers.","Don't fake what you sound like. We prevent discrimination, you're fine.");
.addField("Limit the usage of voice changers.","Don't fake what you sound like. We prevent discrimination, you're fine.")
.addField("Don't blast music to others.","While we can limit which music bots can enter voice channels, we can't automatically stop other members from joining any of these channels with music blasting into their microphone.");
const punishmentsystem = new Discord.RichEmbed()
.setTitle("Punishment System")
.setColor(0x2f3136)
@ -102,7 +100,7 @@ exports.run = async (client, message, args) => {
await output.edit(`Landing has finished building in ${chnl}. This message will be removed in 5 seconds.`).then(output => {
output.delete(5000)
})
.catch(() => console.error("Error while deleting message."));
.catch(() => { });
}
sendLandingEmbeds();
};

View File

@ -0,0 +1,98 @@
const Discord = require("discord.js");
exports.run = async (client, message, args) => {
message.delete();
const output = await message.channel.send("Generating the Guidelines. Reading arguments...");
guild = message.guild;
let chnl = guild.channels.find(c => c.name === 'community-guidelines') || guild.channels.find(c => c.name === 'guidelines');
if(args[0]) {
chnl = args[0].substring("<#".length);
chnl = chnl.substring(chnl.length-1,0);
chnl = guild.channels.find(c => c.id === chnl);
output.edit(`Guidelines channel set to <#${chnl}>.`);
} else {
output.edit(`Arguments provided are invalid or channel was not found; set landing channel to ${chnl}.`);
}
async function clearGuidelinesChannel() {
let fetched;
fetched = await chnl.fetchMessages();
await output.edit(`Clearing messages in ${chnl}...`);
if(fetched) {
chnl.bulkDelete(fetched);
await output.edit(`Messages cleared in ${chnl}.`);
} else {
await output.edit(`No messages found in ${chnl}.`);
}
}
clearGuidelinesChannel();
const intro = new Discord.RichEmbed()
.setTitle("Discord Community Guidelines")
.setColor(0x2f3136)
.setDescription(`We created Discord to help people come together around games. It's been amazing to watch it grow into what it is today - a place where millions of diverse communities exist and people connect with old friends and new. We can't wait to see what's next.\n\nOur community guidelines are meant to explain what is and isnt allowed on Discord, and ensure that everyone has a good experience. If you come across a message that appears to break these rules, please report it to us. We may take a number of steps, including issuing a warning, removing the content, or removing the accounts and/or servers responsible.\n\nThe overwhelming majority of people use Discord responsibly, so these guidelines may seem obvious. Still, we want to be clear about the expectations for our users. Every user of Discord should feel like their voice can be heard, but not at the expense of someone else.`)
const interact = new Discord.RichEmbed()
.setTitle("Here are some rules for interacting with others:")
.setColor(0x2f3136)
.addField("Do not organize, participate in, or encourage harassment of others.","Disagreements happen and are normal, but continuous, repetitive, or severe negative comments may cross the line into harassment and are not okay.")
.addField("Do not organize, promote, or coordinate servers around hate speech.","Its unacceptable to attack a person or a community based on attributes such as their race, ethnicity, national origin, sex, gender, sexual orientation, religious affiliation, or disabilities.")
.addField("Do not make threats of violence or threaten to harm others.","This includes indirect threats, as well as sharing or threatening to share someones private personal information (also known as doxxing).")
.addField("Do not evade user blocks or server bans.","Do not send unwanted, repeated friend requests or messages, especially after theyve made it clear they dont want to talk to you anymore. Do not try to hide your identity in an attempt to contact someone who has blocked you, or otherwise circumvent the tools we have which enable users to protect themselves.")
.addField("Do not send others viruses or malware.","[Also, do not] attempt to phish others, or hack or DDoS them.")
const content = new Discord.RichEmbed()
.setTitle("Here are some rules for content on Discord:")
.setColor(0x2f3136)
.addField("You may not sexualize minors in any way.","This includes sharing content or links which depict minors in a pornographic, sexually suggestive, or violent manner, and includes illustrated or digitally altered pornography that depicts minors (such as lolicon, shotacon, or cub). We report illegal content to the [National Center for Missing and Exploited Children](https://www.missingkids.org/gethelpnow/cybertipline).")
.addField("You may not share sexually explicit content of other people without their consent.","In addition, you cannot share or promote sharing of non-consensual intimate imagery (also known as revenge porn) in an attempt to shame or degrade someone.")
.addField("You may not share content that glorifies or promotes suicide or self-harm.","This includes any encouragement to others to cut themselves, or embrace eating disorders such as anorexia or bulimia.")
.addField("You may not share images of sadistic gore or animal cruelty.","_ _")
.addField("You may not use Discord for the organization, promotion, or support of violent extremism.","_ _")
.addField("You may not operate a server that sells or facilitates the sales of prohibited or potentially dangerous goods.","This includes firearms, ammunition, drugs, and controlled substances.")
.addField("You may not promote, distribute, or provide access to content involving the hacking, cracking, or distribution of pirated software or stolen accounts.","This includes sharing or selling cheats or hacks that may negatively affect others in multiplayer games.")
.addField("In general, you should not promote, encourage or engage in any illegal behavior.","This is very likely to get you kicked off Discord, and may get you reported to law enforcement.");
const respect = new Discord.RichEmbed()
.setTitle("Finally, we ask that you respect Discord itself:")
.setColor(0x2f3136)
.addField("You may not sell your account or your server.","_ _")
.addField("You may not use self-bots or user-bots to access Discord.","_ _")
.addField("You may not share content that violates anyone's intellectual property or other rights.","_ _")
.addField("You may not spam Discord, especially our Customer Support and Trust & Safety teams.","Making false and malicious reports, sending multiple reports about the same issue, or asking a group of users to all report the same content may lead to action being taken on your account.");
const end = new Discord.RichEmbed()
.setTitle("Reporting users who break these Guidelines")
.setColor(0x2f3136)
.setDescription("If you see any activity that violates these guidelines, you can report it to us by filling out [this form](https://dis.gd/request).")
async function sendGuidelineEmbeds() {
await output.edit("Sending intro... *(Embed 1/5)*");
await chnl.send({embed: intro});
await output.edit("Sending interaction rules... *(Embed 2/5)*");
await chnl.send({embed: interact});
await output.edit("Sending content rules... *(Embed 3/5)*");
await chnl.send({embed: content});
await output.edit("Sending Discord's respect rules... *(Embed 4/5)*");
await chnl.send({embed: respect});
await output.edit("Sending ending... *(Embed 5/5)*");
await chnl.send({embed: end});
await output.edit(`Guidelines have been sent in ${chnl}. This message will be removed in 5 seconds.`).then(output => {
output.delete(5000)
})
.catch(() => { });
}
sendGuidelineEmbeds();
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: "Bot Owner"
};
exports.help = {
name: "guidelines",
category: "Channel Building",
description: "Builds the guidelines channel by purging the whole channel and sending embeds. Builds in first channel named **community-guidelines** _or_ **guidelines** if no arguments are provided.",
usage: "guidelines channel"
};

View File

@ -0,0 +1,113 @@
const Discord = require("discord.js");
exports.run = async (client, message, args) => {
message.delete();
const output = await message.channel.send("Generating the landing. Reading arguments...");
guild = message.guild;
let chnl = guild.channels.find(c => c.name === 'landing');
if(args[0]) {
chnl = args[0].substring("<#".length);
chnl = chnl.substring(chnl.length-1,0);
chnl = guild.channels.find(c => c.id === chnl);
output.edit(`Landing channel set to <#${chnl}>.`);
} else {
output.edit(`Arguments provided are invalid or channel was not found; set landing channel to ${chnl}.`);
}
async function clearLanding() {
let fetched;
fetched = await chnl.fetchMessages();
await output.edit(`Clearing messages in ${chnl}.`);
if(fetched) {
chnl.bulkDelete(fetched);
await output.edit(`Messages cleared in ${chnl}.`);
} else {
await output.edit(`No messages found in ${chnl}.`);
}
}
clearLanding();
const intro = new Discord.RichEmbed()
.setTitle("Introduction")
.setColor(0x2f3136)
.setDescription(`Whether you're nominating yourself or somebody else, or simply reading what people say here, we welcome you warmly to the Requests for Adminship category. This category allows eligible users to nominate themselves for a staff position, [similar to how Wikipedia handles their admins](https://en.wikipedia.org/wiki/Wikipedia:Requests_for_adminship).`)
.addField("General standards", "On a normal basis, users who are of at least level 25 or above -- also known as being \"confirmed\" (users with the \`confirmed\` role are also allowed to apply but walk on eggshells), are at least 15 years of age and are using an account they've had for at least 6 months. The user being nominated must meet _all_ of these requirements, regardless of whether the nomination is from themselves or another user.")
.addField("_ _","Without many positive contributions to the community, however, it is very unlikely that one may pass. People will look for a variety of factors in a candidate, and the discussion can be intense.");
const process = new Discord.RichEmbed()
.setTitle("Request for Admin Procedure")
.setColor(0x2f3136)
.addField("Publish.","A user can request to receive admin by simply posting their submission in the designated channel.")
.addField("Discuss.","An ELITE will review the basic information, and then will make a channel specifically for the request, followed by a mention to the subject of the channel. All opinions and additional questions are asked in this channel, alongside discussion of what the user can and can't do.\nA pinned message will be placed to allow for voting on the user with reactions; a thumbs up (`:thumbsup:`) for yes, a thumbs down (`:thumbsdown:`) for no, or a question mark (`:grey_question:`) for neutral.")
.addField("Ask.","The user may have answered the base 3 questions, but they must also answer all questions by **quoting the original message, and keep the mention intact when the candidate responds to the query.** Elites will be requested to pin all answered questions to the channel for easy access. These questions can include \"what would you do in situation X?\" or \"what can you not do with discord that may hinder you?\". Keep the questions mature and civil; immaturity will result in mutes, kicks or bans.")
.addField("Decide.","Once you think you've learned enough, head to the pinned messages and jump to the decision message. React to **__ONE__** reaction on the message; multiple will make the reviewer assume you are unsure. You can change your votes at any time; be sure to keep it at one reaction only.")
.addField("Closure.","After around one week of the RfA being open, the Elites will close the request and tally the votes:\n - Users with at least 75% support will always pass\n - Users with support varying from 65% to 75% will be left with the Elites deciding\n - Users with **at most** 65% will most likely be declined\n\nIf your nomination fails, then please wait for a reasonable period of time before renominating yourself or accepting another nomination. Some candidates have tried again and succeeded within three months, but many people prefer to wait considerably longer before reapplying.");
const nomination = new Discord.RichEmbed()
.setTitle("Nomating users or yourself")
.setColor(0x2f3136)
.addField("Before you start,","If you're nominating someone else, make sure they're okay with it __before__ you make your nomination. If you're going with self-nomination, __WAIT__. Be sure you read up on the common advice for candidates before proceeding.")
.addField("","");
const questions = new Discord.RichEmbed()
.setTitle("Candidate Questions")
.setColor(0x2f3136)
.setDescription("Please copy this field below and answer everything accordingly in Pastebin. Then, send the link here.")
.addField("Thank you for offering to serve as a Wizard's Den staff member. Please answer these questions thorougly to help guide the readers:","1.) What administrative work do you plan to participate in?\n2.) What are your best contributions to the community?\n3.) Have any other users caused with stress, or has there been any conflict involving other users? How have you dealt with it so far and how will you deal with it in the future?\n4.) Have you held any other staff positions? If so, what roles did you have, and in what communities? Are you still in that position now, or are you in a higher one?\n5.) Have you been banned from any other Discord servers before? If so, from where, and why?");
const nullify = new Discord.RichEmbed()
.setTitle("Rule Nullification System")
.setColor(0x2f3136)
.setDescription("This is a system about how to actually be punished for breaking rules, and how to avoid it if what you want to do is somehow \"important\". This is **especially important** for staff members.")
.addField("The System","When a user breaks a rule, as long as everybody within the constituting area is okay with that rule being broken, then **most** rules *(Embed keyword, most)* broken are nullified until a complaining or reporting individual, or group of individuals, is present.")
.addField("HOWEVER...","This does NOT mean that you can break the rules first and ask questions later. Use this additional information at your own discretion, but if you misuse it or abuse it, the punishment is your own fault.\n_ _\nThere are also a few exceptions to this system. Those exceptions are as follows:\n• Abide by [Discord's ToS](https://discordapp.com/terms) and [Community Guidelines](https://discordapp.com/terms)\n• No discrimination\n• No NSFW outside of designated channels\n_ _\n**__Staff members still hold the right to punish you, even if nobody complains about something!__**\nBe wary of what you do, as all actions have consequences.")
const confirmation = new Discord.RichEmbed()
.setTitle("User confirmation and autoconfirmation")
.setColor(0x2f3136)
.addField("Overview","User confirmation allows for full functionality in the majority of channels.")
.addField("What's so special about being a confirmed user?","Being a confirmed user shows that you're special. You get special permissions in text channels. These permissions include:\n• Image posting in regular channels\n• Adding reactions to messages\n• Ability to use external emotes\n• Unlocked access to posting in self-advertisement channels")
.addField("How to be confirmed?","There are two methods to being a confirmed user:\n• Manual confirmation by receiving the **confirmed** role\n• Achieving level **25**")
.addField("Method 1: Manual confirmation","Manually confirmed users are able to 100% bypass the autoconfirmation process, and immediately receive the abilities a confirmed user has. The **board of commissioners** have the ability to grant any user the `confirmed` role.")
.addField("Method 2: Autoconfirmation","Being autoconfirmed means that you're active enough to receive special permissions. This role is called `mayhaps`.\nYou will be granted this role __automatically__ once you reach level **25**.")
const links = new Discord.RichEmbed()
.setTitle("Important Links")
.setColor(0x2f3136)
.addField("Discord Server Invite Link","Use [this invite](https://discord.gg/4zJ8xqV) to invite others.")
.addField("Member Survey","After being here for a while, feel free to fill out [this form](https://goo.gl/forms/Gwa62lcu4zC7B8992).")
.addField("Carrd","Rhearmas has an official website that shows a lot of the stuff about her. [Click here](https://rhearmas.carrd.co) to take a look!");
async function sendLandingEmbeds() {
await output.edit("Sending intro... *(Embed 1/7)*");
await chnl.send({embed: intro});
await output.edit("Sending text rules... *(Embed 2/7)*");
await chnl.send({embed: process});
await output.edit("Sending voice rules... *(Embed 3/7)*");
await chnl.send({embed: nomination});
await output.edit("Sending punishment system... *(Embed 4/7)*");
await chnl.send({embed: questions});
await output.edit("Sending punishment nullification system... *(Embed 5/7)*");
await chnl.send({embed: nullify});
await output.edit("Sending confirmation system... *(Embed 6/7)*");
await chnl.send({embed: confirmation});
await output.edit("Sending punishment nullification system... *(Embed 7/7)*");
await chnl.send({embed: links});
await chnl.send("*If you can't copy the invite link, here's the raw URL: https://discord.gg/4zJ8xqV*");
await output.edit(`Landing has finished building in ${chnl}. This message will be removed in 5 seconds.`).then(output => {
output.delete(5000)
})
.catch(() => { });
}
sendLandingEmbeds();
};
exports.conf = {
enabled: true,
guildOnly: false,
aliases: [],
permLevel: "Bot Owner"
};
exports.help = {
name: "rfa",
category: "Channel Building",
description: "Builds the Requests for Adminship channel by purging the whole channel and sending embeds. Builds in first channel named **rfa-info** if no arguments are provided.",
usage: "rfa channel"
};

View File

@ -4,7 +4,7 @@ const stripIndents = require('common-tags').stripIndents;
exports.run = async (client, message, args, level) => {
message.delete();
let commands;
let commands = client.commands;
let title = "Categories";
if(args[0]) {