Защо имам нужда от това?

Може би се питате защо изобщо ми трябва манипулатор на събития. Това е доста лесно да се отговори. Това го прави много по-лесно за вас да изпратите актуализация за събитие и да коригирате грешки. Вече не трябва да имате всички събития в началния javascript файл. Това означава, че вашият файл за стартиране (начален) има много по-малко код без всички тези събития. Можете да създадете файл за всяко събитие, което искате да имате.

Какви предимства предлага следният манипулатор на събития?

  • Можете да създадете файл за всяко събитие, което искате да имате (Всички събития тук)
  • Много по-ясен преглед на всички събития и лесно намиране на грешки и добавяне на нови функции към вашите събития
  • Главният файл за стартиране има много по-малко код

Да започнем с програмирането

Първо имаме нужда от пакет с име fs, за да четем всички файлове, които се намират в папки. За този пакет не е необходимо да инсталираме нищо, защото този пакет е включен в пакета Node.JS. Можете да прочетете повече за това тук(Тази връзка също е документацията на fs).

В този ред изискваме пакета fs.

Както можете да видите, ние незабавнозапочваме да използваме нашия пакет fs. За нашите цели ние използваме метода readdir() (Ако искате да прочетете повече за този метод, можете да направите това тук).

В третия ред използваме метода readdir() за прочитане на съдържанието на директорията ./events с обратно извикване на 2 аргумента(грешка (грешка) и файлове (файлове, които са в тази папка)).

Нашата текуща структура на папките наистина изглежда така:

Първият нов ред (4-тият ред), който добавихме, просто проверява дали е имало грешка по време на проверката на цялото съдържание на папката ./events. Ако да,изпратете грешка в конзолатасъс съобщението за грешка, за да разберете какво се е объркало.

Следващият нов ред се нуждае от аргумента files, който получихме от функцията readdir(), която използвахме, за да проверим цялото съдържание на директорията ./events.

files е масив от имената на файловете в директорията, с изключение на '.' и '..'. Източник

Това означава, че можем да използваме функцията forEach(), за да преминем през всеки един файл със събития с обратното извикване file.

В този нов ред (6-ти ред) ние просто изискваме файла на събитието от папката за събития. Това ни връща цялата информация за един файл със събития.

В първия ред, който добавихме, проверяваме дали променливата eventFunction е деактивирана. Ако да, върнете, без да извеждате грешка.

След това имаме 3 нови променливи. Първата дефинира името на събитието, като проверява дали eventFunction има свойство event с името на събитието. Ако не, променливата връща името на файла на събитието. Пример: За файла _19, променливата event ще бъде ready .

Следващата нова променлива дефинира emitter. Това е „изпълнителят“ или „двигателят“ на събитието. В нашия случай това е client (ботът Discord).

Последната променлива, която е нова, е once. Тази променлива просто връща свойството once на eventFunction. Това свойство определя дали това събитие трябва даизпълни веднъж.

След това използваме try catch block. Ако има грешка по време на изпълнение на кода в блока try{}, той незабавно извежда грешка със стека за грешки ( error.stack )

В блока try{} излъчвателят (клиентът) изпълнява събитието, като използва всички дефинирани по-горе настройки.

Пример за структура на папка след добавяне на този манипулатор на събития:

Заключение

Този манипулатор на събития наистина може да ви помогне да организирате по-добре вашите файлове на вашия бот Discord. Ако имате някакви въпроси, можете да посетите нашият форум за допълнителна поддръжка!