Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Discord = require('discord.js');
- const moment = require('moment');
- const client = new Discord.Client();
- const config = require("./config.json");
- const settings = require("./settings.json");
- const messages = require('./msg.json');
- const fs = require('fs');
- client.on("ready", () => {
- console.log(`Bot has started, with ${client.users.size} users, in ${client.channels.size} channels of ${client.guilds.size} guilds.`);
- //client.user.setActivity(`Watching ${client.guilds.size} Server(s)`);
- client.guilds.array().forEach(function (guild) {
- //console.log(settings.hasOwnProperty(guild.id));
- if (!settings.hasOwnProperty(guild.id)) {
- guild_default = {
- "name": guild.name,
- "memberCount": guild.memberCount
- };
- settings[guild.id] = guild_default;
- //console.log(settings[guild.id]);
- }
- });
- save_settings();
- setInterval(function () {
- let status = messages[Math.floor(Math.random() * messages.length)];
- client.user.setActivity(status);
- console.log("Set Activity to " + status);
- }, 300000);
- });
- save_settings = function () {
- fs.writeFile('settings.json', JSON.stringify(settings, null, 4), function (err) {
- if (err) console.log("Failed to save settings : " + err);
- else console.log(`Saved settings!`);
- });
- }
- client.on("guildCreate", guild => {
- console.log(`New guild joined: ${guild.name} (id: ${guild.id}). This guild has ${guild.memberCount} members!`);
- });
- fromGuild = function (message) {
- if (message.guild == null) {
- message.channel.send("No no, not here")
- return false;
- }
- return true
- };
- /**
- * Returns a guild's setting from settings.json
- * @function
- * @param {discord.Guild} guild - Guild to get setting from
- * @param {string} settingKey - Setting name to get
- * @returns {string} The setting value
- */
- getGuildSetting = function (guild, settingKey) {
- guildSettings = (settings.hasOwnProperty(guild.id)) ? settings[guild.id] : null;
- if (guildSettings == null) return null;
- if (guildSettings.hasOwnProperty(settingKey)) {
- return guildSettings[settingKey];
- }
- else {
- return null;
- }
- };
- setGuildSetting = function (guild, settingKey, settingValue) {
- if (guild == null || settingKey == null || settingValue == null) return false;
- guildSettings = (settings.hasOwnProperty(guild.id)) ? settings[guild.id] : null;
- if (guildSettings == null) return false;
- guildSettings[settingKey] = settingValue;
- save_settings();
- };
- client.on("message", async message => {
- //if (!message.content.startsWith(config.prefix) || message.author.bot) return;
- let prefix = config.prefix;
- if (fromGuild(message)) {
- const guild = message.guild;
- guild_prefix = getGuildSetting(guild, "prefix");
- if (guild_prefix != null) prefix = guild_prefix;
- }
- if (!message.content.startsWith(prefix) || message.author.bot) return;
- const date = new Date()
- const args = message.content.slice(config.prefix.length).trim().split(/ +/g)
- const command = args.shift().toLowerCase();
- if (command === "ping") {
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${message.guild.name}] User ${message.author.tag} Ran command Ping`)
- const m = await message.channel.send("Ping?")
- const embed = {
- "embed": {
- "color": 0xd05333,
- "title": `:ping_pong:`,
- 'fields': [
- {
- 'name': 'Latency:',
- 'value': `${m.createdTimestamp - message.createdTimestamp}ms.`,
- },
- {
- 'name': 'API Latency:',
- 'value': `${Math.round(client.ping)}ms`,
- },
- ],
- footer: {
- 'text': "Member ID: " + message.id + " | " + moment(message.createdAt).format('DD-MM-Y hh:mm:ss A')
- }
- }
- }
- m.edit(embed)
- }
- if (command === 'servers') {
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${message.guild.name}] User ${message.author.tag} Ran command ${command}`)
- if (config.hasOwnProperty("ownerID")) {
- if (message.author.id !== config.ownerID) {
- await message.channel.send(`Who is this man. ${message.author} ?`);
- return;
- }
- }
- var msg = ''
- client.guilds.array().forEach(server => {
- msg += '[ ' + (client.guilds.array().indexOf(server) + 1)+ ' ] ' + server.name + '\n'
- })
- await message.channel.send(msg)
- .catch(console.error);
- await message.channel.send("Enter the number for the server you would like to leave.")
- // Collector to get the response, parse the number
- // If the number isn't indexed in the list, respond saying That server isn't on the list
- // If it is on the list, use guild.leave()
- var guild;
- var index;
- var confirmation = false;
- const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { maxMatches: 1, time: 5000 })
- let resp;
- collector.on('collect', async response => {
- resp = true;
- index = parseInt(response.content);
- if (isNaN(index)) {
- await message.channel.send("this is not a number.");
- return;
- }
- guild = client.guilds.array()[index - 1];
- if (guild) {
- await message.channel.send(`Is this the server you wanted to leave? ${guild.name}`);
- const collector2 = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { maxMatches: 1, time: 5000 })
- let resp;
- collector2.on('collect', async response => {
- resp = true;
- if (response.content.toLowerCase().trim() == 'yes') {
- await guild.leave();
- await message.channel.send("I have left the server")
- }
- else if (response.content.toLowerCase().trim() == 'no') {
- var msg = await message.channel.send("No U");
- setTimeout(function () {
- msg.delete()
- }, 2000);
- await message.channel.send("I have not left the server :)")
- }
- });
- collector2.on("end", async _collected => {
- if (!resp) {
- await message.channel.send("time has run out");
- };
- });
- }
- else
- await message.channel.send("Guild not found!");
- });
- collector.on("end", async _collected => {
- if (!resp) {
- await message.channel.send("time has run out");
- };
- });
- }
- if (command === 'setlog') {
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${message.guild.name}] User ${message.author.tag} Ran command ${command}`)
- if (!fromGuild(message)) return;
- if (args[0] == null) {
- await message.channel.send("No channel defined. Please enter a channel name or id.\n" +
- `*\`Syntax : ${prefix}setlog [channel]\`*`);
- return;
- }
- checks = message.member.hasPermission("ADMINISTRATOR") || message.author.id == config.ownerID;
- if (!checks) {
- await message.channel.send("You do not meet the permission requirements to use this command.");
- return;
- }
- const guild = message.guild;
- let foundChannel = null;
- channel_id = (args[0].startsWith("<#")) ? args[0].slice(2) : args[0];
- channel_id = (channel_id.endsWith(">")) ? channel_id.slice(0, channel_id.length - 1) : channel_id;
- if (isNaN(parseInt(channel_id))) {
- input = channel_id.toLowerCase().trim();
- guild.channels.array().forEach(function (channel) {
- if (channel.name == input) {
- foundChannel = channel;
- }
- });
- }
- else {
- // Assuming they entered channel ID
- channel_id = (args[0].startsWith("<#")) ? args[0].slice(2) : args[0];
- channel_id = (channel_id.endsWith(">")) ? channel_id.slice(0, channel_id.length - 1) : channel_id;
- var channel = getChannel(guild, channel_id);
- if (channel != null) foundChannel = channel;
- else console.log(`Failed to parse channel_id ${args[1]}`)
- }
- if (foundChannel) {
- await message.channel.send(`Setting logging channel to ${foundChannel}`);
- setGuildSetting(guild, "loggingChannel", foundChannel.id);
- }
- else
- await message.channel.send("Channel not found.");
- }
- if (command === 'stats') {
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${message.guild.name}] User ${message.author.tag}s Ran command ${command}`)
- if (!fromGuild(message)) return;
- const guild = message.guild;
- var verificationLevel;
- switch (guild.verificationLevel) {
- case 4:
- verificationLevel = "Very High";
- break;
- case 3:
- verificationLevel = "High";
- break;
- case 2:
- verificationLevel = "Medium";
- break;
- case 1:
- verificationLevel = "Low";
- break;
- case 0:
- default:
- verificationLevel = "None";
- break;
- }
- const embed = new Discord.RichEmbed()
- .setColor(0x19bf0a)
- .setTitle("Server Stats Page 1")
- .addField("Server Name", `${guild.name}`, true)
- .addField("Member Count", `${guild.memberCount} Members`, true)
- .setFooter(`Member ID: ${message.id} | ${moment(message.createdAt).format("DD-MM-Y hh:mm:ss A")}`);
- const embed2 = new Discord.RichEmbed()
- .setColor(0x19bf0a)
- .setTitle("Server Stats Page 2")
- .addField("Server Created On", `${moment(guild.createdAt).format('DD-MM-Y hh:mm:ss A')}`, false)
- .addField("Verification Level", verificationLevel, true)
- .addField("Number of Channels", getGuildTextChannels(guild).length, true)
- .setFooter(`Member ID: ${message.id} | ${moment(message.createdAt).format("DD-MM-Y hh:mm:ss A")}`);
- const embed3 = new Discord.RichEmbed()
- .setColor(0x19bf0a)
- .setTitle("Server Stats Page 3")
- .addField("Server Owner", `${guild.owner}`, false)
- .addField("Server Default Role", `${guild.defaultRole}`, false)
- .addField("Server verified", `${guild.verified}`, false)
- .addField("Server Afk timeout", `${guild.afkTimeout}s`, false)
- .setFooter(`Member ID: ${message.id} | ${moment(message.createdAt).format("DD-MM-Y hh:mm:ss A")}`);
- showPage = async function (page) {
- switch (page) {
- default:
- case 1:
- msg.edit(embed);
- break;
- case 2:
- msg.edit(embed2);
- break;
- case 3:
- msg.edit(embed3);
- break;
- }
- //if (!request_response == null) await request_response.delete();
- //request_response = await message.channel.send("Enter the page number to change to.");
- };
- // Initialize by showing first page.
- let msg = await message.channel.send(embed);
- // Get response to view another page
- var request_response = await message.channel.send("Enter the page number to change to.");
- const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, {time: 5000 });
- var resp;
- collector.on('collect', async response => {
- if (request_response != null) {
- await request_response.delete()
- // .then(msg => console.log("Deleted request response message"))
- .catch(console.error);;
- // console.log("Deleted Request Response");
- }
- resp = true;
- index = parseInt(response.content);
- if (isNaN(index)) {
- await message.channel.send("This does not seem to be a valid page number. Interactive paging cancelled.");
- return;
- }
- await response.delete()
- // .then(msg => console.log("Deleted response"))
- .catch(console.error);
- showPage(index);
- request_response = await message.channel.send("Enter the page number to change to.");
- });
- collector.on("end", async _collected => {
- // console.log("Response: " + resp);
- if (resp == null || !resp) {
- await message.channel.send("Time has run out. Interactive paging cancelled.");
- }
- if (request_response != null) {
- await request_response.delete()
- // .then(msg => console.log("Deleted Request Response"))
- .catch(console.error);
- }
- });
- }
- if (command === 'help') {
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${message.guild.name}] User ${message.author.tag} Ran command ${command}`)
- const embed = new Discord.RichEmbed()
- .setColor(0x19bf0a)
- .setTitle("Command Help")
- .addField("+help ", "Bring you to this page", false)
- .addField("+ping ", "Pings server and API latancy", false)
- .addField("+setlog ", "Sets the logging channel for your guild", false)
- .addField("+stats ", "Interactive stats page for the guild", false)
- .addField("+invite ", "Creates a invite link for a guild", false)
- .addField("More commands to come! ", "We are working on more commands", false);
- await message.author.send(embed);
- }
- if (command === 'invite') {
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${message.guild.name}] User ${message.author.tag} Ran command ${command}`)
- if (!fromGuild(message)) return;
- await message.channel.send(`We are working on this command just for you ${message.author.username}`)
- return;
- }
- })
- md = function (msg) {
- return "```md\n" + msg + "```";
- };
- getChannel = function (guild, channel_id) {
- let foundChannel = null;
- guild.channels.array().forEach(function (channel) {
- if (channel.id == channel_id) {
- foundChannel = channel;
- }
- });
- return foundChannel;
- };
- getGuildTextChannels = function (guild) {
- var textChannels = [];
- guild.channels.array().forEach(function (channel) {
- if (channel.type === "text")
- textChannels.push(channel);
- });
- return textChannels;
- };
- guildLog = function (guild, type, arg1, arg2) {
- const guildSettings = (settings.hasOwnProperty(guild.id)) ? settings[guild.id] : null;
- const logChannel = (guildSettings.hasOwnProperty('loggingChannel')) ? getChannel(guild, guildSettings['loggingChannel']) : null;
- if (logChannel == null) {
- console.log(`Failed to get logging channel for guild (${guild.name}).`);
- return;
- }
- if (type == "messageDelete") {
- message = arg1;
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${message.guild.name}] User ${message.author.tag}s message has been deleted`)
- let msgContent = '';
- if (message.content.length > 0) {
- msgContent += message.content;
- }
- if (message.attachments.array().length > 0) {
- msgContent = msgContent + '\n' + message.attachments.array()[0].proxyURL;
- }
- const embed = {
- "embed": {
- "color": 0xd05333,
- "title": `message removed`,
- 'fields': [
- {
- 'name': 'member:',
- 'value': `${message.author}`,
- 'inline': true
- },
- {
- 'name': 'channel:',
- 'value': `${message.channel}`,
- 'inline': true
- },
- {
- 'name': 'message:',
- 'value': `${msgContent}`
- },
- ],
- footer: {
- 'text': "member id: " + message.id + " | " + moment(message.createdat).format('dd-mm-y hh:mm:ss a')
- }
- }
- };
- logChannel.send(embed);
- client.on("error", (e) => {
- console.error(e);
- });
- client.on("warn", (e) => {
- console.warn(e);
- });
- }
- if (type == "guildMemberAdd") {
- join = arg1;
- const date = new Date();
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${join.guild.name}] User ${join.user.tag} has joined the server.`);
- const embed = {
- "embed": {
- "color": 0x19bf0a,
- 'fields': [
- {
- 'name': 'Member Joined',
- 'value': `${join.user}`
- }
- ],
- footer: {
- 'text': `${moment(date).format('DD-MM-Y hh:mm:ss A')}`
- }
- }
- };
- logChannel.send(embed);
- };
- if (type == "guildMemberRemove") {
- leave = arg1;
- const date = new Date();
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${leave.guild.name}] User ${leave.user.tag} has left the server.`);
- const embed = {
- "embed": {
- "color": 0xd05333,
- 'fields': [
- {
- 'name': 'Member Left',
- 'value': `${leave.user}`
- }
- ],
- footer: {
- 'text': `${moment(date).format('DD-MM-Y hh:mm:ss A')}`
- }
- }
- }
- logChannel.send(embed);
- }
- if (type == "messageUpdate") {
- eold = arg1;
- enew = arg2;
- const date = new Date()
- console.log(`[${moment(date).format('DD-MM-Y hh:mm: A')}][${eold.guild.name}] User ${eold.author.tag} has uptaded their message.`);
- const embed = {
- "embed": {
- "color": 0x1674ae,
- "title": `Message Changed`,
- 'fields': [
- {
- 'name': 'Member',
- 'value': `${enew.author}`,
- 'inline': true
- },
- {
- 'name': 'Channel',
- 'value': `${enew.channel}`,
- 'inline': true
- },
- {
- 'name': 'Old Message',
- 'value': `${eold.content}`
- },
- {
- 'name': 'New Message',
- 'value': `${enew.content}`
- }
- ],
- footer: {
- 'text': `${moment(date).format('DD-MM-Y hh:mm:ss A')}`
- }
- }
- };
- logChannel.send(embed);
- }
- if (type == "guildMemberUpdate") {
- nous = arg1;
- nnus = arg2;
- const oldNick = nous.nickname || nous.user.username;
- const newNick = nnus.nickname || nnus.user.username;
- if (oldNick === newNick) return;
- const date = new Date();
- console.log(`[${moment(date).format('DD-MM-Y hh:mm A')}][${nnus.guild.name}] User ${nnus.user.tag} has changed their nickname.`);
- const embed = {
- "embed": {
- "color": 0x1674ae,
- "title": `Name Changed`,
- 'fields': [
- {
- 'name': 'Old Name',
- 'value': `${oldNick}`,
- 'inline': true
- },
- {
- 'name': 'New Name',
- 'value': `${newNick}`,
- 'inline': true
- },
- ],
- footer: {
- 'text': `${moment(date).format('DD-MM-Y hh:mm:ss A')}`
- }
- }
- };
- logChannel.send(embed);
- }
- };
- client.on('messageDelete', message => {
- if (message.author.bot) return;
- guildLog(message.guild, "messageDelete", message);
- })
- client.on('guildMemberAdd', join => {
- if (join.user.bot) return;
- guildLog(join.guild, "guildMemberAdd", join);
- })
- client.on('guildMemberRemove', leave => {
- if (leave.user.bot) return;
- guildLog(leave.guild, "guildMemberRemove", leave);
- })
- client.on('messageUpdate', (eold, enew) => {
- if (eold.author.bot) return;
- guildLog(eold.guild, "messageUpdate", eold, enew);
- })
- client.on('guildMemberUpdate', (nous, nnus) => {
- if (nous.user.bot) return;
- guildLog(nous.guild, "guildMemberUpdate", nous, nnus);
- })
- client.login(config.token)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement