파이썬으로 디스코드 봇 만들기 3 - 접두사 사용하기

2020. 8. 26. 11:24discord.py

지난번 강좌에서는 간단한 코드를 작성해본 후, 실행을 해보았습니다.

보통 디스코드 봇들을 보면 접두사가 있죠?
MEE6 같은 봇은 "!", 자작 봇인 끝봇은 "^^" 등등...

이번 강좌에서는 이와 같이 봇의 접두사를 설정해 봅시다. 


지난시간에 message.content 변수는 입력된 메시지의 내용을 가지고 있다고 했었죠?

message.content 변수는 문자열(str)이기 때문에 문자열에 쓸 수 있는 함수들은 다 사용할 수 있습니다.

인덱싱, 슬라이스 등등...

이번 강좌에서는 그중 startswith와 슬라이싱을 써보려 합니다. startswith 함수로 설정한 접두사를 감지하는 거죠.

 

# -*- coding:utf-8 -*- 
import discord
import asyncio

token = "봇의 토큰"
client = discord.Client()

@client.event
async def on_ready():
    await client.change_presence(status=discord.Status.online, activity=discord.Game("ㅎㅇ"))
    print("봇 실행됨!")
    print(client.user.name)
    print(client.user.id)
    
@client.event
async def on_message(message):
    if message.author.bot:
        return None
        
    if message.content == "!안녕":
        await message.channel.send("안녕하세요!")

지난 시간에 작성한 코드입니다.

이번엔 코드 위쪽에 prefix라는 변수를 설정해 줍시다.

저는 접두사를 ?로 설정하겠습니다.

prefix = "?"

그리고 on_message 부분을 고쳐봅시다.

@client.event
async def on_message(message):
    if message.content.startswith(prefix):
        msg = message.content[1:]
    else:
        return None
    if msg == "안녕":
        await message.channel.send("안녕하세요!")

엄청 효율적이라고 할 순 없지만, 나름 편리한 방법입니다.

접두사를 바꾸고 싶다면 맨 처음 변수 하나만 바꿔주면 되니까요.

이를 활용해서 유저/서버별로 접두사를 커스텀할 수도 있겠죠.

이제 실행해 봅시다!

성공! 설정해 놓은 접두사를 입력했을 때만 인식하는 것을 볼 수 있습니다.

접두사를 * 로 바꿔서 실행해 봅시다.

prefix = "*"

다시 실행해 봅시다!

성공! 또다시 설정한 접두사만 인식하네요.

다른 명령어도 추가해 봅시다.

    elif msg == "잘가":
        await message.channel.send("안녕히가세요!")

 

성공!

 

이상 디스코드 봇 만들기 3편이었습니다.

다음 편도 기대해 주세요!