첫 번째 Discord.JS 봇을 위한 좋은 이벤트 핸들러

이게 왜 필요한가요?



이벤트 핸들러가 왜 필요한지 스스로에게 물어볼 수도 있습니다. 그것은 대답하기 아주 간단합니다. 이벤트 업데이트를 푸시하고 버그를 수정하는 것이 훨씬 간단합니다. 더 이상 스타터 자바스크립트 파일에 모든 이벤트를 포함할 필요가 없습니다. 이것은 런처(스타터) 파일에 이러한 모든 이벤트가 없는 훨씬 적은 코드가 있음을 의미합니다. 갖고 싶은 이벤트마다 파일을 생성할 수 있습니다.

const fs = require('fs'); // fs is the package we need to read all files which are in folders


다음 이벤트 핸들러는 어떤 이점을 제공하나요?


  • 갖고 싶은 각 이벤트에 대한 파일을 만들 수 있습니다(모든 이벤트는 여기).
  • 모든 이벤트에 대한 훨씬 더 명확한 개요 및 버그를 쉽게 찾고 이벤트에 새로운 기능 추가
  • 기본 런처 파일에 코드가 훨씬 적음

  • 프로그래밍부터 시작하자



    우선 폴더에 있는 모든 파일을 읽으려면 fs라는 패키지가 필요합니다. 이 패키지의 경우 이 패키지가 Node.JS 번들에 포함되어 있기 때문에 아무것도 설치할 필요가 없습니다. 이에 대한 자세한 내용은 여기에서 읽을 수 있습니다(이 링크는 fs 문서이기도 합니다).

    이 줄에는 fs 패키지가 필요합니다.

    const fs = require('fs'); // fs is the package we need to read all files which are in folders
    
    fs.readdir('./events/', (err, files) => { // We use the method readdir to read what is in the events folder.
        // Code
    });
    


    보시다시피, 우리는 즉시 fs 패키지를 사용하기 시작합니다. 우리의 목적을 위해 readdir() 메서드를 사용합니다(이 메서드에 대해 더 알고 싶다면 여기에서 할 수 있습니다).
    세 번째 줄에서 readdir() 메서드를 사용하여 2개의 인수(err(오류) 및 파일(이 폴더에 있는 파일)의 콜백으로 ./events 디렉토리의 내용을 읽습니다.
    현재 폴더 구조는 다음과 같습니다.

    - main.js
        - events
    


    우리가 추가한 첫 번째 새 줄(4번째 줄)은 단순히 ./events 폴더의 모든 내용을 확인하는 동안 오류가 발생했는지 확인합니다. 그렇다면 오류 메시지와 함께 콘솔에 오류를 던져 무엇이 잘못되었는지 알 수 있습니다.
    다음 줄에는 ./events 디렉토리의 모든 내용을 확인하는 데 사용한 readdir() 함수에서 가져온 파일 인수가 필요합니다.

    files is an array of the names of the files in the directory excluding '.' and '..' .



    즉, forEach() 함수를 사용하여 콜백 파일이 있는 모든 단일 이벤트 파일을 살펴볼 수 있습니다.

    이 새 줄(6번째 줄)에서는 이벤트 폴더의 이벤트 파일만 있으면 됩니다. 단일 이벤트 파일에 대한 모든 정보를 반환합니다.

    추가한 첫 번째 줄에서 eventFunction 변수가 비활성화되었는지 확인합니다. 그렇다면 오류가 발생하지 않고 반환합니다.
    그런 다음 3개의 새로운 변수가 있습니다. 첫 번째는 eventFunction에 이벤트 이름과 함께 이벤트 속성이 있는지 확인하여 이벤트 이름을 정의합니다. 그렇지 않은 경우 변수는 이벤트 파일의 이름을 반환합니다. 예: ready.jsfile의 경우 이벤트 변수가 준비됩니다.
    다음 새 변수는 이미터를 정의합니다. 이것은 이벤트의 "실행자"또는 "엔진"입니다. 이 경우 클라이언트(Discord 봇)입니다.
    새로운 마지막 변수는 한 번입니다. 이 변수는 단순히 eventFunction의 한 번 속성을 반환합니다. 이 속성은 이 이벤트가 한 번 실행되어야 하는지 여부를 결정합니다.

    다음으로 try catch 블록을 사용합니다. try{} 블록의 코드 실행 중에 오류가 발생하면 즉시 오류 스택( error.stack )과 함께 오류가 발생합니다.
    try{} 블록에서 이미터(클라이언트)는 위에 정의된 모든 설정을 사용하여 이벤트를 실행합니다.

    결론



    이 이벤트 핸들러는 Discord 봇의 파일을 더 잘 구성하는 데 실제로 도움이 될 수 있습니다. 질문이 있는 경우 포럼을 방문하여 추가 지원을 받을 수 있습니다!

    좋은 웹페이지 즐겨찾기