在 Discord 中,Embed(嵌入訊息)是一種格式化訊息的方式,能讓機器人發送 更美觀、結構更清晰 的訊息。你可以用它呈現

  • 標題與說明文字
  • 超連結
  • 欄位(Fields)
  • 圖片與縮圖
  • 作者資訊、時間戳與顏色等裝飾元素

這種結構化格式非常適合呈現資訊、狀態、排行榜、通知等內容。

事實上,對於大部分的超連結網址,Discord都會自動抓取網站的預覽內容並生成一個嵌入,可以自行貼一個Youtube影片來看看

基本語法

一個嵌入訊息是discord.Embed組成的物件,可以用基本的物件初始化來達成:

1
2
3
4
5
6
7
8
from datetime import datetime

embed = discord.Embed(
title="這是標題",
description="這是說明文字",
color=discord.Color.blue(), # 可以是 Color.red(), Color.green()等顏色, 或16進位整數
timestamp = datetime.now()
)

可以像這樣初始化設定的屬性有這些:

欄位 用途描述
title 上方的粗體標題文字
description 主體的說明文字
color/colour 邊框的顏色(可用預設色或 RGB)
timestamp 時間戳記(需要是datetime.datetime格式)

set方法

有些屬性比較複雜,可以有很多個參數,所以Discord將它設計為一個獨立的物件方法

作者

1
2
3
4
5
6

embed.set_author(
name="Rick Astley",
url="https://www.youtube.com/watch?v=dQw4w9WgXcQ",
icon_url="https://yt3.ggpht.com/K2ecE5j90a_DFzugHo0bW98vFlIQ1JJgs9mbcav7RGy1t7adJRnd2jaIv-oc6XzTRvDdWlFCAfc=s88-c-k-c0x00ffffff-no-rj"
)
欄位 用途描述
name 作者名字
url 點擊連結
icon_url 頭像圖片網址

頁腳

1
2
3
4
embed.set_footer(
text="這是頁腳",
icon_url="https://example.com/image"
)

圖片

縮圖預覽

1
embed.set_thumbnail(url="https://minecraft.net/cover")

下面的大圖

1
embed.set_image(url="https://minecraft.net/cover")

欄位

一個欄位會有一個名稱(標題)跟內容
並且一個embed可以有很多個欄位
inline參數可以決定一個欄位是否允許與其他欄位併在同一盤排,還是要自己一排

1
2
3
embed.add_field(name="數學", value="✅ 完成", inline=True)
embed.add_field(name="英文", value="⏳ 進行中", inline=True)
embed.add_field(name="歷史", value="❌ 未開始", inline=False)

送出

1
2
3
4
# 一個嵌入
await interaction.response.send_message(embed=embed)
# 很多嵌入
await interaction.response.send_message(embeds=一個embed組成的陣列)