Cannot find module 'node:events' with discord.js when deploy aws lambda

samnaka·2022년 3월 25일
0

명령어를 채널에 보내는 봇을 만들고 serverless로 배포했는데 문제가 생겼다.
discord.js는 node v16부터 지원하는데 문제는 aws lambda는 v14까지만 지원한다.
discord.js를 사용하지 않는 다른 방법을 찾야아 한다.

문제의 코드

const { Client, Intents } = require("discord.js");
require("dotenv").config({ path: `./.env.${process.env.NODE_ENV}` });

class DiscordBot {
  constructor() {
    this.client = new Client({
      intents: [Intents.FLAGS.GUILDS],
    });
  }

  async notify(msg, channel) {
    try {
      this.client.once("ready", async () => {
        console.log(`Logged in as ${this.client.user.tag}!`);
        const channelObj = this.client.channels.cache.get(channel);
        await channelObj.send(msg);
        this.client.destroy();
      });

      this.client.login(process.env.DISCORD_BOT_TOKEN);

      return true;
    } catch (error) {
      console.error(error);
      return false;
    }
  }
}

discord.js 패키지를 사용하지 않고 discord APIcreate message를 활용한다.

const superagent = require("superagent");
require("dotenv").config({ path: `./.env.${process.env.NODE_ENV}` });

class DiscordBot {
  async notify(msg, channel) {
    try {
      const url = `https://discord.com/api/v8/channels/${channel}/messages`;
      await superagent
        .post(url)
        .send({
          content: msg,
        })
        .set({
          authorization: `Bot ${process.env.DISCORD_BOT_TOKEN}`,
        });
      return true;
    } catch (error) {
      console.error(error);
      return false;
    }
  }
}
profile
서버 개발, 투자, 운동, 부자 되고 싶다

0개의 댓글