Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 클레이튼
- Non-Blocking
- it5분잡학사전
- 카카오페이지클론
- 정보처리기사실기
- ETH
- 페이지클론
- 이더리움
- web3.js
- 카카오홈페이지클론
- 블록체인
- 비트코인
- node.js
- 정보처리기사
- 정보처리기사실기요약
- blockchain
- solidity
- 노마드코더
- ERC721
- 노개북
- React
- Klaytn
- ERC-721
- 콜백함수this
- git
- 2021정보처리기사실기
- github
- npm
- it5
- 솔리디티
Archives
- Today
- Total
Be lazy, Be crazy
discord.js를 이용해서 봇 만들기 [node.js discord 봇 제작] 본문
728x90
반응형
https://discord.com/developers/applications
디스코드 개발자 페이지에서 app을 하나 만들도록하자
좌측 메뉴 Bot을 클릭하시면 우측에 Add Bot 버튼을 누르시면 위 창이 뜹니다.
여기서 Yes, do it!을 눌러주세요.
토큰값은 1회만 보여준다고하니 꼭 저장하셔서 다른곳에서 보관하시기를 바랍니다.
permission해주는 부분으로써 봇에게 어떤 권한을 부여해줄 것인가에 대해서 선택하는 부분입니다.
그리고 밑에서 생서되는 URL에 들어가보면 어떤 서버에서 봇을 사용할것인가에 대해서 적용할 수 있습니다.
밑에 사진과 같이 WATTO라는 봇이 제가 만들어놓은 디스코드 서버에 들어왔습니다.
봇이 이상없이 성공적으로 추가되었다면 서버에 아래 화면처럼 뜰 것입니다.
이제 이 봇에 생명을 붙여넣어줄 차례입니다.
서버 세팅법
이제 서버를 돌릴 수 있는 기기 혹은 서비스가 필요합니다.
Node.js
Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.
nodejs.org
먼저 노드JS가 필요합니다. 위 링크에 접속해 nodejs를 설치해주세요 윈도우 환경이 아니라면
curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
sudo apt-get install -y nodejs
curl을 이용해 설치해주시면 됩니다. nodejs의 설치버전을 확인하려면
nodejs --version && nodejs -v
설치가 모두 완료되었다면 봇 구동에 사용할 파일들을 넣을 폴더를 하나 생성해주세요
그 런뒤 터미널을 켜서 해당 폴더를 vscode로 열어줍니다.
npm install discord.js || yarn add discord.js
const Discord = require('discord.js'); // discord.js 라이브러리 호출
const client = new Discord.Client({ intents: ["GUILDS", "GUILD_MESSAGES"] }) // Client 객체 생성
// discord 봇이 실행될 때 딱 한 번 실행할 코드를 적는 부분
client.on('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('message', msg => {
try {
// !ping
if (msg.content === '!ping') msg.channel.send(`pong!`); // 채팅에서 메세지가 들어왔을 때 실행할 콜백함수입니다.
if (msg.content === '!avatar') msg.channel.send(msg.author.displayAvatarURL()); // 메세지를 보낸 유저의 프로필 사진을 받아옵니다.
if(msg.content === '!help') {
// 저희는 MessageEmbed 생성자로 embed를 생성할 수 있습니다.
const embed = new Discord.MessageEmbed()
.setTitle("이것은 blockchain service bot입니다!") // 1 - embed의 제목을 담당합니다.
.setColor('0f4c81') // 2 - embed 사이드 바의 색을 정합니다.
.setDescription('안녕하세요! 이곳은 추후에 설명할 공간입니다.'); // 3 - 실제로 설명을 담당하는 곳입니다.
console.log(embed);
msg.reply({ embeds: [embed] })
}
//console.log(msg.author); 사용자 정보가 발생합니다.
}catch (e) {
console.log(e);
}
});
// 봇과 서버를 연결해주는 부분
client.login('OTU0NjAyMDEyNTQzMTYwMzYw.YjVgZw.0Rx0CTdd6QcxcJ3y5saltSQZZ1A');
이렇듯 discord.js를 이용해서 디스코드 봇을 만들어 볼수 있는 기회가 있었습니다.
보통적으로 clinet.on이라는 함수는 채널에서 이벤트가발생 할때 (누군가 채팅을 할때) 어떤 기능을 작성할건지에대해서 작성할수 있었습니다.
!ping 이라는 단어를 채팅창에 치면 !pong 이라는 함수를 통해서 봇이 채팅창에 메세지를 보내주었고
!avatar이라는 단어를 채팅창에 입력하면 사용자의 avatar img지를 가져오는 명령어를 작성했습니다.
msg.channel.send() => 그냥 채팅을 해주는 역할
msg.reply (content) => 아래 사진 참조
이외에도 더 재밌는 기능이 많은것으로 알고 있습니다. 추후에 부족한부분이나 재밌는 기능들은 조사하고 공부해서 올리도록 하겠습니다.
보시다가 이해안되는 부분이 있으시다면 알려주십쇼!!
기능을 작성하다가 이런 오류를 마주치게 되면
https://stackoverflow.com/questions/68239927/embed-discordapierror-cannot-send-an-empty-message
위에 URL을 참조해서 해결하기를 바란다.
https://github.com/Ukong0324/Discord-JS-Tutorial/blob/master/2%ED%99%94/bot.js
// 기본적인 튜토리얼 코드가 작성되어있다.
반응형
'Node.js' 카테고리의 다른 글
Google Sheet를 nodeJS로 연결하기 [googleapis] (1) | 2022.09.21 |
---|---|
node.js HTTP Server 템플릿 제작(basic)(1) (0) | 2022.03.27 |
sync vs async? blocking vs non-blocking? (0) | 2021.12.10 |
[Node.js] Node.js와 Non-blocking (0) | 2021.12.10 |
Comments