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

명령어를 채널에 보내는 봇을 만들고 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;
    }
  }
}

좋은 웹페이지 즐겨찾기