본문 바로가기

[근무일지] LV_intern

[디스코드 알림봇 만들기 2] discord.py 이용_2021.09.07.

  TODAY's GOAL 

 

평소 사용하는 메신저인 디스코드를 이용해 딥러닝 시 학습이 완료되면 알람을 보내주거나, 크롤링봇을 작동시킬 때 크롤링이 완료되면 혹은 예상치 못한 에러로 중단되면 알림을 보내주는 알림봇을 만들고자 합니다.

 

이번 포스팅에서는 위 테스크의 부록 버전인 유저의 말에 응답하는 형태의 봇을 만들어보겠습니다.

 


디스코드 봇을 만드는 방법은 크게 두가지가 있는데, aws의 lambda 함수를 이용하거나 디스코드에서 배포하는 discord.py 패키지를 설치해서 이용하는 것 입니다. 이번 포스팅에서는 디스코드에서 배포하는 discord.py 패키지 이용하는 방법을 살펴보겠습니다.


 

디스코드에서 배포하는 discord.py 패키지 이용

 

discord 패키지를 이용하면 훨씬 간단합니다.

먼저 https://discord.com/developers/applications 라는 디스코드의 개발자센터에 들어갑니다.

 

1. 개발자센터의 Application에 들어가서 New Aplication으로 새로운 어플리케이션을 생성해줍니다. 이후 Bot 배너를 클릭하면 TOKEN 을 복사할 수 있는 버튼이 있습니다. 토큰은 복사하여 마찬가지로 프라이빗한 곳에 따로 저장합니다.

 

2. 다음으로 oauth 배너에 들어가서 'bot'에 체크를 해주면 아래 하얀색 박스 부분에 url이 나타납니다. 이 url을 빈 브라우저창을 열어서 붙여넣고, 서버를 설정해줍니다.

 

3.  다음으로는 터미널에 pip install discord라는 명령어를 입력해서 discord 패키지를 설치해줍니다. 이후 vscode에서 아래와 같은 코드를 입력해줍니다. 자세한 코드는 아래에서 설명하도록 하겠습니다.

 


import discord

 

# discord와 asyncio를 import 합니다.

client = discord.Client()

 

@client.event

async def on_ready(): #봇이 실행되면 한 번 실행함

    print(client.user.name)

    print(client.user.id)

await client.change_presence(status=discord.status.online, activity=discord.Game("봇의 상태메세지"))

# 봇이 정상적으로 작동되면 터미널에 봇의 이름과 id가 출력되며 "봇의 상태메세지" 부분에서 봇의 상태메세지를 설정합니다.

@client.event

async def on_message(message):

    if message.content == "테스트"# 메세지 감지

        await message.channel.send ("{} | {}, Hello".format(message.author, message.author.mention))

# 봇이 "테스트"라는 유저의 메세지를 감지하면 Hello라고 답합니다.

client.run('<본인의 토큰을 입력합니다.>')

# 아까 발급받은 본인의 토큰을 입력합니다.


4. 위 코드를 .py 파일로 저장시킨 뒤 실행시키면, 아래와 같이 봇에 초록색 불이 들어오면서 로그인되고, "테스트"라고 유저가 입력하면 유저의 이름과 함께 "Hello" 라고 답합니다.

 

 


discord.py 패키지를 이용해 봇을 만드는 예제는 여기까지 입니다.

다음 포스팅에서는 slack을 이용한 알림봇 만에 대해 다뤄보도록 하겠습니다.