Add per server prefix (#7)
* Add ability to load server prefix * Add ability to set prefix for a server * Create serverPrefixes.json file if not found
This commit is contained in:
parent
ae1ce65602
commit
4717de1712
4 changed files with 79 additions and 8 deletions
15
commands/prefix.js
Normal file
15
commands/prefix.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
const setServerPrefix = require("../util/setServerPrefix");
|
||||
|
||||
module.exports = {
|
||||
name: 'prefix',
|
||||
description: 'Change the prefix of the bot in this server.',
|
||||
execute({ message, client, args, prefix }) {
|
||||
if (!args[0]) {
|
||||
message.channel.send(`To change the prefix, execute \`${prefix}prefix <newPrefix>\``);
|
||||
return;
|
||||
}else{
|
||||
setServerPrefix(client, args[0], message.guild.id)
|
||||
message.channel.send(`The prefix for this server is now set to ${args[0]}`)
|
||||
}
|
||||
}
|
||||
};
|
25
server.js
25
server.js
|
@ -1,8 +1,8 @@
|
|||
const fs = require('fs')
|
||||
const Discord = require('discord.js');
|
||||
const client = new Discord.Client({ disableEveryone: true });
|
||||
const {
|
||||
prefix,
|
||||
let {
|
||||
globalPrefix,
|
||||
token,
|
||||
loginMessage,
|
||||
loginChannel,
|
||||
|
@ -11,19 +11,22 @@ const {
|
|||
} = require('./config.json');
|
||||
|
||||
client.commands = new Discord.Collection();
|
||||
client.serverPrefixes = new Discord.Collection();
|
||||
|
||||
var reloadCommands = require("./util/reloadCommands.js")
|
||||
var reloadCommands = require("./util/reloadCommands.js");
|
||||
const loadServerPrefixes = require('./util/loadServerPrefixes');
|
||||
reloadCommands(client)
|
||||
|
||||
client.once('ready', () => {
|
||||
console.log('Ready!');
|
||||
client.user.setActivity(prefix, { type: 'LISTENING' });
|
||||
client.user.setActivity(globalPrefix, { type: 'LISTENING' });
|
||||
if (enableLoginMessage === true)
|
||||
try{
|
||||
client.channels.cache.get(loginChannel).send(loginMessage)
|
||||
}catch(err){
|
||||
console.log("Failed trying to send a message on login.\n")
|
||||
}
|
||||
loadServerPrefixes(client)
|
||||
});
|
||||
|
||||
client.once('reconnecting', () => {
|
||||
|
@ -35,15 +38,23 @@ client.once('disconnect', () => {
|
|||
});
|
||||
|
||||
client.on('message', async message => {
|
||||
const args = message.content.slice(prefix.length).split(" ")
|
||||
|
||||
if (client.serverPrefixes.get(message.guild.id)) {
|
||||
prefix = client.serverPrefixes.get(message.guild.id)
|
||||
} else
|
||||
prefix = globalPrefix
|
||||
|
||||
let args = message.content.slice(prefix.length).split(" ")
|
||||
|
||||
const commandName = args.shift().toLowerCase();
|
||||
const command = client.commands.get(commandName);
|
||||
if (!message.guild) return;
|
||||
if (message.author.bot) return;
|
||||
if (!message.content.startsWith(prefix)) return;
|
||||
if (command.admin && owners.indexOf(message.author.id.toString()) == -1 ) return;
|
||||
if (!command) return;
|
||||
if (command.admin && owners.indexOf(message.author.id.toString()) == -1) return;
|
||||
try {
|
||||
command.execute({message:message, args:args, client: client})
|
||||
command.execute({ message: message, args: args, client: client, prefix: prefix})
|
||||
} catch (error) {
|
||||
console.log(`${error}\n-------`)
|
||||
}
|
||||
|
|
18
util/loadServerPrefixes.js
Normal file
18
util/loadServerPrefixes.js
Normal file
|
@ -0,0 +1,18 @@
|
|||
const fs = require('fs')
|
||||
|
||||
|
||||
module.exports = function (client) {
|
||||
try {
|
||||
if(!fs.existsSync('serverPrefixes.json')){
|
||||
console.log("Creating loadServerPrefixes.json...")
|
||||
fs.writeFileSync("serverPrefixes.json","[]")
|
||||
}
|
||||
const json = fs.readFileSync('serverPrefixes.json', 'utf8');
|
||||
const serverPrefixes = JSON.parse(json);
|
||||
serverPrefixes.forEach(server => {
|
||||
client.serverPrefixes.set(server.id, server.prefix)
|
||||
});
|
||||
} catch (err) {
|
||||
console.log(`Error reading file from disk: ${err}`);
|
||||
}
|
||||
}
|
27
util/setServerPrefix.js
Normal file
27
util/setServerPrefix.js
Normal file
|
@ -0,0 +1,27 @@
|
|||
const fs = require('fs');
|
||||
|
||||
|
||||
module.exports = function (client, newPrefix, guildID) {
|
||||
let isExists = false;
|
||||
const json = fs.readFileSync('serverPrefixes.json', 'utf8');
|
||||
const serverPrefixes = JSON.parse(json);
|
||||
serverPrefixes.forEach(function (server) {
|
||||
if (server.id === guildID) {
|
||||
server.prefix = newPrefix
|
||||
client.serverPrefixes.set(server.id, newPrefix)
|
||||
fs.writeFileSync("serverPrefixes.json", JSON.stringify(serverPrefixes));
|
||||
isExists = true;
|
||||
}
|
||||
});
|
||||
if (!isExists) {
|
||||
let _newPrefix = {
|
||||
"id": guildID, "prefix": newPrefix
|
||||
}
|
||||
|
||||
serverPrefixes.push(_newPrefix)
|
||||
console.log(serverPrefixes)
|
||||
|
||||
fs.writeFileSync("serverPrefixes.json", JSON.stringify(serverPrefixes))
|
||||
client.serverPrefixes.set(guildID, newPrefix)
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue