파이썬으로 디스코드 봇 만들기 4 - 임베드(Embed) 사용하기

2020. 11. 26. 08:38discord.py

정말 오랜만에 강좌를 쓰는것 같네요.

지난시간에는 접두사를 설정해서 해당 접두사로 시작하는 명령어들을 인식할 수 있게 하는 코드를 만들었습니다.

디스코드 봇들을 둘러보시면, 밑의 사진처럼 표(?) 같은 메시지를 임베드 라고 합니다.

자작 디스코드봇 '끝봇' 의 도움말 임베드

오늘은 이와 같은 임베드를 생성하고, 보내는 법을 배워보겠습니다.


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

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

@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.startswith(prefix):
        msg = message.content[1:]
    else:
        return None

    if msg == "안녕":
        await message.channel.send("안녕하세요!")

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

client.run('토큰')

지난 시간의 코드입니다.

임베드를 생성할대 사용할 명령어 하나를 추가해줍시다.

...

@client.event
async def on_message(message):

    ...

    elif msg == "!임베드":
        pass

아래 코드가 임베드의 기본적인 틀입니다.

embed = discord.Embed(title="제목", description="설명", color=0xAAFFFF)
embed.add_field(name="필드1", value="필드1 내용", inline=False)
embed.set_footer(text="하단 설명")
embed.set_thumbnail(url="아이콘 url")
await message.channel.send(embed=embed)

아래 사진은 위 코드의 실행 결과입니다.

코드의 맨 윗줄 부터 설명을 드리겠습니다.

임베드를 생성하여, embed 변수에 내용을 저장해줍니다.

title에는 원하는 제목을, description에는 원하는 설명을 적어주시고, color에는 임베드 왼쪽에 표시되길 원하는 색상의 코드를 입력해주시면 됩니다.(hexcode, 16진수). 여기서 원하는 색상의 16진수 값을 찾을 수 있습니다.

embed = discord.Embed(title="제목", description="설명", color=0xAAFFFF)

아래 코드를 통해서 임베드에 필드를 추가해 줄 수 있습니다.

name에는 필드의 이름을, value에는 필드의 설명을 적어주시면 됩니다.

inline이 True이면 다른 필드를 추가했을때 같은 줄에 필드가 추가되고, false이면 다음 줄에 추가됩니다.

value의 내용에 "["텍스트"]("링크")" 형식을 입력하시면 하이퍼링크로 달 수 있습니다.

embed.add_field(name="필드1", value="필드1 내용", inline=False)

아래 코드를 통해서 임베드의 하단 설명을 추가해 줄 수 있습니다.

text에는 원하는 문장을 적어주시면 됩니다.

푸터에는 디스코드의 마크다운이 적용되지 않습니다. 주의해주세요.

icon_url="링크"

를 추가하시면 이미지도 넣으실 수 있습니다.

embed.set_footer(text="하단 설명")

아래 코드를 통해서 임베드의 설명 옆에 사진을 추가 할 수 있습니다.

embed.set_thumbnail(url="사진 url")

위 코드들을 통해 완성된 임베드를 채널에 보내줍시다.

await message.channel.send(embed=embed)

완성입니다!

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

다음 편도 기대해 주세요!