티스토리 뷰

*이 글은 python 버전 3.6, discord.py 버전 0.16.12 기준으로 작성된 글입니다.*

봇 명령어 제작

 

저번에 작성한 소스 코드입니다.

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(client.user.name)
    print(client.user.id)

@client.event
async def on_message(message):
    if message.author == client.user:
        return
        
    await client.send_message(message.channel,message.content)

client.run('token')

이 소스 코드는 사용자가 메시지를 보냈을 때 봇이 같은 메시지를 보내는 기능이었습니다.

이번 시간에는 특정 문자로 시작되는 단어를 입력할 때 봇이 응답하는 기능을 만들어 보도록 하겠습니다.

 

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(client.user.name)
    print(client.user.id)

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('='):
        await client.send_message(message.channel,"명령어 테스트")

client.run('token')

위 사진처럼 '='로 시작할 경우 "명령어 테스트"를 출력하는 프로그램을 작성했습니다.

파이썬의 메소드 중 하나인 startswith()을 이용해 시작 단어가 '='인지 확인을 하는 방식입니다.

다른 메소드를 활용하면 봇의 기능을 다양하게 만들 수 있습니다. 

봇 메시지 꾸미기

 

지금까지 만든 봇은 전혀 꾸며지지 않은 메시지만 보냈습니다.

이번 시간에는 우리가 만든 봇의 메시지를 꾸며보도록 하겠습니다.

디스코드의 메시지를 꾸미는 방법은 Markdown과 discord.py의 embed() 클래스를 이용하는 방법이 있습니다.

Markdown의 경우는 위 링크에 들어가셔서 확인하시면 됩니다.

 

Markdown의 예시입니다.

 

이제 embed() 클래스를 사용하겠습니다.

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(client.user.name)
    print(client.user.id)

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('='):
        await client.send_message(message.channel, embed=discord.Embed(description="명령어 테스트"))
    else:
        await client.send_message(message.channel, embed=discord.Embed(description="올바른 명령어가 아닙니다."))

client.run('token')

앞서 이용했던 명령어도 추가하여 작성했습니다.

소스 코드를 수정할 필요 없이 send_message 함수에 매개변수 embed만 추가해주시면 됩니다.

 

잘 적용된 모습입니다.

하지만 이렇게만 하면 꾸몄다고 하기엔 너무 아쉬운 부분이 보입니다.

embed 클래스에 매개변수를 넣어 더 꾸며보도록 하겠습니다.

 

title

메시지에 제목을 추가하는 매개변수입니다.

 

이런 식으로 메시지 위에 제목을 추가할 수 있습니다.

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(client.user.name)
    print(client.user.id)

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('='):
        await client.send_message(message.channel, embed=discord.Embed(title="디스코드 봇", description="명령어 테스트"))
    else:
        await client.send_message(message.channel, embed=discord.Embed(title="디스코드 봇", description="올바른 명령어가 아닙니다."))

client.run('token')
description

계속 넣어준 매개변수입니다. 보내고 싶은 메시지를 입력하시면 됩니다.

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(client.user.name)
    print(client.user.id)

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('='):
        await client.send_message(message.channel, embed=discord.Embed(description="명령어 테스트"))
    else:
        await client.send_message(message.channel, embed=discord.Embed(description="올바른 명령어가 아닙니다."))

client.run('token')
colour

메시지 앞부분의 색상을 변경하는 매개변수입니다. 색상 코드를 입력하면 됩니다.

 

import discord

client = discord.Client()

@client.event
async def on_ready():
    print(client.user.name)
    print(client.user.id)

@client.event
async def on_message(message):
    if message.author == client.user:
        return

    if message.content.startswith('='):
        await client.send_message(message.channel, embed=discord.Embed(description="명령어 테스트",colour=0x00FFFF))
    else:
        await client.send_message(message.channel, embed=discord.Embed(description="올바른 명령어가 아닙니다.",colour=0x00FFFF))

client.run('token')

그 외에도 많은 기능이 있으니 discord.py 링크로 들어가 필요한 기능을 찾아보시기 바랍니다.

 

다음 시간에는 봇이 채널에 들어가 유튜브 영상을 재생하는 기능을 만들어 보도록 하겠습니다.

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Total
Today
Yesterday