首先創建要先到以下網站創建一個App
https://discord.com/developers/applications
進入並登入後會看到右上角有創建新App的按鈕將其按下
創建完後可看到已經進入Bot設定的畫面了,接著需要將Bot邀請至自己的伺服器,可按下左邊的OAuth2選擇URL Generator。
進去後需要選擇機器人的應用領域這裡我們選Bot,下面機器人權限為了方便測試給管理員權限,接著就可複製下面網址進入到邀請畫面。
最後可在左邊選項Bot裡看到Build-A-Bot的分類,在分類下Token的地方點選Reset Token以便生成一個Token,有了Token即可讓程式與機器人交接。
這裡需要注意的是,在Bot選項裡還有Privileged Gateway Intents這個分類,在這個分類裡有著機器人的特權選項,包含了PRESENCE INTENT、SERVER MEMBERS INTENT和MESSAGE CONTENT INTENT分別具有以下功能:
這些意圖被定義為"特權意圖"。而因為數據的敏感性。如果您的機器人未經驗證且在少於100個服務器中,則可以在Discord Developer Portal中啟用特權閘道意圖。如果您的機器人已經驗證或即將需要驗證,則需要申請特權意圖。
由於我們目前是測試用隨時都可開啟關閉這些選項,當需要讀取相應訊息、資料時有時會需要到這裡啟動相應的特權。通常如果是相應的特權未被開啟,就嘗試去讀取需要該特權的資料時會報出以下錯誤。
discord.errors.PrivilegedIntentsRequired: Shard ID None is requesting privileged intents that have not been explicitly enabled in the developer portal. It is recommended to go to https://discord.com/developers/applications/ and explicitly enable the privileged intents within your application's page. If this is
not possible, then consider disabling the privileged intents instead.
接著要開始撰寫Discord bot了,首先安裝完discord.py之後,將以下程式碼寫入名為bot.py(可自行取名)的檔案中,這時運行後就可以發現Bot已經上線了。
import discord
# 導入discord.py模塊
from discord.ext import commands
# 從discord.py擴展模塊中導入commands模塊
intents = discord.Intents.all()
# 創建一個Intents對象,開啟所有intents選項
bot = commands.Bot(command_prefix="^^", intents=intents)
# 創建一個Bot對象,設置命令前綴和intents
TOKEN = "xxx"
# 你的機器人token
# 事件裝飾器,下面的函數為事件處理函數
@bot.event
async def on_ready():
# on_ready事件表示機器人已準備就緒
print('We have logged in as {0.user}'.format(bot))
# 簡單打印登錄成功信息
# 命令裝飾器,下面的函數為命令處理函數
@bot.command()
async def hello(ctx):
# 定義一個hello命令
await ctx.send('Hello!')
# 發送消息"Hello!"
bot.run(TOKEN)
# 運行機器人,傳入token進行登錄
而其中discord.Intents就像上面講過的,就是機器人的特權。
discord.Intents 包含以下選項:
所以在創建一個Bot對象時,通過設置intents參數,可以選擇啟用哪些事件。
舉例來說:
intents = discord.Intents.default() # 只啟用基礎的必要事件
intents = discord.Intents.all() # 啟用所有事件
intents = discord.Intents(guilds=True, messages=True) # 只啟用服務器和消息相關事件
默認情況下,只有基礎的必要事件被啟用。如果你的機器人需要使用其他事件,需要顯式地在Intents中啟用它們。
適當設置intents可以幫助提高機器人的性能,避免不必要的事件處理開銷。詳細文檔見:https://discordpy.readthedocs.io/en/stable/api.html?highlight=intents#discord.Intents
而discord.ext.commands.Bot類在初始化時可以接受許多可選參數來自定義機器人的行為,常見的選項包括:
適當配置可以幫助優化和自定義一個機器人的行為。詳細文檔見:https://discordpy.readthedocs.io/en/latest/ext/commands/api.html#bot