mirror of
https://github.com/ION606/selmerBot.git
synced 2026-05-14 21:26:54 +00:00
Added moderation commands
This commit is contained in:
@@ -0,0 +1,137 @@
|
|||||||
|
//@ts-check
|
||||||
|
const { log, SEVCODES } = require('../log.js');
|
||||||
|
const { checkRole } = require('./verify.js');
|
||||||
|
|
||||||
|
|
||||||
|
function kick(guild, user) {
|
||||||
|
guild.members.kick(user);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
async function toggle_ban(guild, message, args, ban, reason) {
|
||||||
|
var user = args[0];
|
||||||
|
let i = 0;
|
||||||
|
while (user.indexOf('#') == -1) {
|
||||||
|
user += args[i];
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ban) {
|
||||||
|
guild.members.ban(user);
|
||||||
|
} else {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
message.guild.bans.fetch().then((users) => {
|
||||||
|
const userObj = users.filter((u) => {
|
||||||
|
return (`${u.user.username}#${u.user.discriminator}` == user);
|
||||||
|
}).first();
|
||||||
|
|
||||||
|
if (userObj && userObj.user) {
|
||||||
|
guild.members.unban(userObj.user.id, reason).then(() => {
|
||||||
|
resolve(userObj.user);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
reject("This user is not in the server!");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
// //Check if the user is banned or not
|
||||||
|
// message.guild.invites.fetch().then((invites) => {
|
||||||
|
// const u = guild.members.cache.get(id);
|
||||||
|
// u.send(`You have been unbanned from ${guild.name}, you can rejoin using the following link!\nhttps://discord.gg/${invites.first().code}`);
|
||||||
|
// });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function toggle_mute(bot, guild, command, message, user, reason, mute) {
|
||||||
|
const mutedRole = guild.roles.cache.find((role) => role.name.toLowerCase() === 'muted');
|
||||||
|
const guser = guild.members.cache.get(user.id);
|
||||||
|
// if there is no `Muted` role, send an error
|
||||||
|
if (!mutedRole) { return message.channel.send('There is no "muted" role on this server. Please create one then try again'); }
|
||||||
|
|
||||||
|
if (mute) {
|
||||||
|
if (guser.roles.cache.get(mutedRole.id) == undefined) {
|
||||||
|
guser.roles.add(mutedRole);
|
||||||
|
log(bot, message, command, user, reason, SEVCODES.low);
|
||||||
|
} else { message.reply("This user is already muted!"); }
|
||||||
|
} else {
|
||||||
|
if (guser.roles.cache.get(mutedRole.id) != undefined) {
|
||||||
|
guser.roles.remove(mutedRole);
|
||||||
|
log(bot, message, command, user, reason, SEVCODES.none);
|
||||||
|
} else { message.reply("This user is not muted!"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
NOTE: use the following function for a "time out" type thing?
|
||||||
|
setTimeout(() => {
|
||||||
|
target.roles.remove(mutedRole); // remove the role
|
||||||
|
}, <time>)
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function timeOut(bot, user, message, args, command, reason) {
|
||||||
|
|
||||||
|
let num = Number(args[1]);
|
||||||
|
if (!args[1] && !Number.isSafeInteger(num)) { return message.reply(`Please use the following format ${bot.repfix}timeout <user> <amount of time> [*hours* **or** *minutes (default)*]`)}
|
||||||
|
let ms = num * 60 * 1000;
|
||||||
|
let timeAsSt = '';
|
||||||
|
|
||||||
|
if (args[2] == 'hours') { ms *= 60; timeAsSt = `${args[1]} hours`; }
|
||||||
|
else { timeAsSt = `${args[2]} minutes`; }
|
||||||
|
|
||||||
|
user.timeout(ms, reason);
|
||||||
|
|
||||||
|
log(bot, message, command, user, reason, timeAsSt);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function moderation_handler(bot, message, args, command) {
|
||||||
|
const guild = message.guild;
|
||||||
|
|
||||||
|
//Verify
|
||||||
|
if (!checkRole(bot, guild, message.author.id)) { return message.reply('Insufficient Permission!'); }
|
||||||
|
|
||||||
|
let mentioned = message.mentions.users.first();
|
||||||
|
if (mentioned && mentioned.id == message.author.id) { return message.reply(`You can't ${command} yourself!`); }
|
||||||
|
|
||||||
|
const reason = args.slice(1).join(' ');
|
||||||
|
|
||||||
|
if (message.mentions.members.first() && (message.mentions.members.first().roles.highest.position > message.guild.members.resolve(bot.user).roles.highest.position)) {
|
||||||
|
return message.reply("I'm not high enough in the role hierarchy to do that!\n_To raise my place, go to **Server Settings -> Roles** then drag me up!_");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (command != 'unban' && !mentioned || !reason) { return message.channel.send(`Please use the following format: _!<command> <user> <reason>`); }
|
||||||
|
if (command == 'unban' && !args[0] && !reason) { return message.channel.send("Please use the following format: _!unban <user_tag>#<user_discriminator> <reason>\nExample: _!unban John#1122_"); }
|
||||||
|
// if (command == 'ban' && guild.members.cache.get(mentioned.id).bannable) { message.reply("This user is not bannable!"); } //Broken
|
||||||
|
// if (command == 'ban' && !message.guild.members.cache.get(mentioned.id)) { message.reply("This user is not in the server"); }
|
||||||
|
|
||||||
|
switch (command) {
|
||||||
|
case 'kick': kick(guild, mentioned);
|
||||||
|
log(bot, message, command, mentioned, reason, SEVCODES.medium);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'ban': toggle_ban(guild, message, mentioned, true, reason);
|
||||||
|
log(bot, message, command, mentioned, reason, SEVCODES.high);
|
||||||
|
break;
|
||||||
|
|
||||||
|
//Leave the then() catch() thing, it needs to be async
|
||||||
|
case 'unban': toggle_ban(guild, message, args, false, reason).then((user) => { log(bot, message, command, user, reason, SEVCODES.none)}).catch((note) => { message.reply(note); });
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'mute': toggle_mute(bot, guild, command, message, mentioned, reason, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'unmute': toggle_mute(bot, guild, command, message, mentioned, reason, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
// case 'timeout': timeOut(bot, mentioned, message, args, command, reason);
|
||||||
|
// shouldIlog = false;
|
||||||
|
// break;
|
||||||
|
|
||||||
|
default: console.log(`ERROR! Moderation Command "${command}" has somehow been used!`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { moderation_handler }
|
||||||
+43
-2
@@ -15,7 +15,7 @@ async function execute(bot, message, args, command, Discord, mongouri, items, xp
|
|||||||
const owner = message.guild.members.cache.get(message.guild.ownerId);
|
const owner = message.guild.members.cache.get(message.guild.ownerId);
|
||||||
|
|
||||||
if (message.author.id != message.guild.ownerId) {
|
if (message.author.id != message.guild.ownerId) {
|
||||||
return message.reply('Only the server owner can do this!')
|
return message.reply('Only the server owner can do this!');
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
@@ -37,11 +37,16 @@ async function execute(bot, message, args, command, Discord, mongouri, items, xp
|
|||||||
//Chose the appropriate command
|
//Chose the appropriate command
|
||||||
command = args[0];
|
command = args[0];
|
||||||
|
|
||||||
if (command == 'welcome_channel') {
|
if (!command) {
|
||||||
|
message.channel.send('Please use the following format _!setup help <welcome, logs>_');
|
||||||
|
} else if (command == 'welcome_channel') {
|
||||||
if (args.length != 2) { return message.reply('The command format is _!setup welcome_channel <channel name>_'); }
|
if (args.length != 2) { return message.reply('The command format is _!setup welcome_channel <channel name>_'); }
|
||||||
// setWelcomeChannel(dbo, message, args[1]);
|
// setWelcomeChannel(dbo, message, args[1]);
|
||||||
const channel = message.guild.channels.cache.find(ch => ch.name === args[1]);
|
const channel = message.guild.channels.cache.find(ch => ch.name === args[1]);
|
||||||
|
if (!channel) { return message.reply('The specified channel does not exist!'); }
|
||||||
|
|
||||||
dbo.updateOne({welcomechannel: {$exists: true}}, {$set: {welcomechannel: `${channel.id}`}});
|
dbo.updateOne({welcomechannel: {$exists: true}}, {$set: {welcomechannel: `${channel.id}`}});
|
||||||
|
message.reply(`Set ${channel} as the new welcome channel`)
|
||||||
} else if (command == 'welcome_message') {
|
} else if (command == 'welcome_message') {
|
||||||
if (args.length < 2) { return message.reply('The command format is _!setup welcome\\_message_\nUse _{sn}_ to insert the server name, _{un}_ to insert the user name, and _{ut}_ to insert the user tag\nExample: _!setup welcome\\_message Welcome to {sn} Sir {un}#{ut}_'); }
|
if (args.length < 2) { return message.reply('The command format is _!setup welcome\\_message_\nUse _{sn}_ to insert the server name, _{un}_ to insert the user name, and _{ut}_ to insert the user tag\nExample: _!setup welcome\\_message Welcome to {sn} Sir {un}#{ut}_'); }
|
||||||
let msg = "";
|
let msg = "";
|
||||||
@@ -51,6 +56,42 @@ async function execute(bot, message, args, command, Discord, mongouri, items, xp
|
|||||||
|
|
||||||
if (msg.length > 30) { return message.reply('Please specify a welcome message under 30 characters!'); }
|
if (msg.length > 30) { return message.reply('Please specify a welcome message under 30 characters!'); }
|
||||||
dbo.updateOne({welcomemessage: {$exists: true}}, {$set: {welcomemessage: msg}})
|
dbo.updateOne({welcomemessage: {$exists: true}}, {$set: {welcomemessage: msg}})
|
||||||
|
} else if (command == 'keep_logs') {
|
||||||
|
if (args.length != 2) { return message.reply('Please specify a parameter\nExample: _!setup keep\\_logs true'); }
|
||||||
|
|
||||||
|
let keeplogs = false;
|
||||||
|
if (args[1] == 'true') { keeplogs = true; }
|
||||||
|
|
||||||
|
dbo.updateOne({ _id: 'LOG'}, {$set: {keepLogs: keeplogs}});
|
||||||
|
|
||||||
|
message.reply(`Toggled log keeping to ${keeplogs}. Please use _!setup log_channel_ to choose the log channel`);
|
||||||
|
} else if (command == 'log_channel') {
|
||||||
|
if (args.length != 2) { return message.reply('Please specify a parameter\nExample: _!setup log\\_channel true_'); }
|
||||||
|
|
||||||
|
const channel = message.guild.channels.cache.find(ch => ch.name === args[1]);
|
||||||
|
if (!channel) { return message.reply('The specified channel does not exist!'); }
|
||||||
|
|
||||||
|
dbo.updateOne({_id: 'LOG'}, {$set: {logchannel: `${channel.id}`}});
|
||||||
|
message.reply(`Made ${channel} the new Selmer Bot Logs channel!`);
|
||||||
|
} else if (command == 'log_severity') {
|
||||||
|
const tier = args[1];
|
||||||
|
const l = ['none', 'low', 'medium', 'high'];
|
||||||
|
if (!l.includes(tier)) { return message.reply("Please select an existing tier ('none', 'low', 'medium', 'high')"); }
|
||||||
|
|
||||||
|
dbo.updateOne({_id: 'LOG'}, {$set: {severity: tier}})
|
||||||
|
}
|
||||||
|
|
||||||
|
else if (command == 'help') {
|
||||||
|
let temp;
|
||||||
|
if (args[1] == 'welcome') {
|
||||||
|
temp = 'Use _!setup welcome\\_channel [channel name]_ to set the welcome channel and _!setup welcome\\_message [message]_ to set a welcome message!\n';
|
||||||
|
} else if (args[1] == 'logs') {
|
||||||
|
temp = 'To enable logging, use the command _!setup keep\\_logs true_ and _!setup log\\_channel_ to set up the logging channel!\n';
|
||||||
|
temp += 'Use _!setup keep\\_logs false_ to disable logging and _!setup log\\_severity [none, low, medium, high]_ to set the threshold\n';
|
||||||
|
temp += '__Severities:__\n*none* - unmute, unban\n*low* - mute\n*medium* - kick\n*high* - ban\nEvery tier also includes all notifs for ***higher*** tiers (AKA _!setup log\\_severity none_ will log everything from every severity)\n';
|
||||||
|
} else { temp = 'Please use the following format: _!setup help [welcome, logs]_\nExample: _!setup help welcome_'; }
|
||||||
|
|
||||||
|
message.reply(temp);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
function checkRole(message, args) {
|
function checkRole(bot, guild, userId) {
|
||||||
let role = args[0];
|
const role = guild.roles.cache.find((role) => { return (role.name == 'Selmer Bot Commands'); })
|
||||||
if (message.member.hasPermission('ADMINISTRATOR')) { return true; }
|
const user = guild.members.cache.get(userId);
|
||||||
|
|
||||||
|
return (user.roles.cache.get(role.id) || user.id == guild.ownerId || bot.inDebugMode);
|
||||||
|
|
||||||
|
|
||||||
/*Maybe implement this later, useless for now
|
/*Maybe implement this later, useless for now
|
||||||
const client = new MongoClient(mongouri, { useNewUrlParser: true, useUnifiedTopology: true, serverApi: ServerApiVersion.v1 });
|
const client = new MongoClient(mongouri, { useNewUrlParser: true, useUnifiedTopology: true, serverApi: ServerApiVersion.v1 });
|
||||||
@@ -20,4 +23,4 @@ function checkRole(message, args) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = {name: 'verify', checkRole}
|
module.exports = { checkRole }
|
||||||
+2
-2
@@ -33,7 +33,7 @@ function isNum(arg) {
|
|||||||
|
|
||||||
function CreateNewCollection(message, client, server, id, opponent = null, game = null) {
|
function CreateNewCollection(message, client, server, id, opponent = null, game = null) {
|
||||||
client.connect(err => {
|
client.connect(err => {
|
||||||
const db = client.db(String(server) + "[ECON]");
|
const db = client.db(String(server));
|
||||||
const dbo = db.collection(id);
|
const dbo = db.collection(id);
|
||||||
if (err) { return console.log(err); }
|
if (err) { return console.log(err); }
|
||||||
db.listCollections({name: id})
|
db.listCollections({name: id})
|
||||||
@@ -312,7 +312,7 @@ module.exports = {
|
|||||||
CreateNewCollection(message, client, server, id);
|
CreateNewCollection(message, client, server, id);
|
||||||
|
|
||||||
client.connect(err => {
|
client.connect(err => {
|
||||||
const db = client.db(String(server) + "[ECON]");
|
const db = client.db(String(server));
|
||||||
const dbo = db.collection(id);
|
const dbo = db.collection(id);
|
||||||
if (err) { return console.log(err); }
|
if (err) { return console.log(err); }
|
||||||
|
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ function in_game_redirector(bot, interaction, threadname, doc, client, mongouri,
|
|||||||
let turn = doc.turn;
|
let turn = doc.turn;
|
||||||
const user1 = doc[turn];
|
const user1 = doc[turn];
|
||||||
const user2 = doc[Number(!turn)];
|
const user2 = doc[Number(!turn)];
|
||||||
const db = client.db(interaction.guildId + "[ECON]");
|
const db = client.db(interaction.guildId);
|
||||||
const dbo = db.collection(user1);
|
const dbo = db.collection(user1);
|
||||||
const other = db.collection(user2);
|
const other = db.collection(user2);
|
||||||
const thread = interaction.channel;
|
const thread = interaction.channel;
|
||||||
@@ -241,7 +241,7 @@ module.exports ={
|
|||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
client.connect(err => {
|
client.connect(err => {
|
||||||
const db = client.db(String(server) + "[ECON]");
|
const db = client.db(String(server));
|
||||||
const dbo = db.collection(id);
|
const dbo = db.collection(id);
|
||||||
if (err) { return console.log(err); }
|
if (err) { return console.log(err); }
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ async function handle_interaction(interaction, mongouri, turnManager, bot, STATE
|
|||||||
const id = result[0];
|
const id = result[0];
|
||||||
const doc = result[1];
|
const doc = result[1];
|
||||||
const threadname = doc.thread;
|
const threadname = doc.thread;
|
||||||
const dbo = client.db(interaction.guildId + '[ECON]').collection(id);
|
const dbo = client.db(interaction.guildId).collection(id);
|
||||||
|
|
||||||
dbo.find({ 'state': {$exists: true} }).toArray(async function (err, docs) {
|
dbo.find({ 'state': {$exists: true} }).toArray(async function (err, docs) {
|
||||||
if (interaction.user.id == id) {
|
if (interaction.user.id == id) {
|
||||||
@@ -78,7 +78,7 @@ async function handle_interaction(interaction, mongouri, turnManager, bot, STATE
|
|||||||
current_user.then(function(result) {
|
current_user.then(function(result) {
|
||||||
const doc = result[1];
|
const doc = result[1];
|
||||||
const threadname = doc.thread;
|
const threadname = doc.thread;
|
||||||
const dbo = client.db(interaction.guildId + '[ECON]').collection(id);
|
const dbo = client.db(interaction.guildId).collection(id);
|
||||||
|
|
||||||
dbo.find({ 'state': {$exists: true} }).toArray(async function (err, docs) {
|
dbo.find({ 'state': {$exists: true} }).toArray(async function (err, docs) {
|
||||||
if (interaction.user.id == id) {
|
if (interaction.user.id == id) {
|
||||||
|
|||||||
@@ -0,0 +1,47 @@
|
|||||||
|
const { MongoClient, ServerApiVersion } = require('mongodb');
|
||||||
|
const Discord = require('discord.js');
|
||||||
|
const SEVCODES = {
|
||||||
|
none: 0,
|
||||||
|
low: 1,
|
||||||
|
medium: 2,
|
||||||
|
high: 3
|
||||||
|
}
|
||||||
|
const col_list = {0: '0ed300', 1: 'f6ff00', 2: 'ffa100', 3: 'FF0000'}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param {*} bot
|
||||||
|
* @param {*} message the message the mod sent (AKA a DISCORD MESSAGE OBJECT)
|
||||||
|
*/
|
||||||
|
function log(bot, message, command, mentioned, reason, severity) {
|
||||||
|
const client = new MongoClient(bot.mongouri, { useNewUrlParser: true, useUnifiedTopology: true, serverApi: ServerApiVersion.v1 });
|
||||||
|
client.connect(err => {
|
||||||
|
if (err) { return console.log(err); }
|
||||||
|
|
||||||
|
|
||||||
|
client.db(message.guild.id).collection('SETUP').findOne({_id: 'LOG'}).then((doc) => {
|
||||||
|
if (!doc) { return message.channel.send("Server logs not set up yet!"); }
|
||||||
|
const channel = message.guild.channels.cache.get(doc.logchannel);
|
||||||
|
|
||||||
|
//Check severity threshold
|
||||||
|
if (SEVCODES[doc.severity] < severity) { return; }
|
||||||
|
|
||||||
|
let action;
|
||||||
|
if (command.endsWith('e')) { action = (command + 'd'); }
|
||||||
|
else if (command.endsWith('n')) { action = (command + 'ned'); }
|
||||||
|
else { action = (command + 'ed'); }
|
||||||
|
|
||||||
|
const newEmbed = new Discord.MessageEmbed()
|
||||||
|
.setColor(col_list[severity])
|
||||||
|
.setTitle(`User ${mentioned.username}#${mentioned.discriminator} has been ${action}`)
|
||||||
|
//.setURL('https://discordjs.guide/popular-topics/embeds.html#embed-preview')
|
||||||
|
.setDescription(`Reason: ${reason}\n Responsible Mod: ${message.author.username}#${message.author.discriminator}`)
|
||||||
|
.setThumbnail(mentioned.displayAvatarURL())
|
||||||
|
.setTimestamp();
|
||||||
|
|
||||||
|
channel.send({ embeds: [newEmbed] });
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { log, SEVCODES }
|
||||||
@@ -38,6 +38,10 @@ module.exports ={
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//Uses a different format, only the server owner can use it
|
||||||
|
temp += '_setup_ - ***SERVER OWNER ONLY*** - use _!setup help_\n';
|
||||||
|
|
||||||
|
|
||||||
temp += `\n_(remember to use '${bot.prefix}' before the command!)_`;
|
temp += `\n_(remember to use '${bot.prefix}' before the command!)_`;
|
||||||
message.channel.send(temp);
|
message.channel.send(temp);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ function changeTurn(client, bot, interaction) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const other_dbo = client.db(interaction.member.guild.id + '[ECON]').collection(id);
|
const other_dbo = client.db(interaction.member.guild.id).collection(id);
|
||||||
|
|
||||||
other_dbo.find({'state': {$exists: true}}).toArray((err, docs) => {
|
other_dbo.find({'state': {$exists: true}}).toArray((err, docs) => {
|
||||||
//If the person was prone, skip their turn
|
//If the person was prone, skip their turn
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
//#region imports
|
||||||
const { Client, Intents, MessageActionRow, MessageButton, MessageSelectMenu } = require('discord.js');
|
const { Client, Intents, MessageActionRow, MessageButton, MessageSelectMenu } = require('discord.js');
|
||||||
const Discord = require('discord.js');
|
const Discord = require('discord.js');
|
||||||
const { MongoClient, ServerApiVersion } = require('mongodb');
|
const { MongoClient, ServerApiVersion } = require('mongodb');
|
||||||
@@ -11,7 +12,10 @@ const { welcome } = require('./commands/admin/welcome.js');
|
|||||||
const { handle_interaction } = require('./commands/interactionhandler.js');
|
const { handle_interaction } = require('./commands/interactionhandler.js');
|
||||||
const { handle_dm } = require('./commands/dm_handler');
|
const { handle_dm } = require('./commands/dm_handler');
|
||||||
const { devCheck } = require('./commands/dev only/devcheck.js');
|
const { devCheck } = require('./commands/dev only/devcheck.js');
|
||||||
|
const { moderation_handler } = require('./commands/admin/moderation.js');
|
||||||
const { exit } = require('process');
|
const { exit } = require('process');
|
||||||
|
//#endregion
|
||||||
|
|
||||||
const BASE_LVL_XP = 20;
|
const BASE_LVL_XP = 20;
|
||||||
|
|
||||||
|
|
||||||
@@ -180,12 +184,15 @@ bot.on('interactionCreate', async interaction => {
|
|||||||
|
|
||||||
//Add the bot to a server setup
|
//Add the bot to a server setup
|
||||||
bot.on("guildCreate", guild => {
|
bot.on("guildCreate", guild => {
|
||||||
guild.roles.create({ name: 'Selmer Bot Mod' });
|
if (guild.roles.cache.find((role) => { return (role.name == 'Selmer Bot Commands'); }) == undefined) {
|
||||||
|
guild.roles.create({ name: 'Selmer Bot Commands' });
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//const role = guild.roles.cache.find((role) => role.name === 'Selmer Bot Mod'); // member.roles.cache.has('role-id-here');
|
//const role = guild.roles.cache.find((role) => role.name === 'Selmer Bot Mod'); // member.roles.cache.has('role-id-here');
|
||||||
const server = bot.guilds.cache.get(guild.id);
|
const server = bot.guilds.cache.get(guild.id);
|
||||||
const owner = server.members.fetch(guild.ownerId).then(function(owner) {
|
const owner = server.members.fetch(guild.ownerId).then(function(owner) {
|
||||||
owner.send('Thank you for adding Selmer Bot to your server!\nPlease give people you want to have access to Selmer Bot\'s restricted commands the "_Selmer Bot Mod_" role.');
|
owner.send('Thank you for adding Selmer Bot to your server!\nPlease give people you want to have access to Selmer Bot\'s restricted commands the "_Selmer Bot Commands_" role.');
|
||||||
owner.send('To help set up Selmer Bot to work better with your server, use _!setup help_ in a channel Selmer Bot is in!');
|
owner.send('To help set up Selmer Bot to work better with your server, use _!setup help_ in a channel Selmer Bot is in!');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -195,7 +202,7 @@ bot.on("guildCreate", guild => {
|
|||||||
if (err) { return console.log(err); }
|
if (err) { return console.log(err); }
|
||||||
|
|
||||||
const dbo = client.db(guild.id).collection('SETUP');
|
const dbo = client.db(guild.id).collection('SETUP');
|
||||||
dbo.insertMany([{_id: 'WELCOME', 'welcomechannel': null, 'welcomemessage': null, 'welcomebanner': null}]);
|
dbo.insertMany([{_id: 'WELCOME', 'welcomechannel': null, 'welcomemessage': null, 'welcomebanner': null}, {_id: 'LOG', 'keepLogs': false, 'logchannel': null, 'severity': 0}]);
|
||||||
});
|
});
|
||||||
|
|
||||||
client.close();
|
client.close();
|
||||||
@@ -205,6 +212,7 @@ bot.on("guildCreate", guild => {
|
|||||||
|
|
||||||
//Welcome new members
|
//Welcome new members
|
||||||
bot.on('guildMemberAdd', async (member) => {
|
bot.on('guildMemberAdd', async (member) => {
|
||||||
|
|
||||||
//Check for impartial data
|
//Check for impartial data
|
||||||
if(member.partial) await member.fetch();
|
if(member.partial) await member.fetch();
|
||||||
|
|
||||||
@@ -253,10 +261,15 @@ bot.on('messageCreate', (message) => {
|
|||||||
const args = message.content.slice(prefix.length).split(' ');
|
const args = message.content.slice(prefix.length).split(' ');
|
||||||
const command = args.shift().toLowerCase();
|
const command = args.shift().toLowerCase();
|
||||||
|
|
||||||
|
//Log logable commands then execute them
|
||||||
|
const logable = ['kick', 'ban', 'unban', 'mute', 'unmute', 'timeout'];
|
||||||
|
if (logable.includes(command)) {
|
||||||
|
moderation_handler(bot, message, args, command);
|
||||||
|
}
|
||||||
|
|
||||||
//Performes the command
|
//Performes the command
|
||||||
//Admin section
|
//Admin section
|
||||||
if (command == 'reactionrole') { bot.commands.get(command).execute(message, args, Discord, bot); }
|
else if (command == 'reactionrole') { bot.commands.get(command).execute(message, args, Discord, bot); }
|
||||||
|
|
||||||
else if(bot.commands.has(command) && command != 'ECON') {
|
else if(bot.commands.has(command) && command != 'ECON') {
|
||||||
//Database access is required, change the inputs
|
//Database access is required, change the inputs
|
||||||
|
|||||||
Reference in New Issue
Block a user