iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
SideProject30

python基礎及數據科學之應用系列 第 27

python基礎及數據科學之應用day 27[pycord資料庫介紹4寶可夢大師pvp資料]

  • 分享至 

  • xImage
  •  

day 27:

/images/emoticon/emoticon28.gif
希望瀏覽數可以多點啦,更多人看我的教學後有所增長

對話框

在 Discord 中,「對話框」指的是使用者可以在彈出視窗中輸入資訊或進行選擇。這種類型的互動可以提供更具互動性和使用者友善性的體驗。用於各種目的,例如收集使用者偏好、建立互動式選單或在 Discord 機器人中實現使用者提示。

範例:
import discord

bot = discord.Bot()


@bot.event
async def on_ready():
    print(f'Logged in as {bot.user.name} ({bot.user.id})')
    print('Bot is ready to receive commands')


class MyModal(discord.ui.Modal):
    def __init__(self, *args, **kwargs) -> None:
        super().__init__(*args, **kwargs)

        self.add_item(discord.ui.InputText(label="你的名字"))
        self.add_item(discord.ui.InputText(label="關於你", style=discord.InputTextStyle.long))

    async def callback(self, interaction: discord.Interaction):
        embed = discord.Embed(title="day27")
        embed.add_field(name="你的名字", value=self.children[0].value)
        embed.add_field(name="關於你", value=self.children[1].value)
        await interaction.response.send_message(embeds=[embed])

@bot.command()
async def modal_slash(ctx: discord.ApplicationContext):
    #顯示從斜線命令呼叫模式對話框的範例
    modal = MyModal(title="example")
    await ctx.send_modal(modal)
  
bot.run("token")

執行結果:
https://ithelp.ithome.com.tw/upload/images/20231012/20163173jZEEPRisAi.png

接着便解釋這段程式

MyModal

設定一個類別放入對話框內容

MyModal(title="example")

設定對話框名稱

self.add_item

add_item作為類別內部的類別屬性MyModal。然後,我們使用add_item方法將這些你的名字關於你元件新增到視圖中。

value=self.children[0].value

放入輸入文字的區域,最多可以有5個InputText欄位。這些字段提供一些客製化的設計。

style

style參數用於確定輸入欄位是短(單行)還是長(多行)。

InputTextStyle值
單行 short,singleline
多行 paragraph = 2,multiline = 2,long = 2

寶可夢圖鑑(pokemon data csv read)

今天我們使用day13的讀取的csv數據並透過嵌入呈現在discord機器人中,但這次我們使用所有數據(高級聯盟overall)。讓我們嘗試一下吧
/images/emoticon/emoticon01.gif

範例:
import csv
from discord import File, Embed
import discord

data=[]
bot = discord.Bot()

with open('pokemon.csv', 'r') as file:
    reader = csv.reader(file)
  #for循環列印csv項目
    for row in reader:
      data.append(row)

def name(n,y):
    return(data[n][y])

@bot.event
async def on_ready():
    print(f'Logged in as {bot.user.name} ({bot.user.id})')
    print('Bot is ready to receive commands')
  
@bot.command()
async def get_pokemon(ctx,pokemon):
  pokemon = int(pokemon)
  embed=discord.Embed(title="名稱 : "+name(pokemon,0), description="圖鑑編號 : "+name(pokemon,2))
  embed.add_field(name="第一屬性", value=name(pokemon,3), inline=False)
  embed.add_field(name="第二屬性", value=name(pokemon,4), inline=True)
  embed.add_field(name="攻擊力", value=str(name(pokemon,5)), inline=True)
  embed.add_field(name="防禦力", value=str(name(pokemon,6)), inline=True)
  embed.add_field(name="一般招式", value=name(pokemon,10), inline=True)
  embed.add_field(name="特殊招式1", value=name(pokemon,11), inline=True)
  embed.add_field(name="特殊招式2", value=name(pokemon,12), inline=True)
  embed.set_footer(text="python基礎及數據科學之應用day 13[寶可夢大師pvp資料(csv)讀取]")
  await ctx.send(embed=embed)


bot.run("token")

執行結果:
https://ithelp.ithome.com.tw/upload/images/20231012/20163173rNX8LC5zGf.png

接着便解釋這段程式

csv.reader

CSV檔案名為pokemon.csv使用 用csv.reader打開

get_pokemon

用之前學到的嵌入展示

/images/emoticon/emoticon06.gif
今天的有趣內容到這裏,如果覺得我的文章對你有幫助或有更好的建議,可以追蹤我和不妨在留言區提出,我們明天再見。

reference:
https://discord.com/developers/docs/intro


上一篇
python基礎及數據科學之應用day 26[pycord資料庫介紹3]
下一篇
python基礎及數據科學之應用day 28[pycord資料庫介紹5機械人進入語音聊天室]
系列文
python基礎及數據科學之應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言