독도갈매기의 개발 블로그

[Node.js] Node.js로 디스코드 봇을 만들 수 있다고!? -2- 유저 프로필 사진 가져오기 본문

Node.js

[Node.js] Node.js로 디스코드 봇을 만들 수 있다고!? -2- 유저 프로필 사진 가져오기

독도갈매기 2020. 10. 12. 09:35

이 포스팅은 Node.js로 디스코드 봇을 만들 수 있다고!? 시리즈에서 -1- ping pong에서 이어지는 포스팅입니다.
전 포스팅을 읽지 않으셨다면 읽고오시는 것을 권장드립니다.

오늘의 목표

img

!avatar 명령어를 호출했을 때 호출한 유저의 프로필 사진을 받아와 채널에 출력해주는 기능을 구현할 것입니다.

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()); // 메세지를 보낸 유저의 프로필 사진을 받아옵니다.

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

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

명령어 !avatar를 입력받으면 msg를 보낸 사람 msg.author죠? 그 안에 있는 displayAvatarURL 함수를 사용해
사용자의 프로필 사진 링크를 받아와 그대로 채팅 채널에 출력하게 되면 위에 있는 사진처럼 명령어를 입력한 유저의 사진을 출력할 수 있습니다.

Node.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()); // 메세지를 보낸 유저의 프로필 사진을 받아옵니다.

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

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