안녕하세요. 깜뭉이입니다.
한달 반 정도만에 이어서 연재를 하게 됬네요.
죄송합니다. 빨리 마무리하도록 하겠습니다. 바로 시작합니다.
이번 편은 이벤트 활용하기입니다.
이벤트(Event)가 뭘까요?
영어사전에서 사건, 행사라는 의미로 나와있습니다.
디스코드 봇에게 이벤트는 이벤트의 의미대로 어떠한 사건이 발생했을때, 설정한대로 작동할 수 있도록 해줍니다.
이벤트의 종류는 다양합니다. 새로운 유저가 서버에 처음 들어왔을 때 혹는 나갔을 때, 메세지(채팅)을 보냈을 때, 메세지에 이모지를 표현 했을 때, 유저가 밴 당했을 때 등등.
이벤트가 발생했을 때 원한다면 봇을 작동하게 끔 만들 수 있는거죠!
바로 간단한 예제와 함께 알아보는게 좋겠죠?
제가 보여 드릴 예제는 새로운 유저가 서버에 가입 했을 때 인사말을 DM(개인메세지)으로 봇이 보내주는 기능을 보여 드리겠습니다.
@bot.event #이벤트는 함수명에 따라 기능과 매개변수가 정해져 있습니다. 따라서 보시는 것처럼 표시해줍니다.
async def on_member_join(member):
#on_member_join (유저가 서버에 처음 들어왔을때 발생하는 이벤트입니다.)
await member.send("어서오세요. 저희 서버에 오신 것을 환영합니다.")
#member 매개변수로 처음 들어온 유저의 정보를 받아와 member.send로 해당 유저에게 메세지를 보냅니다.
정말 간단하죠? 이렇게 하면 서버에 가입하는 유저에게 서버의 기본 규칙 또는 주의사항이라던지 인사말을 봇이 대신 전해 줄 수 있습니다. 또한 이전에 했던 Embed를 사용하면 좀 더 깔끔하고 예쁘게 만들 수 있겠죠?
이대로 가면 아쉬우니 예제를 하나 더 해볼까요?
다음 예제는 유저들의 채팅(Message)를 필터링 하는 기능입니다.
@bot.event
async def on_message(message): # 메세지가 채널에 올라왔을 때 (해당 매세지)
message_content = message.content # 메세지 내용을 message_content라는 변수에 담고
bad = message_content.find("씨발") # 메세지 내용 중 씨발이란 단어가 있다면 0 이상을 반환
print(bad)
if bad >= 0:
await message.channel.send("바른말 고운말을 사용합시다.")
# 봇이 메세지가 올라온 채널에 해당 메세지를 전송하고
await message.delete() # 욕설이 담긴 메세지를 삭제합니다.
await bot.process_commands(message) # 메세지 중 명령어가 있을 경우 처리해주는 코드
단순하게 씨X이라는 욕을 필터링 하는 기능입니다.
이것을 응용하며, 타 서버 초대링크가 올라온다면 해당 메세지를 삭제 할 수 있는 기능도 가능합니다.
마지막 줄에 있는 bot.process_commands(message)를 넣지 않는다면 @bot.commands로 우리가 추가한 명령어들이 작동하지 않으니 꼭 추가해주세요.
어떠셨나요? 이벤트를 통해 뭔가 효과적인 기능을 만들 수 있을 것 같죠?!
오늘은 여기까지입니다. API Reference 내 이벤트 부분을 참고 하셔서 다양한 기능을 만들어 보세요!
'Project > Make a Discord Bot with Python' 카테고리의 다른 글
파이썬으로 디스코드 봇 만들기 .06 - API 사용하기(1). (13) | 2020.08.01 |
---|---|
파이썬으로 디스코드 봇 만들기 .04 - Embed 활용하기. (8) | 2020.04.20 |
파이썬으로 디스코드 봇 만들기 .03 - 명령어 만들기 (17) | 2020.02.11 |
파이썬으로 디스코드 봇 만들기 .02 - 튜토리얼 (62) | 2020.02.11 |
파이썬으로 디스코드 봇 만들기 .01 - 준비하기 (15) | 2020.02.11 |
삽질의 기록과 일상을 남기는 블로그입니다. 주로 React Native를 다룹니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!