mirror of
https://github.com/SEPPDROID/zoizbot.git
synced 2025-10-24 17:04:22 +00:00
New command handler and command files. I will add more examples and documentation. please wait - Update app.js, bootscreen.js, and 5 more files...
This commit is contained in:
@@ -5,30 +5,38 @@ const zoizbot = new Discord.Client(); // discord client is now made zoizbot. wat
|
|||||||
|
|
||||||
var fs = require('fs');
|
var fs = require('fs');
|
||||||
|
|
||||||
|
zoizbot.commands = new Discord.Collection();
|
||||||
|
|
||||||
|
console.log("==============================================");
|
||||||
console.log(`starting zoizbot...`);
|
console.log(`starting zoizbot...`);
|
||||||
|
eval(fs.readFileSync('./bootscreen.js') + ''); // please delete this, using readFileSync 1 time was bad enough. But I didnt want ascii art in my main file ;)
|
||||||
console.log(`loading configuration file...`)
|
console.log(`loading configuration file...`)
|
||||||
|
|
||||||
const config = require("./conf.json"); // de conf ophalen die we net gemaakt hadden / picking up the config file we made
|
const config = require("./conf.json"); // de conf ophalen die we net gemaakt hadden / picking up the config file we made
|
||||||
|
|
||||||
console.log(`Ready!`) //normally if you would make it properly you would catch any errors when loading the config
|
console.log(`configuration loaded!`) // should make an catch error to debug conf file but whatever
|
||||||
|
console.log("==============================================");
|
||||||
|
console.log(`loading the commandhandler...`)
|
||||||
|
|
||||||
zoizbot.on("ready", () => {
|
eval(fs.readFileSync('./commandhandler.js') + '');
|
||||||
console.log(`Zoizbot has started, and is serving ${zoizbot.users.cache.size} users, in ${zoizbot.guilds.cache.size} guilds.`); // you can display anything you want here, all the functions are available in de documentation from discord.js
|
|
||||||
|
|
||||||
zoizbot.user.setActivity(`Ask me something with >`); // change this to whatever you want. check out https://discord.js.org/#/docs/main/12.3.1/general/welcome
|
console.log(`commandhandler loaded!`)
|
||||||
|
console.log("==============================================");
|
||||||
|
console.log(`loading command-files...`)
|
||||||
|
|
||||||
|
fs.readdir(`./commands/`, (err, files) => {
|
||||||
|
if (err) return console.error(err);
|
||||||
|
files.forEach(file => {
|
||||||
|
if (!file.endsWith(".js")) return; // only load js files. no garbage collection
|
||||||
|
let props = require(`./commands/${file}`); // get the command name from the file.js
|
||||||
|
let commandName = file.split(".")[0];
|
||||||
|
console.log(`attempting to load command ${commandName}`); // adding everything to the collection
|
||||||
|
zoizbot.commands.set(commandName, props);
|
||||||
|
});
|
||||||
|
console.log(`all commands loaded!`);
|
||||||
|
console.log("==============================================");
|
||||||
});
|
});
|
||||||
|
|
||||||
zoizbot.on("guildJoin", guild => {
|
|
||||||
console.log(`I have joined ${guild.name}, I will be serving ${guild.memberCount} members!`); // Join server message in the console
|
|
||||||
message.channel.send(`Hello ${guild.name} thank you for having me!`);
|
|
||||||
});
|
|
||||||
|
|
||||||
zoizbot.on("guildLeave", guild => {
|
|
||||||
console.log(`Adios! i will be leaving: ${guild.name} It was fun while it lasted!`);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
eval(fs.readFileSync('./commands/examples.js') + ''); //dirty but working trick to keep app main clean...
|
|
||||||
|
|
||||||
|
|
||||||
zoizbot.login(config.token); //reading the "token" from the const config = conf.json btw the one you see is invalid now
|
zoizbot.login(config.token); //reading the "token" from the const config = conf.json btw the one you see is invalid now
|
||||||
|
|||||||
15
zoizbot/bootscreen.js
Normal file
15
zoizbot/bootscreen.js
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
// bad practice please remove this file and the fileReadSync function
|
||||||
|
console.log("==============================================");
|
||||||
|
console.log(" ,--, ");
|
||||||
|
console.log(" ,----, ,---. ,--.'| ,----, ");
|
||||||
|
console.log(" .' .`| ' ,'\ | |, .' .`| ");
|
||||||
|
console.log(" .' .' .' / / |`--'_ .' .' .' ");
|
||||||
|
console.log(",---, ' ./ . ; ,. :,' ,'| ,---, ' ./ ");
|
||||||
|
console.log("; | .' / ' | |: :' | | ; | .' / ");
|
||||||
|
console.log("`---' / ;--,' | .; :| | : `---' / ;--, ");
|
||||||
|
console.log(" / / / .`|| : |' : |__ / / / .`| ");
|
||||||
|
console.log("./__; .' \ \ / | | '.'|./__; .' ");
|
||||||
|
console.log("; | .' `----' ; : ;; | .' ");
|
||||||
|
console.log("`---' | , / `---' ");
|
||||||
|
console.log(" ---`-' ");
|
||||||
|
console.log("==============================================");
|
||||||
25
zoizbot/commandhandler.js
Normal file
25
zoizbot/commandhandler.js
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
zoizbot.on("ready", () => {
|
||||||
|
zoizbot.user.setActivity(config.activity); // change this to whatever you want (in conf.json).
|
||||||
|
console.log(`Zoizbot has started, and is serving ${zoizbot.users.cache.size} users, in ${zoizbot.guilds.cache.size} guilds.`); // you can display anything you want here, all the functions are available in de documentation from discord.js
|
||||||
|
console.log("==================LISTENING===================");
|
||||||
|
});
|
||||||
|
|
||||||
|
zoizbot.on("guildJoin", guild => {
|
||||||
|
console.log(`I have joined ${guild.name}, I will be serving ${guild.memberCount} members!`); // Join server message in the console
|
||||||
|
message.channel.send(`Hello ${guild.name} thank you for having me!`);
|
||||||
|
});
|
||||||
|
|
||||||
|
zoizbot.on("guildLeave", guild => {
|
||||||
|
console.log(`Adios! i will be leaving: ${guild.name}, it was fun while it lasted!`); //letting you know he be headin out
|
||||||
|
});
|
||||||
|
|
||||||
|
zoizbot.on("message", async message => {
|
||||||
|
if (message.author.bot) return; //ignore bots
|
||||||
|
if (message.content.indexOf(config.prefix) !== 0) return; // dont waste time listening to non prefix commands
|
||||||
|
const args = message.content.slice(config.prefix.length).trim().split(/ +/g);
|
||||||
|
const command = args.shift().toLowerCase(); // slice and dice && lowercase
|
||||||
|
const cmd = zoizbot.commands.get(command);
|
||||||
|
if (!cmd) return; //if the command doesnt exist gracefully return
|
||||||
|
|
||||||
|
cmd.run(zoizbot, message, args); // and fire!
|
||||||
|
});
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
|
|
||||||
zoizbot.on("message", async message => {
|
|
||||||
|
|
||||||
if (message.author.bot) return; // dont listen to other bots
|
|
||||||
if (!message.content.startsWith(config.prefix)) return; // dont waste time listening to non prefix messages
|
|
||||||
|
|
||||||
const args = message.content.slice(config.prefix.length).trim().split(/ +/g); // cut the arguments away from the command.
|
|
||||||
const command = args.shift().toLowerCase();
|
|
||||||
|
|
||||||
|
|
||||||
//ping pong, example from documentation
|
|
||||||
if (command === "ping") {
|
|
||||||
const m = await message.channel.send("Ping?");
|
|
||||||
m.edit(`Pong! Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(zoizbot.ws.ping)}ms`);
|
|
||||||
}
|
|
||||||
|
|
||||||
//simple kick command
|
|
||||||
if (command === "kick") {
|
|
||||||
//if (!message.member.roles.cache.some(r => ["Administrator", "Moderator"].includes(r.name))) checks the roles for permissions
|
|
||||||
if (!message.member.hasPermission("KICK_MEMBERS"))
|
|
||||||
return message.reply("Sorry, you don't have permissions to use this!");
|
|
||||||
|
|
||||||
let member = message.guild.member(message.mentions.users.first()) || message.mentions.members.first(args[0])
|
|
||||||
if (!member)
|
|
||||||
return message.reply("Please mention a valid member of this server");
|
|
||||||
if (!member.kickable)
|
|
||||||
return message.reply("I cannot kick this user! Do they have a higher role? Do I have kick permissions?");
|
|
||||||
|
|
||||||
let KickReason = args.slice(1).join(' '); // slicing the arguments
|
|
||||||
if (!KickReason) KickReason = "No reason provided";
|
|
||||||
|
|
||||||
|
|
||||||
await member.kick(KickReason)
|
|
||||||
.catch(error => message.reply(`Sorry ${message.author} I couldn't kick because of : ${error}`)); // now an adios moment
|
|
||||||
message.reply(`${member.user.tag} has been kicked by ${message.author.tag} because: ${KickReason}`);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//simple ban command
|
|
||||||
|
|
||||||
if (command === "ban") {
|
|
||||||
if (!message.member.hasPermission("BAN_MEMBERS"))
|
|
||||||
return message.reply("Sorry, you don't have permissions to use this!")
|
|
||||||
|
|
||||||
let member = message.guild.member(message.mentions.users.first()) || message.mentions.members.first(args[0])
|
|
||||||
|
|
||||||
if (!member)
|
|
||||||
return message.reply("Please mention a valid member of this server")
|
|
||||||
if (member.hasPermission("BAN_MEMBERS"))
|
|
||||||
return message.reply("I cannot ban this user! Invalid Permissions")
|
|
||||||
let banReason = args.join(" ").slice(22);
|
|
||||||
if (!banReason) {
|
|
||||||
banReason = "No reason provided"
|
|
||||||
}
|
|
||||||
|
|
||||||
member.ban({ reason: banReason })
|
|
||||||
return message.reply(`${member.user.tag} has been banned by ${message.author.tag} because: ${banReason}`)
|
|
||||||
}
|
|
||||||
|
|
||||||
//simple purge example command
|
|
||||||
|
|
||||||
if (command === "purge") {
|
|
||||||
const deleteCount = parseInt(args[0], 10);
|
|
||||||
|
|
||||||
if (!deleteCount || deleteCount < 2 || deleteCount > 100)
|
|
||||||
return message.reply("Please provide a number between 2 and 100 for the number of messages to delete");
|
|
||||||
|
|
||||||
const fetched = await message.channel.messages.fetch({ limit: deleteCount });
|
|
||||||
message.channel.bulkDelete(fetched)
|
|
||||||
.catch(error => message.reply(`Couldn't delete messages because of: ${error}`));
|
|
||||||
}
|
|
||||||
|
|
||||||
else return
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
zoizbot/commands/hello.js
Normal file
12
zoizbot/commands/hello.js
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
/*
|
||||||
|
* Message example. When you >hello it will say hello to you
|
||||||
|
* Added the reply so you dont have to get the member declaration but let the "discord.js" handle it
|
||||||
|
* Check out readme for more information
|
||||||
|
* catching errors is indeed the preferred way of debugging your commands. Nodejs is terrible in debugging
|
||||||
|
* make sure you use a decent IDE
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
exports.run = (zoizbot, message, args) => {
|
||||||
|
message.channel.send("Hello!").catch(console.error);
|
||||||
|
message.reply("Thank you for waking me up, i nearly fell asleep :)");
|
||||||
|
}
|
||||||
6
zoizbot/commands/ping.js
Normal file
6
zoizbot/commands/ping.js
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
// ping pong example from the documentation with async await
|
||||||
|
// make all the calculations you want and change the message
|
||||||
|
exports.run = async(zoizbot, message, args) => {
|
||||||
|
const m = await message.channel.send("Ping?");
|
||||||
|
m.edit(`Pong! Latency is ${m.createdTimestamp - message.createdTimestamp}ms. API Latency is ${Math.round(zoizbot.ws.ping)}ms`);
|
||||||
|
}
|
||||||
@@ -36,14 +36,25 @@
|
|||||||
<AdditionalFiles Include="conf.json">
|
<AdditionalFiles Include="conf.json">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</AdditionalFiles>
|
</AdditionalFiles>
|
||||||
<Content Include="commands\examples.js">
|
<Content Include="bootscreen.js">
|
||||||
<SubType>Code</SubType>
|
<SubType>Code</SubType>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Include="commandhandler.js">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="commands\hello.js">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="commands\ping.js">
|
||||||
|
<SubType>Code</SubType>
|
||||||
|
</Content>
|
||||||
|
<Content Include="Legacy Commands\examples.js" />
|
||||||
<Content Include="package.json" />
|
<Content Include="package.json" />
|
||||||
<Content Include="README.md" />
|
<Content Include="README.md" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="commands\" />
|
<Folder Include="commands\" />
|
||||||
|
<Folder Include="Legacy Commands\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<!-- Do not delete the following Import Project. While this appears to do nothing it is a marker for setting TypeScript properties before our import that depends on them. -->
|
<!-- Do not delete the following Import Project. While this appears to do nothing it is a marker for setting TypeScript properties before our import that depends on them. -->
|
||||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="False" />
|
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="False" />
|
||||||
|
|||||||
Reference in New Issue
Block a user