avatar
文章
28
標籤
0
分類
5
首頁
Python進階概念
  • 函數
  • 類別
  • 協程
  • 讀寫檔案
  • 裝飾器
  • 型別標注
前置設定
  • 創建機器人
  • 安裝環境
  • 讓機器人上線
discord.py基礎
  • 指令介紹與基礎指令
  • 應用程式指令
  • 事件處理
discord.py進階
  • 使用者物件
  • 頻道物件
  • 參數進階應用
  • Cog擴充
  • 工作循環
  • 送出圖片
  • 頻道歷史
  • 播放音樂
  • UI元件
  • 嵌入
API
  • API介紹
  • API與機器人實作
  • Gemini API
  • Webhook
  • 抓取學校公告
LogoDiscord 機器人教學
搜尋
首頁
Python進階概念
  • 函數
  • 類別
  • 協程
  • 讀寫檔案
  • 裝飾器
  • 型別標注
前置設定
  • 創建機器人
  • 安裝環境
  • 讓機器人上線
discord.py基礎
  • 指令介紹與基礎指令
  • 應用程式指令
  • 事件處理
discord.py進階
  • 使用者物件
  • 頻道物件
  • 參數進階應用
  • Cog擴充
  • 工作循環
  • 送出圖片
  • 頻道歷史
  • 播放音樂
  • UI元件
  • 嵌入
API
  • API介紹
  • API與機器人實作
  • Gemini API
  • Webhook
  • 抓取學校公告

Discord 機器人教學

型別標註
發表於2025-01-19
型別標注可以標注函數、參數與變數的結果使開發時更容易 有些編輯器會自動辨識型別標注,在用法錯誤時自動指出錯誤減少錯誤的機率 但需注意的是,型別標注只是為了開發方便,可以清楚看出每一項變數或函數是什麼類別實際上型別標注錯誤並不會在執行時有問題除非像Discord機器人有特殊要求 印出型別可以透過以下函數印出該內容的型別以下功能測試時可使用 12content = #內容print(type(content)) 變數變數的標注方法,是在定義時加上冒號與類別不經常用到,因為可以透過內容來辨識型別若變數為函數結果,也可以透過函數的型別標注來辨認除非該函數沒有型別標注 123a:int = 1b:str = "hello"c:list = process(a) 函數參數此用法之前就用過,此處當複習 1234567# 印出n次訊息# 此處透過標注來限定number是整數,message是字串def func(number:int, message:str): print(message * number, end="\n")func(3,...
裝飾器
發表於2025-01-19|Python進階概念
裝飾器是一種特別的用法,可以在不改變原始函數的前提下新增內容就像是在原始的內容下包了一層特殊的能力 裝飾器的本質裝飾器其實就是一個可以接收函數作為參數的函數Python是一個物件導向的程式語言,意即所有東西都是一個物件就連函數也不例外 只要是一個物件就可以當成參數 12345678910111213141516def my_decorator(func): def wrapper(): print("裝飾器正在執行一些事情...") func() print("裝飾器完成執行!") return wrapper@my_decoratordef say_hello(): print("Hello, world!")say_hello()# 裝飾器正在執行一些事情...# Hello, world!#...
讀寫檔案
發表於2025-01-16|Python進階概念
Open函數open函數可以讓我們開啟檔案,並以各種方式存取 1file = open("result.txt", mode='r', encoding='utf8') 第一個參數放檔案名稱,需要加副檔名 第二個參數指定為mode r (read)只讀取 w (write)只寫入(任何寫入會直接覆蓋掉所有內容) r+ 讀取後會需要重新寫入 (會加在檔案結尾,原本內容會保留) w+ 寫入後需要重新讀取 (任何寫入也會覆蓋原本內容) 第三個參數指定為encoding,若沒有其他特殊編碼需求一律填utf8 file會變成一個物件,內含檔案的資訊,還有檔案的內容但不能直接print出來,需要用內建的方法讀取但檔案會一直保持開啟,為了良好的電腦資源管理,結束操作需要關閉 1file.close() 自動關閉檔案如果你覺得每次都要手動關閉檔案很麻煩,而且你開啟檔案也只做一兩個動作,可以像這樣寫: 123with open("result.txt", mode='r',...
參數進階應用
發表於2025-01-16|discord.py進階
參數選單Choice物件在上方引入物件與套件,方便我們操作而不需加太多前綴不然原本須使用app_commands.Choice()這麼長一串但引入後只需使用Choice() 12from discord.app_commands import Choicefrom discord import app_commands Choice物件通常會使用兩個參數:name 跟value name是在Discord內實際使用時會顯示的名稱,value是後台取得的值,可以是字串或數字,例如 12Choice(name='宇宙無敵霹靂超級棒', value='supercalifragilisticexpialidocious')Choice(name='最高分', value=10) 基本語法12345678910@bot.tree.command()@app_commands.choices( color=[ Choice(name="紅色",...
頻道物件
發表於2025-01-16|discord.py進階
頻道有屬於自己的物件,與使用者一樣,記載許多相關資訊 頻道有分很多種,而最常拿來操作的是文字頻道所以此文以discord.TextChannel 來當作範例,這是文字頻道所屬的類別 建議閱讀使用者物件 輸入頻道此處方法跟輸入使用者一樣,不多做贅述 取得頻道數字ID此處跟取得使用者不同,需要使用await 1channel = await bot.fetch_channel(頻道ID) 指令頻道也可以取得使用者輸入指令的頻道 1channel = interaction.channel 常用屬性name頻道的名稱頻道的名稱跟使用者不一樣,只有一個,所以不需要擔心取到哪一個 guild / id這是頻道所屬伺服器與頻道本身id此處可以注意到,Discord的物件間都是環環相扣的,每一個物件都可以與另一個物件有關聯 mention與使用者的概念一樣,當訊息送出時可以提及該頻道 send()這個方法我們之前有學過了,就是ctx.channel.send()在該頻道送出一個訊息 1234@bot.tree.command()async def...
使用者物件
發表於2025-01-14|discord.py進階
使用者物件內包含了許多屬性與方法 屬性 名字 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與機器人實作
發表於2025-01-14|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介紹
發表於2025-01-13|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()...
送出圖片
發表於2025-01-13|discord.py進階
基本語法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...
事件處理
發表於2025-01-13|discord.py基礎
事件在做什麼各種條件觸發,比如機器人上線、有人傳訊息、有人編輯訊息、頻道名稱被管理員更新等,成為事件而這些事件是可以被機器人持續追蹤的,當這些事件發生時,如果機器人有對應的函式,就會呼叫函式並傳入參數,讓我們做處理 基本語法123@bot.event # 這裡不用()async def on_ready(): # 動作 @bot.event 事件的裝飾器長這樣,要特別注意不用括號 async def on_ready() 此處函式名稱比較特殊,是固定的,不像指令可以自己取名字;名字由事件決定,此處的事件是「機器人上線時」 而函式接受什麼參數也由套件預設決定 也就是說,我們可以自己定義的只有動作的部分 機器人上線123@bot.eventasync def on_ready(): print(f"Logged in as...
123
avatar
鯊士比亞
文章
28
標籤
0
分類
5
來找我聊天!
分類
  • API5
  • Python進階概念5
  • discord.py基礎3
  • discord.py進階8
  • 前置設定3
©2024 - 2025 By 鯊士比亞
框架 Hexo|主題 Butterfly
搜尋
資料載入中