2.0.8 • Published 2 years ago

discord-jax v2.0.8

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

О библиотеке

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.0.8

2 years ago

2.0.7

2 years ago

2.0.6

2 years ago

2.0.5

2 years ago

2.0.4

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.1

2 years ago

1.1.0

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.1

2 years ago