使用者物件
使用者物件內包含了許多屬性與方法 屬性 名字 ID 頭像 標註格式 方法 傳送私訊 建立私訊等等 如何取得一個使用者指令輸入123@bot.tree.command()async def user(interaction:discord.Interaction, user:discord.User): # 其他動作 此處user參數在discord輸入時,會自動生成一個伺服器內使用者選單供使用者選擇 用數字ID取得使用者用這個方式可以直接取得特定使用者,不需要另外輸入每個ID只會對應到一個使用者,所以可以用這個方式來取得唯一的目標 1user = bot.get_user(使用者的ID) 對使用者右鍵可以複製使用者ID 常用屬性還記得我們之前教的類別屬性嗎?如果要存取一個屬性需要使用....
API與機器人實作
今天我們將從簡單的API著手,試著與機器人融合 貓咪這個API會隨機給你一張貓的圖片 設定請求先使用上次的API測試文件,接著將URL設為https://api.thecatapi.com/v1/images/search 把requests.get()的params參數刪除,像這樣因為這個API非常簡單,不需要指定任何參數 1response = requests.get(url=url).json() #params刪掉 解析回應接著發出請求一次,你應該會看到類似的回應: 12345678[ { "id": "b1j", "url": "https://cdn2.thecatapi.com/images/b1j.jpg", "width": 2000, "height": 3008 }] id: 圖片的id url:...
API介紹
可以先去最下方看上課簡報閱讀 環境安裝1pip install requests 視情況可改成pip3,詳細可回去翻之前的 建構測試用檔案請找一個資料夾,用vscode開啟它,並在內部新增一個python檔案,放入以下內容 123456789101112import requestsimport jsonparams = { }url = ''response = requests.get(url = url,params=params).json()with open('result.json',mode='w',encoding='utf8') as f: json.dump(response,f,ensure_ascii=False,indent=4) 首先我們先建立參數字典params,原文全名是parameters這個字典在發送請求時會由套件自動轉成簡報內提到的格式,讓我們更好操作 requests.get()...
送出圖片
基本語法1234@bot.tree.command()async def picture(interaction:discord.Interaction): file = discord.File("路徑") await interaction.response.send_message(file = file) 可以把圖片放在同一個資料夾裡面,用./ 開頭做相對路徑這個路徑寫法是從這個資料夾開始延伸的意思,如果直接使用./圖片.jpg可以選到同一個資料夾的檔案 其實你會發現,discord.File是一個物件又扣回類別的內容,python到處都是物件 應用:隨機圖片(編號)這裡我們將使用os套件來進行系統相關操作,random套件來隨機取一個圖片請先將三張圖片放入main.py的同一個資料夾,並且依照數字順序命名 如果有3張圖片,就個別命名成123不用特別命名的方式在下一段 12345678910import random@bot.tree.command()async def...
事件處理
事件在做什麼各種條件觸發,比如機器人上線、有人傳訊息、有人編輯訊息、頻道名稱被管理員更新等,成為事件而這些事件是可以被機器人持續追蹤的,當這些事件發生時,如果機器人有對應的函式,就會呼叫函式並傳入參數,讓我們做處理 基本語法123@bot.event # 這裡不用()async def on_ready(): # 動作 @bot.event 事件的裝飾器長這樣,要特別注意不用括號 async def on_ready() 此處函式名稱比較特殊,是固定的,不像指令可以自己取名字;名字由事件決定,此處的事件是「機器人上線時」 而函式接受什麼參數也由套件預設決定 也就是說,我們可以自己定義的只有動作的部分 機器人上線123@bot.eventasync def on_ready(): print(f"Logged in as...
應用程式指令
跟基礎指令有什麼區別?應用程式指令是指斜線指令 輸入斜線/之後可以被列在指令選單中 如果有需要的參數,也會自動列出來 還可以做更多應用 Discord官方正努力推動這種格式的指令,因為這種方式可以讓使用者更容易取用,而不須先了解有什麼指令、指令需要什麼參數、參數是什麼格式 基本語法此處想做到的是 輸入/hello Jack機器人會回你「Hello, Jack」 123@bot.tree.command()async def hello(interaction:discord.Interaction,name:str): await interaction.response.send_message(f'Hello, {name}') 內容講解@bot.tree.command()此處與基本指令不同 應用程式指令是一個樹狀的概念,所有指令統整成一個樹此部分不須特別理解,只須記得裝飾器是這個即可 async def...
指令介紹與基礎指令
什麼是指令指令就是在聊天欄輸入一串文字,透過特定開頭與後面的參數來執行動作可想像在呼叫函式: 在聊天室輸入>hi jack相當於 1234def hi(name): # 一串動作 hi("jack") 指令前綴由前一小節的例子可看出,指令前綴為>此部分由上周創建機器人時所設定,可自行更改初始慣例用! ,此處是我的習慣 基本指令此處想做到的是 輸入>hi Jack機器人會回你「Hello, Jack」 123@bot.command()async def hi(ctx:commands.Context, name): await ctx.send(f"Hello, {name}") 內容講解@bot.command()此語法稱為**裝飾器,**是Python的特殊語法,用途是將裝飾的對象做特殊更改此概念較複雜,目前不需理解 只須知道此處的@bot.command() 會執行此函式,告知機器人這個函式註冊成為可以使用的指令 async def...
讓機器人上線
讓機器人上線以下內容寫在main.py內,或是你創建的任意名稱.py,可參照 安裝環境 以下內容由於說明需要會分段寫與講解,但是同一個檔案內的接續內容 引入套件discord.py是一個額外的套件,在python內預設無法取用,所以我們將需要的部分引入,其中包括異步操作的模組 123import discordfrom discord.ext import commandsimport asyncio 機器人物件接著使用之前介紹過的物件概念,定義一個機器人物件commands.Bot然後傳入以下參數 1bot = commands.Bot(command_prefix='>',intents=discord.Intents.all()) command_prefix 為指令的前綴。此處設為>,使用時就用>ping、>hello等方法使用,可自行決定 intents 為機器人開放的權限內容,此處設成全部,照著打就可以了 主函式與之前教過的異步函式方法一樣的概念 1234async def main(): await...
安裝環境
安裝軟體需要注意先安裝以下軟體,此處不提供教學,請自行上網查詢 Python 3.8以上版本,但不要3.13 Visual Code Studio或是自己習慣的編輯器,需要可以管理檔案 此處教學以中文版為例,學校電腦是英文版,想在自己的電腦裝中文版可以另外問 安裝Python語法套件打開Visual Code Studio(以下簡稱vscode)左方側邊欄有市集(方塊圖標),在搜尋框打Python後安裝第一個 安裝discord.py套件點開終端機,可自行使用cmd或是vscode的終端按鍵是 Ctrl+`那個一點是反引號,在Esc下方 或是左下方的此按鍵 點開後切換到Terminal(終端) 然後輸入以下內容後Enter 1python -m pip install discord.py 視自身安裝版本,有可能是py 開頭或是python3 開頭 新增資料夾和檔案在任何地方新增一個任意名稱資料夾,然後左方欄切換到第一個(檔案總管Explorer)點擊開啟資料夾(Open Folder)後選擇你剛剛的資料夾 接著點擊資料夾名稱右邊的第一個鍵:...
創建機器人
登入開發者面板首先請進入以下連結,然後登入自己的Discord帳號Discord Developers也請確認已經認證電話號碼過了,如果不會認證可以去群組問 創建機器人點右上角的New Application,然後幫機器人取一個名字,日後可以更改 進來以後此頁面可以修改機器人頭像、帳號描述跟名稱 Bot頁面請在左側欄切換到Bot頁面 Token向下找到此處,點擊Reset Token並輸入密碼 完成後他會跳回頁面最上方,往下滑回去取得一串很複雜超級長的Token請用你的生命保護他,不要弄丟了此Token的用意是告訴Discord 我現在要操控這個機器人 -> 每個token對應一個機器人 它是我所有的 -> 這個token只有你拿得到 開啟權限同一個頁面繼續往下滑,找到Privileged Gatway Intents,將三個開關都打開然後點擊下方跳出來的Save Changes 邀請機器人現在請回到Discord主頁面,創建一個只有你自己的群組或是任何你可以瘋狂測試機器人的地方,且你有管理權限 取得連結左側欄由Bot切換到OAuth2,向下找到OAuth2...