독도갈매기의 개발 블로그

[Node.js] Node.js로 디스코드 봇을 만들 수 있다고!? -5- 메시지의 이모티콘을 확인하자! -2- 본문

Node.js

[Node.js] Node.js로 디스코드 봇을 만들 수 있다고!? -5- 메시지의 이모티콘을 확인하자! -2-

독도갈매기 2020. 12. 7. 23:18

이 포스팅은 Node.js로 디스코드 봇을 만들 수 있다고!? 시리즈 -5- 메시지의 이모티콘을 확인하자! 1에서 이어지는 포스팅입니다.
전 포스팅을 읽지 않으셨다면 읽고 오시는 것을 권장드립니다.

오늘의 목표

사용자가 보낸 메시지 Reaction을 제거 했을 때 어떤 이름의 Emoji인지를 출력하는 기능을 추가할 것입니다.
img

index.js

const { token } = require('./token'); // token 값을 따로 js파일을 만들어주고 module.exports를 사용하여 token이 코드에 노출되는 것을 조금이라도 방지합니다.
const discord = require('discord.js'); // discord.js를 import 해줍니다.
const app = new discord.Client(); // discord.Client 인스턴스 생성

app.on('ready', () => { // 여기서 사용되는 Arrow Function은 콜백함수입니다.
    console.log(`I am Ready ${app.user.tag}`); // Bot이 준비가 되면 실행할 콜백함수입니다.
});

app.on('messageReactionRemove', (msg, user) => {
    let emojiName = msg.emoji.name;
    console.log(`${emojiName}가 삭제되었습니다.`);
});

app.on('messageReactionAdd', (msg, user) => {
    let Ddabong = (msg.emoji.name == '👍') ? '따봉' : '아님';
    console.log(`emoji ${Ddabong}, test : ${msg.emoji.name}`);
});

app.on('message', msg => {
    // !avatar
    if(msg.content === '!avatar') msg.channel.send(msg.author.displayAvatarURL()); // 메세지를 보낸 유저의 프로필 사진을 받아옵니다.

    // !help
    if(msg.content === '!help') {
        // 저희는 MessageEmbed 생성자로 embed를 생성할 수 있습니다.
        const embed = new discord.MessageEmbed()
        .setTitle("이것은 embed 타이틀입니다.") // 1 - embed의 제목을 담당합니다.
        .setColor('0f4c81') // 2 - embed 사이드 바의 색을 정합니다.
        .setDescription('안녕하세요! 이곳은 설명입니다.'); // 3 - 실제로 설명을 담당하는 곳입니다.

        msg.channel.send(embed);
    }

    // !but
    if(msg.content === '!but') {
        const emoji = new discord.MessageAttachment('https://mblogthumb-phinf.pstatic.net/MjAxOTEwMTVfMTE2/MDAxNTcxMTQ0MjIwODE4.Yd4D6HvDtIQ600HpJJJbadGBT8aVJ91nQ4OUp6jd7oYg.uvrak7O9UOuiIKfWDh7KG906yeEYBSptki2qdXw__YMg.PNG.azzi_01/01_.png?type=w800'); // 첨부파일 링크를 줍니다.

        msg.channel.send(emoji); // 위에서 선언한 emoji 전송
    }

    // !ping 
    if(msg.content === '!ping') msg.channel.send(`pong!`); // 채팅에서 메세지가 들어왔을 때 실행할 콜백함수입니다.
});

app.login(token); // Bot의 토큰을 받아주세요. 0편에서 받은 봇의 토큰으로 로그인하는 코드입니다.

이벤트 설명은 전편에서 했기에 건너뛰고 이번 이벤트는 messageReactionRemove입니다.
저번 이벤트는 메시지에 Reaction이 추가 되었을 때를 의미한다면 이번에는 제거되었을 때 반응합니다.

그래서 이번에는 Reaction이 제거 되면 어떤 emoji가 삭제되었는지 알려주는 기능을 추가 해봤습니다.
다른점이 궁금한게 있다면 댓글로 남겨주세요 감사합니다.

추가된코드

const { token } = require('./token'); // token 값을 따로 js파일을 만들어주고 module.exports를 사용하여 token이 코드에 노출되는 것을 조금이라도 방지합니다.
const discord = require('discord.js'); // discord.js를 import 해줍니다.
const app = new discord.Client(); // discord.Client 인스턴스 생성

app.on('ready', () => { // 여기서 사용되는 Arrow Function은 콜백함수입니다.
    console.log(`I am Ready ${app.user.tag}`); // Bot이 준비가 되면 실행할 콜백함수입니다.
});

+ app.on('messageReactionRemove', (msg, user) => {
+     let emojiName = msg.emoji.name;
+     console.log(`${emojiName}가 삭제되었습니다.`);
+ });

app.on('messageReactionAdd', (msg, user) => {
    let Ddabong = (msg.emoji.name == '👍') ? '따봉' : '아님';
    console.log(`emoji ${Ddabong}, test : ${msg.emoji.name}`);
});

app.on('message', msg => {
    // !avatar
    if(msg.content === '!avatar') msg.channel.send(msg.author.displayAvatarURL()); // 메세지를 보낸 유저의 프로필 사진을 받아옵니다.

    // !help
    if(msg.content === '!help') {
        // 저희는 MessageEmbed 생성자로 embed를 생성할 수 있습니다.
        const embed = new discord.MessageEmbed()
        .setTitle("이것은 embed 타이틀입니다.") // 1 - embed의 제목을 담당합니다.
        .setColor('0f4c81') // 2 - embed 사이드 바의 색을 정합니다.
        .setDescription('안녕하세요! 이곳은 설명입니다.'); // 3 - 실제로 설명을 담당하는 곳입니다.

        msg.channel.send(embed);
    }

    // !but
    if(msg.content === '!but') {
        const emoji = new discord.MessageAttachment('https://mblogthumb-phinf.pstatic.net/MjAxOTEwMTVfMTE2/MDAxNTcxMTQ0MjIwODE4.Yd4D6HvDtIQ600HpJJJbadGBT8aVJ91nQ4OUp6jd7oYg.uvrak7O9UOuiIKfWDh7KG906yeEYBSptki2qdXw__YMg.PNG.azzi_01/01_.png?type=w800'); // 첨부파일 링크를 줍니다.

        msg.channel.send(emoji); // 위에서 선언한 emoji 전송
    }

    // !ping 
    if(msg.content === '!ping') msg.channel.send(`pong!`); // 채팅에서 메세지가 들어왔을 때 실행할 콜백함수입니다.
});

app.login(token); // Bot의 토큰을 받아주세요. 0편에서 받은 봇의 토큰으로 로그인하는 코드입니다.
Comments