본문 바로가기
Programming/Discord Bot (Python)

Discord 봇 만들기 - 5) 봇을 DIY 해보자 - event 편

by Maker KSH 2021. 7. 2.
=Info
아래 코드는 Windows 10, Python 3.9, discord-py 1.7.3 기준으로 작성되었습니다.
(운영체제 등에 따라 조금 다를 수도 있습니다.)(만약 업데이트 등에 의해 코드가 다르다면 알려주세요!)

 

주의)
Discord.py의 개발이 중단되었습니다.
따라서 이 포스팅을 따라할 경우 봇이 정상 작동하지 않을 수 있습니다.
자세한 내용은 "여기"를 참고해주세요.

 

안녕하세요 여러분! 오늘은 게임을 한다면 모두가 아는 통화 플랫폼!

Discord에서 봇을 만드는 방법 5번째! 이제 봇을 원하는 대로 제작하여 봅시다.

(이 강의는 선행 강의를 모두 마쳤다는 전재하에 진행됩니다.)

이번 강의에서는 event처리에 대하여 자세히 알아봅시다.

(여기에있는 코드는 "Discord.py 공식 레퍼런스"를 참조하여 작성되었습니다.)

 


  • <B>.event
@<B>.event
async def <원하는 event>:
...

위에서 설정한 Discoord봇의 이벤트에 따른 실행될 명령어를 설정합니다.

<원하는 event>는 다음과 같습니다.

이 event는 누가, 어디서(어느 방, 서버) 실행했는지 상관 없이, 권한(Ex. 관리자, etc..)만 있으면 실행됩니다.
(모든 event를 서술할수는 없어, 극히 일부만 서술합니다.)

(혹시 여기 없는 event는 댓글로 문의해주시거나, "Discord.py 공식 API 레퍼런스"를 참조해주세요.)


  • on_ready() : 봇이 준비되었을때 실행
# Ex
@bot.event
async def on_ready(): # 봇 실행시 실행
    print('Login -', bot.user.name, bot.user.id)
봇(프로그램) 실행시

  • on_message(<message>) : 누군가 채팅을 쳤을때 실행

[주의!] 명령어도 일단은 on_message이벤트로 인식함.

[주의!] 봇이 친 채팅도 인식함

# Ex
@bot.event
async def on_message(msg):
    print(f"{msg.channel} ({msg.author}) - {msg.content}")
    # "<채널이름> (<유저>) - <채팅 내용>" 출력
    # 봇이 친 채팅도 인식함.
    
    await bot.process_commands(msg)
    # 명령어 일수도 있기때문에, 후속 처리
    # 없으면 command 실행 불가.

 

 

일반 채팅 입력시

 

명령어 입력시

 


다음 강의에서는 "명령어"를 처리하는 방법에 대하여 배워봅시다.

 

여기까지 따라와 주시고, 끝까지 봐주신 여러분들께 감사드립니다!

혹시 궁금한 점이나 사진과 틀린 점이 있으면 알려주세요! 수정하도록 하겠습니다!!

(가시기 전에 공감 한 번만 눌러주시면 저에게 큰 힘이 됩니다! 감사합니다!)

 

댓글