본문으로 바로가기
728x90
반응형

이전글보기

[정보/Discord Bot] - [discord.py 2.0] 02. Discord Bot 계정 만들기

[정보/Discord Bot] - [discord.py 2.0] 03. PyCharm 세팅하기

[정보/Discord Bot] - [discord.py 2.0] 04. discord.py 라이브러리 설치하기

[정보/Discord Bot] - [discord.py 2.0] 05. 봇 기본설정하기

[정보/Discord Bot] - [discord.py 2.0] 06. 봇 명령어 추가하기


이번엔 메세지에 Embed를 추가하는 방법을 알려드릴겁니다.

기본 Embed의 구조는 다음과 같습니다.

Embed

class discord.Embed(*, colour=None, color=None, title=None, type='rich', url=None, description=None, timestamp=None)

위 Embed 클래스로 내용을 작성한 후에, 보내는 메세지에 만들었던 Embed를 추가해서 보내는 형식입니다.

 

일반적으로 메세지를 보낼때 사용하는 send method는 다음과 같습니다.

await send(content=None, *, tts=False, embed=None, embeds=None, file=None, files=None, stickers=None, delete_after=None, nonce=None, allowed_mentions=None, reference=None, mention_author=None, view=None, suppress_embeds=False, ephemeral=False)

위 send method의 수많은 parameter 중, embed와 embeds 를 사용하여 embed를 첨부하게 됩니다.

 

이전에 사용했던 ping 명령어에 embed를 추가하여 보겠습니다

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
import asyncio
import discord
from discord.ext import commands
 
intents = discord.Intents.all()
app = commands.Bot(command_prefix='!', intents=intents)
 
 
async def main():
    async with app:
        file = open("discord_token.txt")
        bot_token = file.readline()
        file.close()
        await app.start(bot_token)
 
 
@app.command()
async def ping(ctx):
    await ctx.send('pong')
 
 
@app.command(name="핑")
async def ping(ctx):
    embed = discord.Embed(title="ping pong", description="핑퐁")
    await ctx.reply('퐁', embed=embed)
 
asyncio.run(main())
 
cs

추가된 코드는 24~25 Line 입니다.

    embed = discord.Embed(title="ping pong", description="핑퐁")
    await ctx.reply('퐁', embed=embed)

24 : 제목은 "ping pong" 내용은 "핑퐁" 인 Embed 객체를 생성합니다.

25 : 생성된 Embed 객체를 명령어 채팅의 답장(reply)에 추가하여 송신합니다.

 

위 처럼 수정 후, 명령어를 입력할 경우 다음과 같이 출력이 됩니다.

 

embeds 또한 사용법은 같습니다.

@app.command(name="핑")
async def ping(ctx):
    embed = discord.Embed(title="ping pong", description="핑퐁")
    await ctx.reply('퐁', embeds=[embed, embed])

그저 embed 단일로 포함하는것이 아니라 배열로 다수의 embed를 보낼 수 있습니다.

 

기본적인 embed 꾸미기는 다음 웹사이트를 이용하시면 편하게 적용하실 수 있습니다.

https://cog-creators.github.io/discord-embed-sandbox/

 

Discord Embed Generator

 

cog-creators.github.io

 

다음 포스팅에서는 Embed를 꾸미는 방법 위주로 준비해보겠습니다 :)


포스팅에 사용된 모든 소스코드는 아래 Github에서 확인하실 수 있습니다.

https://github.com/aochfl/ChoRi_TestBot

 

GitHub - aochfl/ChoRi_TestBot

Contribute to aochfl/ChoRi_TestBot development by creating an account on GitHub.

github.com


참고자료

https://discordpy.readthedocs.io/en/latest/index.html

728x90
반응형