개인 자료란 (JE)

  서버 커뮤니티

Profile 라고솔로가말했습니다 대표칭호 없음

SaidBySolo 8b58f951b6404b78ae3ba92d55d431f7

Profile

커뮤니티 소통 개발하기 디스코드

[3강:안녕세상!]파이썬으로 디스코드 봇만들어보기

2020.02.12 조회 수 2444 추천 수 0

저번 강좌에서는 봇을 생성후 초대까지 해보았는데요

오늘은 봇을 온라인,명령어에 응답 까지해보겠습니다

파이썬에 대한 기본 상식이 있다고 가정하며,

해당강좌는 클라이언트가 아닌 봇 익스텐선을 사용합니다.


일단은 봇을 온라인 해봅시다.

봇을 온라인하기위해 토큰이 필요한데요

토큰은  2강에서 봇을 생성했던 페이지에서 가져올수있습니다.

8e568acf24c3dcb88f804c3184a2af69.png

이페이지에서 Copy를 눌러주시면 토큰이 복사됩니다.

이제 코딩 을 하러갑시다.

경고:토큰은 봇의소유권입니다. 만약 토큰이 유출됬다면 토큰을 재생성 하시기 바랍니다.

토큰 유출로 인한 피해는 책임지지 않습니다.

1f8bb3efac2bece5955944ad00435e8b.png

코드 설명은 주석을 참고하세요

이제 토큰까지 집어넣었으면 실행 해봅시다!

a12a2717a19f5a3b997e8f7444a1b363.png

VSCode 기준 이렇게 실행 되면 정상입니다 이제 초대한 그룹에서 온라인이 됬는지 봅시다!

cae68a621d5ee4fc03b387107c4e815a.png

봇이 온라인이 되었네요!

근데 아직 부족한 점이많습니다.

켜져있는지도 모르고... 기능도없고...

이제 추가해보도록하죠!


다시 코드로 돌아가봅시다

discord.py의 기본은 이벤트에 의해 기능이 트리거 되는건데요.

많은 이벤트가 있지만 지금은 몇가지만 다룰껍니다.

on_ready

봇이 온라인 상태이고 Discord 서버와 통신 할 준비가되면 이벤트가 트리거됩니다.

보통 간단하게 "모든게 준비됬어요 주인님!" 과같이 무슨 일이 일어나고 있는지 알 수 있습니다.

b9681e2bd5bf616eb3ed7174e4645e3d.png

 코드를 보충 설명하자면...

discord.py는 비동기 방식이라서 여러 기능을 서로 중단하지 않고 동시에 실행할 수 있습니다 

2019-09-05 수정 sleepylapis님 감사합니다!

파이썬의 비동기는 event-loop라 부르는 단일 스레드 위에서, 코루틴 및 awaitable 한 객체들이 서로 주도권을 주고받으면서 

동시에 실행(Concurrent)되는것처럼 보이는 방식입니다. 


자 이제 실행 시켜봅시다.

c729c8ec7e35b0ea4e36bfb46497f04c.png콘솔창에 출력이 되면서 봇이 온라인이 되는 것을 확인 하실수있습니다.

하지만 아직 남은게 있죠?

다시 코딩하러 가봅시다.


2ce5f9ab815b321b7b3872f5d5e8092b.png

실행합시다.

코드 보충설명 하자면 ctx도 여러 인수가있습니다.(ctx.message.guild, ctx.message.channel, ctx.message.author )

하지만 뭐 지정 한게 없으니 자동으로 첫 번째 인수로 쓰기 모든 명령에 전달, 메시지 / 명령을 하게됩니다.

ctx.send 는 메시지에 직접 회신 할 수있는 방법입니다.

 .send 이외에도 채널과 사용자를 포함하여 많은 속성을 가지고 있지만, 

그냥  ctx.send하면 명령이 호출 된 곳과 동일한 채널로 응답 할 수 있습니다.

자 이제 되나 볼까요?


34d15f27c590ddd21a26333d79cbc976.png

잘되네요! 안녕,세상!


오늘은 콘솔창에 봇이 온라인된걸 확인하고

명령어를 칠시 응답 까지 해보았습니다.

다음 강좌는 핑(ping)기능,응답(심화)입니다.

저도 강좌를 적으면서 처음부터의 개념을 차근차근 알아가네요

수고하셨습니다!

다음강좌에서 뵙죠




5개의 댓글

DDang_
2020.02.12

좋은 강의 감사합니다. 봇이름이 눈에 띄네요

아이스틴
2020.02.12

나중에 한번 만들어보고 싶네요

DRDTF
2020.02.27

강좌감사합니다 저도 만들수있겠네요

sleepylapis
2020.08.31

> discord.py는 비동기 방식이라서 여러 기능을 서로 중단하지 않고 동시에 실행할 수 있습니다

> 대충 어... 명령어1 명령어2 명령어3 명령어 4가 내려지면

> 4쓰레드 인 cpu가 1쓰레드는 멍령어1 2쓰레드는 명령어2 ... 이런식으로 생각하시면됩니다.

 

이 부분의 설명이 잘못되었네요. 파이썬의 비동기는 event-loop라 부르는 단일 스레드 위에서, 코루틴 및 awaitable 한 객체들이 서로 주도권을 주고받으면서 동시에 실행되는것처럼 보이는 (동시성, Conccurent 입니다. 병렬성이 아닙니다.) 방식입니다.

@sleepylapis

지적 감사합니다!

 

잊고있었던 게시물인데 잘못된 정보를 이제야 수정하네요 ;-;

 

파이썬 배우면서 끄젹여놓은거라 나중에 한번 갈아엎긴 해야겠네요

 

감사합니다!

뉴스 및 창작물
/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 2

노트블럭전문가

2024-11-27

0

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ?

팀뉴일리시

2024-11-23

4

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2

/files/thumbnails/219/899/003/262x150.crop.jpg?20241009200950

건축

송전탑+도시 2

dbasd12

2024-10-09

2