iT邦幫忙

2023 iThome 鐵人賽

DAY 24
0

為了讓介面更好看所以我使用了在discord很常見的文字美化功能,embed

介紹

在Discord文檔中,嵌入式消息(embed)是一種用於以更漂亮和結構化的方式顯示文本和圖像信息的方法。

程式範例

我這隻程式是有搭配tree.command()

import discord
from discord import app_commands



MY_GUILD = discord.Object(id=Guild_ID)  # replace with your guild id

class MyClient(discord.Client):
    def __init__(self, *, intents: discord.Intents):
        super().__init__(intents=intents)
        self.tree = app_commands.CommandTree(self)

    async def setup_hook(self):
        self.tree.copy_global_to(guild=MY_GUILD)
        await self.tree.sync(guild=MY_GUILD)


intents = discord.Intents.all()
client = MyClient(intents=intents)


@client.tree.command()
async def rule(interaction):
    embed = discord.Embed(
        title='Rule',
        description='骰寶規則',
        colour=discord.Colour.purple()
    )
    embed.add_field(name=":regional_indicator_b: 大", 
                    value="規則:總點數 11 至 17 ( 遇圍骰莊家通吃 )\n賠率:1 賠 1", 
                    inline=False) and embed.add_field(name=":regional_indicator_s:小" ,value="規則:總點數為 4 至 10 ( 遇圍骰莊家通吃 )\n賠率:1 賠 1\n",inline=False)

    await interaction.response.send_message(embed=embed)



client.run('token')

程式碼說明

先介紹embed的基本架構

embed = discord.Embed(
    title='Rule',  # 嵌入式消息的標題
    description='骰寶規則',  # 嵌入式消息的描述
    colour=discord.Colour.purple()  # 嵌入式消息的顏色
)
  • title 是嵌入式消息(embed)的標題,這裡設置為'Rule',表示這是骰寶遊戲的規則。
  • description 是嵌入式消息(embed)的描述,這裡設置為'骰寶規則',用於提供有關嵌入式消息(embed)內容的簡要信息。
  • colour 是嵌入式消息(embed)的顏色,這裡設置為discord.Colour.purple(),表示消息的顏色為紫色。你可以根據需要更改顏色。

接下來使用add_field方法來添加字段到嵌入式消息(embed)中:

embed.add_field(name=":regional_indicator_b: 大", 
                value="規則:總點數 11 至 17 ( 遇圍骰莊家通吃 )\n賠率:1 賠 1", 
                inline=False) and embed.add_field(name=":regional_indicator_s:小" ,
                value="規則:總點數為 4 至 10 ( 遇圍骰莊家通吃 )\n賠率:1 賠1\n",
                inline=False
                )
  • add_field 方法用於添加一個字段到嵌入式消息(embed)中。
  • name 是字段的標題,這裡我使用了貼圖和文字來表示大。
  • value 是字段的內容,這裡包含了骰寶遊戲規則的詳細信息,包括規則和賠率。
  • inline 是一個布林值,用於指定字段是否應該在同一行內顯示。你設置為False,所以字段會顯示在不同的行上。
  • and 是用來將兩段文字嵌入到同一個嵌入式消息(embed)中。

這是將布林值設為False
https://ithelp.ithome.com.tw/upload/images/20231008/201611169epKubiOVP.png

這是將布林值設為True
https://ithelp.ithome.com.tw/upload/images/20231008/20161116UuwAzR10oJ.png

嵌入式消息(embed)裡面還可以放入圖片、連結等等非常方便,也可以放入參數像是這樣

embed.add_field(name="大小", 
                value = f"你猜的總和是 {大或小}\n骰子點數為: {dice_roll}, 總點數為: {total}\n恭喜,你贏了!你現在有 {base_points} 基礎點數。", 
                inline=False) 

改成value = f""就可以放入自己定義的參數


上一篇
[Day23] 骰寶(中)
下一篇
[Day25] 骰寶(下)之下拉式表單
系列文
使用discord.py開發自己的機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言