Terrium-Discord-Bot/general-commands.js

136 lines
5.1 KiB
JavaScript

commands.eval = {
aliases: [">"],
op: true,
execute: function (message, args, txt) {
try {
supersend('`'+eval(message.content.substr(args[0].length))+'`', message.channel);
}
catch (error) {
supersend('`'+error+'`', message.channel);
}
}
};
commands.exec = {
aliases: ["$"],
op: true,
execute: function (message, args, txt) {
require('child_process').exec(txt(1), function (error, stdout, stderr) {
if (stdout) supersend('**stdout:** ' + stdout, message.channel);
if (stderr) supersend('**stderr:** ' + stderr, message.channel);
});
}
};
commands.say = {
execute: function (message, args, txt) {
message.channel.send(txt(1));
}
};
commands.quote = {
aliases: ["get", "fetch"],
usage: "<message ID> [channel ID]",
description: "Fetches and displays the message with the given id. If the message is in a different channel, the channel ID must be given as well.",
execute: function (message, args, txt) {
if (!args[1]) return message.react('❓');
if (args[2]) {
var channel = client.channels.cache.get(args[2]);
if (!channel) return message.react('⚠');
} else var channel = message.channel;
channel.messages.fetch(args[1]).then(m => {
var embed = {
author: {
name: (m.member && m.member.displayName) || m.author.username,
iconURL: m.author.avatarURL()
},
description: m.cleanContent,
timestamp: m.createdAt
}
if (channel.id !== message.channel.id) embed.footer = {text:`From channel #${channel.name}`};
if (m.member) embed.color = m.member.displayColor;
if (m.attachments.first()) {
if (m.attachments.first().width) embed.image = {url:m.attachments.first().url};
else embed.fields = [{name:'Attachment:', value:m.attachments.first().url}];
}
message.channel.send({embed});
}, () => message.react('⚠'));
}
};
commands.spam = {
require: ["MANAGE_MESSAGES"],
execute: function (message, args, txt) {
for (t = 0; t < args[1]; t++) message.channel.send(txt(2));
}
};
commands.clear = {
aliases: ["flush", "blank", "kruncherthingy"],
description: "Flushes the chat with a tall message of blankness",
execute: function (message) {
message.channel.send(`\u2063${'\n'.repeat(1998)}\u2063`);
}
};
commands.createcard = {
usage: "<title> <content>",
description: 'Creates a canned response called a "card" (or whatever you want to call it cause i\'m not sure) which you can call using the `?` prefix. For example, `!createcard foo bar` makes a card titld "foo", so when you say `?foo`, the bot says `bar`.',
execute: function (message, args, txt) {
if (!args[1] || cards[args[1]]) return message.react('⚠');
cards[args[1]] = txt(2);
fs.writeFile('cards.json', JSON.stringify(cards));
message.react('🆗');
}
};
commands.randplex = {
description: "Gets a link to a random Plexpedia post",
execute: function (message, args, txt) {
message.channel.send("http://plexpedia.com/view-" + (Math.floor(Math.random()*15000)+106) );
}
};
commands.mute = {
aliases: ["moot"],
usage: "<userTag> [duration] [reason]",
description: "Mutes the mentioned user for the given duration with the given reason.",
require: ["MUTE_MEMBERS"],
execute: function (message, args, txt) {
if (!args[1]) return message.react('❓');
const victim = message.mentions.members.cache.first();
if (!victim) return message.react('⚠');
message.delete();
const duration = +args[2];
const reason = txt(duration ? 3 : 2);
victim.roles.remove(message.guild.roles.cache.get(config.roles[victim.user.bot?'robots':'humans']));
victim.roles.add(message.guild.roles.cache.get(config.roles.muted));
if (duration) {
setTimeout(()=>{
victim.removeRole(message.guild.roles.cache.get(config.roles.muted));
victim.addRole(message.guild.roles.cache.get(config.roles[victim.user.bot?'robots':'humans']));
}, duration*60*1000);
}
message.channel.send(`🔇 **${message.member} muted ${victim}${duration ? ` for ${duration} minute${duration == 1 ? '' : 's'}.` : "."} ${reason ? `Reason: \`${reason}\`` : ""}**`);
}
};
commands.unmute = {
aliases: ["unmoot"],
arguments: "<userTag>",
description: "unmutes the mentioned user",
require: ["MUTE_MEMBERS"],
execute: function (message, args, txt) {
if (!args[1]) return message.react('❓');
const victim = message.mentions.members.cache.first();
if (!victim) return message.react('⚠');
message.delete();
victim.roles.remove(message.guild.roles.cache.get(config.roles.muted));
victim.roles.add(message.guild.roles.cache.get(config.roles[victim.user.bot?'robots':'humans']));
message.channel.send(`🔈 **${message.member} unmuted ${victim}.**`);
}
};