※ 작성자가 작성한 내용이 일부 틀릴 수도 있음 주의
※ 작성자가 코드 쓰다가 계속 코드 수정함 주의
그동안 약간씩의 수정은 있었으나...
디코 봇 마지막 글 이후 2주의 시간이 지났는데...
특별히 글로 쓸만한 새로운 개념은 없었다.
그런데 쓰다보니 하도 명령어 채널을 글로 뒤덮기도 하고
Queue 를 출력하는 데에 10번의 출력을 반복하는 것 자체도 비효율적일 뿐더러 (대충 짜놓고 방치했었음)
채널이 좀 지저분해지는 것이 있었다.
그래서 좀 찾아보니, 메시지를 send 하는 데에 있어,
"Embed" 라는 데이터 클래스가 있었고 많이 귀찮기는 한데 예쁘게 출력하기는 좋아서 사용했다.
Discord.Embed
아래는 대충 기본형태 및 주요 변수들을 나열한 것들이다.
class discord.Embed(*, colour=None, color=None, title=None, type='rich', url=None, description=None, timestamp=None)
Attributes # ( 주요하다고 생각되는 매개값들만 추렸음. 빠졌는데 좋은 게 있을 수도? )
title # 제목 정도로 생각하면 된다. Embed 형태로 출력할 때 맨 위에 출력되는 문자열이다.
description # 설명이긴 한데, 사실상 주요 내용으로 쓰는 경우도 많을 것이라 생각됨.
url # URL을 같이 넣어주고 싶다면 넣어주자.
timestamp # 날짜나 시각을 넣어주고 싶으면 넣어주자.
colour / color # 출력하는 걸 보면, 가장 왼쪽 부분에 기다란 세로 줄이 있는데, 그거 색 바꾸는 거다.
image # 이미지의 URL, 너비, 높이를 지정해서 추가할 수 있다.
thumbnail # image랑 똑같이 URL, 너비, 높이를 지정할 수는 있는데, 썸네일 용이란 차이점이 있다.
video # image나 thumbnail 과 똑같이 지정은 되는데, 영상이다.
author, provider # 잘 쓰면 쓸모가 많을 것 같긴 한데, 써본 적이 없어서 뭐라할지 모르겠다.
대략 이러한 매개값들이 있고 (이외에도 더 있고), 함수도 많기는 하지만
일단은 Embed를 이용한 출력만 하고 싶어서 이 정도까지만 알아보도록 하자.
title
가장 중요한 매개값1
말 그대로 Embed 의 제목이다. 진하고 약간 큰 텍스트로 나온다.
embed = discord.Embed(title="텍스트")
혹시나 모를 수 있는 사람들을 위해,
위와 같은 식으로 discord.Embed의 괄호 안에 title = "뭐시기" 형태로 넣어주면 된다.
title 뿐만 아니라 매개값들을 다 "," 로 구분해주면서 쭉 넣어주면 된다.
어쨌든 맨 위의 "Play List Queue" 와 같은 형태로 보이게 된다.
description
가장 중요한 매개값2
말 그대로 설명이다. title에 비해 작고 옅은 텍스트로 출력된다.
최대 4096바이트였나 그만큼의 string을 넣을 수 있다.
그림은 재탕을 그냥 하지 않았다. 위 그림의 첫 줄 title을 제외한 나머지가 description이다.
Colour / Color
매우 개인적으로 중요하다고 생각하는 매개값
Colour 또는 Color 로 쓴다. 알다시피 왼쪽은 영국식, 오른쪽은 미국식이다.
가장 왼쪽의 세로줄 색깔을 바꾸어준다.
위 그림의 경우, 0xFF5733 을 넣어준 것이다. (다른 글에서 찾은 것과 똑같은 값을 넣어준 것이긴 하다.)
해당 코드 부분 및 결과물 + 여담
@bot.command()
async def queue(message,*vars):
global playNumber
global messageChannel
queueIdx = playNumber - 1
if len(vars) > 0 and vars[0].isdecimal():
queueIdx = int(vars[0])
if message.channel == messageChannel:
plist = []
for i in range(max(0,queueIdx-5),min(len(playList),queueIdx+5)):
if i == playNumber - 1:
plist.append("현재 진행 곡 ↓")
plist.append(f"{i} : {playList[i]['title']} / {playList[i]['duration']//60}분 {playList[i]['duration']%60}초")
embed = discord.Embed(title="Play List Queue", description="\n".join(plist), color=0xFF5733)
await message.channel.send(embed=embed)
현재 플레이 하는 곡을 포함해서으로 앞으로 최대 5곡, 뒤로 최대 4곡까지 보여주는 코드다.
결과는 아래와 같다.
뭔가 Social Credits가 올라갈듯한 느낌도 드는게 있고
버튜버를 너무 좋아하는 것 같아보이는 사람도 있지만
일단 자유롭게 틀고 싶은거 틀게 만든 걸 가지고 캡쳐해서 글을 쓰려고 한 것이다보니
양해바란다.
* 혹시나 하니 본인은 Meme 을 좋아하는 사람이라는 것을 밝힙니다.
'개발일지 > 디스코드 봇' 카테고리의 다른 글
디스코드 봇 개발 일지 2023-02-17 - OpenAI / ChatGPT / GPT-3 로 챗봇 만들기 (0) | 2023.02.17 |
---|---|
디스코드 봇 개발 일지 2023-02-16 - OpenAI / ChatGPT / GPT-3 알아보기 (0) | 2023.02.17 |
디스코드 봇 개발 일지 2023-01-11 - 유튜브 검색 기능, 영상 정보 (0) | 2023.01.11 |
디스코드 봇 개발 일지 2023-01-09 - skip, MPD Manifest 문제 해결 (0) | 2023.01.09 |
디스코드 봇 개발 일지 2023-01-05 - 음악 봇 (2) | 2023.01.05 |