Защо имам нужда от това?
Може би се питате защо изобщо ми трябва манипулатор на събития. Това е доста лесно да се отговори. Това го прави много по-лесно за вас да изпратите актуализация за събитие и да коригирате грешки. Вече не трябва да имате всички събития в началния 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. Ако имате някакви въпроси, можете да посетите нашият форум за допълнителна поддръжка!