독도갈매기의 개발 블로그

[Node.js] Node.js로 디스코드 봇을 만들 수 있다고!? -3- 봇에 짤이나 이모티콘을 추가해보자 본문

Node.js

[Node.js] Node.js로 디스코드 봇을 만들 수 있다고!? -3- 봇에 짤이나 이모티콘을 추가해보자

독도갈매기 2020. 10. 13. 11:39

이 포스팅은 Node.js로 디스코드 봇을 만들 수 있다고!? 시리즈에서 -2- 유저 프로필 사진 가져오기에서 이어지는 포스팅입니다.
전 포스팅을 읽지 않으셨다면 읽고 오시는 것을 권장드립니다.

오늘의 목표

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

    // !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);
    }

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

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

이번에 추가한 코드는 13번 줄부터입니다. 명령어는 보내고 싶은 짤에 알맞은 명령어로 만들어주세요.
저는 치즈덕 짤 중 하나를 주워와 !but으로 명령어를 생성해줬습니다.
MessageAttachment로 첨부파일을 생성해줬고 그 파일을 emoji라는 변수에 담아준 것이죠. 담아준 변수를 보내주는것으로
오늘의 목표인 나만의 짤, 이모티콘 명령어 생성을 완료했습니다.


다음 편에서는 json파일을 사용해서 조금 변형을 줘보도록 하고
이번 포스팅도 읽어주셔서 감사드리며 궁금한 점이 있으시다면 댓글로 작성해주세요!

추가된 코드

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

+   // !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