這是一篇 Discord Bot 的進階教學,會使用 Python Cog 架構撰寫。
在之前的 View 教學中,曾經提到 Item 元素跟 View 息息相關,此次教學要來詳細介紹和實作 Discord 中的 Button,如果還沒看過 View 教學的讀者可以點此前往,Python Discord Bot 進階教學 — View 篇。
:book: 更多 Python Discord Bot 教學系列和程式範例
https://github.com/smallshawn95/Python-Discord-Bot-Teach.git
Discord Button 於 2021 年 10 月推出,具有多種使用方式,可以傳送訊息、觸發特定事件、將使用者傳送到指定網址等等。
Discord Button 推出之前,開法者如果想要讓 Bot 可以利用 GUI 介面來實現投票、換頁、切歌等等功能,通常只能使用簡單的 Emoji,並且需要訊息輔助說明每個 Emoji 的用途,而現在的 Button 則在一開始就可以設定顯示文字、顏色等等,讓使用者可以直觀了解用途,也讓開發者可以根據自己需求創作。
更多詳細資訊可以參考 Discord.py Button 官方文檔。
使用時機為函式中直接宣告時,設置 url
參數會變超連結按鈕,撰寫 Button 交互事件需要新增一個回呼函式或者搭配持續監聽事件。
使用時機為添加在 View 類別中,撰寫 Button 交互事件只需要在裝飾器底下即可。
額外撰寫一個交互函式,並讓 Button 呼叫此函式。
優點 | 缺點 |
---|---|
多個按鈕可以共用同個函式 | 可讀性較差,查看按鈕功能需要自行對照函式 |
在 Button 裝飾器底下撰寫一個交互函式。
優點 | 缺點 |
---|---|
按鈕與函式綁定,不用額外對照函式 | 多一個 button: discord.ui.Button 參數 |
on_interaction()
是一個交互持續監聽事件,幫 Button 自定義設置 custom_id
參數,比對交互時的 custom_id
即可執行相對應的操作。
優點 | 缺點 |
---|---|
按鈕不會超時,可以製作永久按鈕 | 需要設置 custom_id 參數,按鈕操作塞在同一函式的可讀性較差 |
底下列出 Discord Button 的所有風格,詳細內容可參考 Discord.py ButtonStyle 官方文檔。
名稱 | 樣式 |
---|---|
primary / blurple | 藍色 |
secondary / grey / gray | 灰色 |
success / green | 綠色 |
danger / red | 紅色 |
link / url | 超連結 |
📢 歡迎加入我的 Discord 伺服器
https://discord.gg/Jtd3eVrFJs
Copyright © 2023 SmallShawn95. All rights reserved.