discord-jax v2.0.8
О библиотеке
Discord JAX - Open Source библиотека для ботов, использующих discord.js,\ позволяющая быстро и удобно писать ботов с многофайловой архитектурой
- Поддержка Splash команд
- Удобное управление и менеджмент команд
- Автоматическое преобразование аргумент команды
ПРЕДУПРЕЖДЕНИЕ!
ДАННАЯ БИБЛИОТЕКА ЯВЛЯЕТСЯ ПРОТОТИПОМ. ОНА БУДЕТ РАЗВИВАТЬСЯ И УСОВЕРШЕНСТВОВАТЬСЯ В БУДУЩЕМ.
Документация в README.md будет дополнятся. В данный момент не всё является рабочим.\ Но обязательно будет им в будущем в будущих релизах. В ней могут быть ошибки!\ Документация на других языках скоро будет
Начать
Это например будет index.js
const { Jax } = require("discord-jax");
const Discord = require("discord.js");
const TOKEN =
"TOKEN";
const client = new Discord.Client({
intents: [
Discord.Intents.FLAGS.GUILDS,
Discord.Intents.FLAGS.GUILD_MESSAGES,
Discord.Intents.FLAGS.DIRECT_MESSAGES,
Discord.Intents.FLAGS.DIRECT_MESSAGE_TYPING,
Discord.Intents.FLAGS.GUILDS,
Discord.Intents.FLAGS.GUILD_MESSAGE_TYPING,
],
});
const jax = new Jax(client, {
prefix: "!",
token: TOKEN,
clientId: "APPLICATION ID",
});
jax.on("userSideError", (info) => console.log(info));
jax.on("commandException", (info) => console.log(info));
(async () => {
await jax.load(); //Load commands
await jax.registerSplashCommands(); //Register splash commands
await jax.bind(); //Add listeners to Discord.Client
})();
client.login(TOKEN); //Run basic discord client
Первая команда (Обычная)
Для начала вам следует создать папки в корневом каталоге бота MyFirstBot/commands/test/\ И создать в папке файл первый команду (корневая папка/commands/категория/команда.js)
bot/commands/default/ping-pong.js
const Discord = require("discord.js");
module.exports = {
name: "Пинг",
description: "Пинг понг команда",
aliases: ["ping"],
run: async (msg, args, bot) => {
await msg.reply(`${msg.content}`);
},
};
Первый обработчик событий
Вам понадобится создать файл в каталоге events, вот пример bot/events/ready.js
module.exports = {
name: "ready",
run: async (bot) => {
console.log("Bot is ready")
}
}
Вторая ваша команда (Сплеш команда)
С сплеш командами все примерно также как и с обычными, создайте файл в splash
bot/splash/splash.js
const Discord = require("discord.js");
module.exports = {
name: "Сплеш",
description: "Описание",
alias: "splash",
run: async (interaction, args, bot) => {
await interaction.reply(`Hello world!`);
},
};
Настройки
Настройки передаются аргументом
В настройки можно передать:
- debug: boolean - Вывод информации для отладки (Необязателен)
- commandsPath: string - Путь до команд (Необязателен)
- eventsPath: string - Путь до событий (Необязателен)
- splashPath string - Путь до сплеш команд (Необязателен)
- typing: boolean - Отправлять событие тайпинга для discord.js (Необязателен)
- prefix: string - Префикс бота
- token string - Токен бота
- clientId string - Application ID (обязателен если вы вызываете
Jax.registerSplashCommands()
доclient.login(TOKEN)
)
Полный функционал команды
В данном куске кода используется все возможности библиотеки для обычных команд
const Discord = require("discord.js");
module.exports = {
name: "Пинг-понг", //Name of command, required, string
description: "Базовая команда", //description of command, required, string
aliases: ["ping", "pong", "пинг", "понг"], //Aliases, required, Array.<string>
roles: ['123456789012345678'], //Roles which need to run, optional, Array.<number | string>
permissions: ["ADMINISTRATOR"], //Permissions which need to run, optional, Array.<string>
usage: [
{
name: "count",
type: "NUMBER",
allowed: ["all"],
located: "Кол-во монет",
default: 100,
},
], //Commands arguments, optional, Array.<Object.<string, ?>>, read: Аргументы команд
run: async (msg, args, bot) => {
//Code
}, //Run function, required, function(msg: Discord.Message, args: Object.<string, ?>, bot: Discord.Client)
};
Аргументы команд
В парсинге аргументов для обычных команд используется библиотека discord-command-parser, автору спасибо
Обычно в команде должны быть аргументы, проверять их типизацию или наличие вам не надо Поля в объекте, описывающим аргумент:
name: "count"
обозначает название аргумента, чтобы в дальнейшем получить доступ к его значению в команде с помощьюargs["count"]
(В данном случае), обязателенtype: "number"
обозначает тип аргумента, если не указан, являетсяSTRING
, внутри обработчика команды автоматически аргумент будет приведен к нужному типу данных (Доступны:STRING, NUMBER, CHANNEL, USER, ROLE, BOOLEAN
)allowed: ["all"]
обозначает список исключений, которые могут быть вместо аргумента. (Они не будут пытатся переобразоватся в нужный тип).\ Нужно это например для реализации экономики, и вместо вписывания своего всего баланса он напишет all, чтобы после этого код получил значениеall
изargs["count]
и заменил его на его балансlocated: "русский"
обозначает локализированное название аргумента дляhelp
default: 100
обозначает значение по умолчанию (Без преобразование типов)choices: [{name: 'name', value: 'value'}]
обозначает варианты выбора для аргументов типаSTRING
Отключение команд или категорий
Для отключения команд вам понадобится просто вызвать метод Jax.commandSetActive(name, active)
для команд и splashSetActive
соответственно
Автор
В своем боте вы можете не упоминать данную библиотеку если вы используете её\ Но мне бы хотелось продвигать проект, поэтому я был бы очень рад если вы всё же напишете это <3\ Поддержать проект вы можете по ссылке: https://www.tinkoff.ru/cf/2uFxOG2F1iH \ Прошу писать мне если есть ошибки/баги в проекте и документации\ Почта для обратной связи: kewldanil1@gmail.com\ Discord: kewldan#1818\ VK: VK
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago