這幾天在寫 Discord 的機器人,
遇到了一個小問題,網路上也沒有中文的解決方式,外文的方法也十分稀少。
因此就決定來獻醜給後人乘涼~~
狀況:
Discord 的 Embed 元件雖然標榜有 6000 bytes 的大小可以使用,卻只能容納 25 行的訊息,
簡單來說,就是只能 embed.add_field() 25 次,超過的行數就會被自動省略。
解決方式:
原程式碼:
embed = discord.Embed( title = "Title" )
embed.add_field( name = "Name", value = "Value", inline = False )
await message.channel.send( embed = embed )
新程式碼:
#embed = discord.Embed( title = "Title" )
o_embed = [ None, None, None, None, None, None, None, None ,None ,None ]
embed_now = 0
embed_count = 0
o_embed[ embed_now ] = discord.Embed( title = "Title" )
#embed.add_field( name = "Name", value = "Value", inline = False)
o_embed[ embed_now ].add_field( name = "Name", value = "Value", inline = False )
if embed_count == 25:
embed_now += 1
o_embed[ embed_now ] = discord.Embed( title = '*' )
embed_count = 0
#await message.channel.send( embed = embed )
for i in o_embed:
if i == None:
break
else:
await message.channel.send( embed = i )
成果:
Before:
After:
其實就是把 Embed 用 List 來表示,若 .add_field 到了最大 25 次後,接下來就寫入到下個 Embed 裡。
當然還有更多方式可以寫得更好,
例如:使用 Link List 並 Overwrite class,可以讓程式碼更加漂亮,往後要用時只要呼叫 class 就可以。
看之後我有沒有多餘的時間完成。
歡迎轉載,但請附上出處。
有問題歡迎留言詢問。