前面有說過discord bot主要是事件(event)為中心在運作的,而今天就來講講discord bot的事件。
首先要先理解@bot.event
這一個裝飾器,它是用於在 Discord bot 程式碼中註冊事件處理程序。當你在函數前面添加@bot.event
裝飾器時,代表告訴 Discord bot 當特定事件發生時要調用該函數。
關於Discord bot連接事件和響應事件,來簡單介紹一下:
這些事件在bot啟動並連接到Discord時被觸發:
on_ready: bot啟動完畢,登錄成功後被調用。這表示bot已經準備好工作了。
on_resumed: 當bot重連成功後被調用。
on_disconnect: 當bot失去連接時被調用。
這些事件在接收到Discord事件時被調用,用於使bot響應用戶操作:
on_message: 當收到新消息時調用,這是最常用的事件。在這裡可以處理用戶命令。
on_reaction_add: 當消息接收新反應時。
on_reaction_remove:當消息反應被移除時。
on_message_edit: 當消息被編輯時。
on_member_join: 有新成員加入服務器時。
on_member_remove: 有成員離開服務器時。
on_typing: 用戶正在輸入時。
等等。
通過為這些事件編寫異步的處理函數,可以使bot檢測事件並做出反應,實現各種功能。
例如:
@bot.event
async def on_ready():
print('Bot is ready!')
@bot.event
async def on_message(message):
if message.content == 'ping':
await message.channel.send('pong')
傳入的參數需要參照以下的discord.py文檔來傳入,才可以正確使用。
需要正確配置intents,否則對應事件不會被接收到。
總之,使用這些事件可以使得Discord bot檢測到服務器活動並做出反應,基本上所有bot功能都是基於事件的處理。
更多事件可至以下網址查看
https://discordpy.readthedocs.io/en/stable/api.html?highlight=on_disconnect#event-reference