Бля ебись оно в рот, делаем command handler чтобы бот читал файлы из команд.
Пойду пока кофейка заварю
Вторая часть
Первая часть
Первая наперва нам надо ебануть коллекцию где мы и будем хранить наши команды
Затем стоит подключить fs (Эта такая штучка которая файлы из пк читает)
Создаём папку src в нашем боте, а в ней создаём папку commands, а в ней создаём папку Fun
Ну а дальше начинается жёсктое по***
Я даже не знаю как это объяснять поэтому объясню в коде
Читайте комментарии (Начинаются с //)
Теперь наша задача создать команду.
Идём в нашу папку
Пишем там данные и подключаем Embed. За одно и функцию рандома которую я спиздил с MDN
После чего нам осталось написать саму функцию
И так, aliases отвечает за "ссылку" на нашу команду
Ну и собственно всё что нам остается это запустить бота
И вуаля!
На этом всё, дальше мы подключим нашего бота к базе данных через JSON файл и сделаем какую нибудь чушь с ней
А так-же воспользуемся axios и научимся делать запросы к JSON на сайте
Пойду пока кофейка заварю
Вторая часть
Первая часть
Первая наперва нам надо ебануть коллекцию где мы и будем хранить наши команды
index.js:
client.commands = new Collection();
Затем стоит подключить fs (Эта такая штучка которая файлы из пк читает)
index.js:
const fs = require("fs")
Создаём папку src в нашем боте, а в ней создаём папку commands, а в ней создаём папку Fun
src/commands/Fun
Ну а дальше начинается жёсктое по***
Я даже не знаю как это объяснять поэтому объясню в коде
Читайте комментарии (Начинаются с //)
index.js:
fs.readdir("./src/commands", (err, folders) => {
//Читаем нашу директори
for(let folder of folders) {
//Проходимся циклом по каждой папке отдельно
fs.readdir("./src/commands/" + folder, (err, files) => {
//Читаем каждую папку
if(files == undefined) return
let jsfiles = files.filter(f => f.split(".").pop() === "js")
//Фильтруем наши файлы, если они не являются файлами Javascript, то скипаем
if (jsfiles.length <= 0) return console.log(`No commands to log in in ${folder}`)
//Если файлов нету тогда пишем что их нету
console.log(`\n[Commands] Loading ${jsfiles.length} commands from ${folder} folder...`)
//Пишем количество файлов и их название (бесполезная штука но так лучше понять)
jsfiles.forEach((file, i) => {
//Проходимся по каждому файлу отдельно
let props = require("./src/commands/" + folder + "/" + file)
//Эта штука которая будет отвечать за выполнение самой команды, имени, описании и прочего
//Из module.exports
console.log(`${i + 1}: ${file} loaded!`)
client.commands.set(file, props)
//Добавляем файл и наши дополнения в коллекцию
})
})
}
client.on('messageCreate', message => {
if (!message.content.startsWith(PREFIX) || message.author.bot) return;
const args = message.content.slice(PREFIX.length).trim().split(/ +/);
const command = args.shift().toLowerCase();
try {
let cmd = client.commands.get(command + ".js") || client.commands.find(options => options.aliases && options.aliases.includes(command));
//Если наша команди называется как файл или совпадает с aliases, то выполняем
if(cmd) cmd.run(client, message, args)
//Client - наш клиент
//Message - json от дискорда с данными от сообщения
//Аргументы после нашей команы
} catch (error) {
console.error(error);
}
});
})
Теперь наша задача создать команду.
command.js:
module.exports = {
name: "",
description: "",
aliases: [],
run: async (client, message, args) => {
}
}
Идём в нашу папку
src/commands/Fun
и там создаём файл gay.jsПишем там данные и подключаем Embed. За одно и функцию рандома которую я спиздил с MDN
gay.js:
const { MessageEmbed } = require("discord.js")
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1) ) + min;
}
module.exports = {
name: "Gay",
description: "Возвращает случайно число с твоим гейством",
aliases: ["pidor"],
run: async (client, message, args) => {
}
}
После чего нам осталось написать саму функцию
gay.js:
const { MessageEmbed } = require("discord.js")
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1) ) + min;
}
module.exports = {
name: "Gay",
description: "Возвращает случайно число с твоим гейством",
aliases: ["pidor"],
run: async (client, message, args) => {
let member = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author
//Проверка. Возвращает первого кого вы упомянули, человека по айди либо автора
const embed = new MessageEmbed()
.setTitle("Gay Check")
.setColor("RANDOM")
.setDescription(`🏳️🌈 ${member} gay on ${random(0, 100)}%`)
.setAuthor("Requested by " + message.author.tag, message.author.displayAvatarURL({ size: 1024, dynamic: true, format: "png" }))
.setTimestamp(Date.now())
message.reply({embeds: [embed]})
}
}
И так, aliases отвечает за "ссылку" на нашу команду
message.author
возвращает нам автора, тоесть User у которого мы можем взять tag и avatar пользуясь документацией discord.jsНу и собственно всё что нам остается это запустить бота
И вуаля!
На этом всё, дальше мы подключим нашего бота к базе данных через JSON файл и сделаем какую нибудь чушь с ней
А так-же воспользуемся axios и научимся делать запросы к JSON на сайте
index.js:
const { Client, Intents, Collection, MessageEmbed } = require('discord.js');
const { TOKEN, PREFIX } = require("./data.json")
const fs = require("fs")
const client = new Client({intents: [
Intents.FLAGS.GUILDS,
Intents.FLAGS.GUILD_MEMBERS,
Intents.FLAGS.GUILD_MESSAGES,
Intents.FLAGS.GUILD_PRESENCES
]});
client.on('ready', () => {
console.log("Bot is ready!");
});
client.commands = new Collection();
fs.readdir("./src/commands", (err, folders) => {
//Читаем нашу директори
for(let folder of folders) {
//Проходимся циклом по каждой папке отдельно
fs.readdir("./src/commands/" + folder, (err, files) => {
//Читаем каждую папку
if(files == undefined) return
let jsfiles = files.filter(f => f.split(".").pop() === "js")
//Фильтруем наши файлы, если они не являются файлами Javascript, то скипаем
if (jsfiles.length <= 0) return console.log(`No commands to log in in ${folder}`)
//Если файлов нету тогда пишем что их нету
console.log(`\n[Commands] Loading ${jsfiles.length} commands from ${folder} folder...`)
//Пишем количество файлов и их название (бесполезная штука но так лучше понять)
jsfiles.forEach((file, i) => {
//Проходимся по каждому файлу отдельно
let props = require("./src/commands/" + folder + "/" + file)
//Эта штука которая будет отвечать за выполнение самой команды, имени, описании и прочего
//Из module.exports
console.log(`${i + 1}: ${file} loaded!`)
client.commands.set(file, props)
//Добавляем файл и наши дополнения в коллекцию
})
})
}
client.on('messageCreate', message => {
if (!message.content.startsWith(PREFIX) || message.author.bot) return;
const args = message.content.slice(PREFIX.length).trim().split(/ +/);
const command = args.shift().toLowerCase();
try {
let cmd = client.commands.get(command + ".js") || client.commands.find(options => options.aliases && options.aliases.includes(command));
//Если наша команди называется как файл или совпадает с aliases, то выполняем
if(cmd) cmd.run(client, message, args)
//Client - наш клиент
//Message - json от дискорда с данными от сообщения
//Аргументы после нашей команы
} catch (error) {
console.error(error);
}
});
})
client.login(TOKEN);
gay.js:
const { MessageEmbed } = require("discord.js")
function random(min, max) {
return Math.floor(Math.random() * (max - min + 1) ) + min;
}
module.exports = {
name: "Gay",
description: "Возвращает случайно число с твоим гейством",
aliases: ["pidor"],
run: async (client, message, args) => {
let member = message.mentions.users.first() || client.users.cache.get(args[0]) || message.author
//Проверка. Возвращает первого кого вы упомянули, человека по айди либо автора
const embed = new MessageEmbed()
.setTitle("Gay Check")
.setColor("RANDOM")
.setDescription(`🏳️🌈 ${member} gay on ${random(0, 100)}%`)
.setAuthor("Requested by " + message.author.tag, message.author.displayAvatarURL({ size: 1024, dynamic: true, format: "png" }))
.setTimestamp(Date.now())
message.reply({embeds: [embed]})
}
}
Последнее редактирование: