這是一篇使用 discord.py 模組開發的 Discord Bot 基礎教學文章。
剛接觸程式的新手也能簡單製作一臺屬於自己的 Discord Bot,跟著此篇教學步驟能夠讓 Discord Bot 回覆簡單訊息。

歡迎加入筆者的 Discord 伺服器 點此加入

Python Discord Bot 教學文章和程式碼範例 點此前往


一、Discord 簡介:

Discord 誕生於西元 2015 年,一開始是為了遊戲玩家而設計的免費網路即時通話軟體,經過多年來的發展,現今教育人士、學生、商業人士等等各式各樣的人都有在使用 Discord 作為辦公討論的工具。
Discord 功能十分多樣,不僅能夠直播、通話、建立各種新的頻道和伺服器、身分組管理系統等等,還有支持 Markdown 語法,能夠讓文字產生更多的變化和應用。
Discord 在 Windows、macOS、Linux、iOS、Android 和網頁瀏覽器等等常見平台都能運行。

二、Discord Bot 簡介:

Discord Bot 在 Discord 中扮演一個非常重要的角色,Bot 是機器人的意思,能夠自動化地幫助伺服器管理員執行繁忙瑣碎的任務,例如:歡迎新成員、自動分發身分組、點播音樂、管理伺服器秩序等等功能,最重要的是每位 Discord 使用者都能免費打造屬於自己獨一無二的機器人。

三、Discord Bot 創建:

  1. 先登入 Discord 帳號。
    連結:https://discord.com/
    00

  2. 前往 Discord Developers。
    連結:https://discord.com/developers/applications
    01

  3. 點擊 New Application,創建機器人的整合系統身分組名稱(未來可修改)。
    02

    03

  4. 點選左側功能欄中的 Bot 進入創建頁面。
    04

  5. 點擊 Add Bot 創建機器人身分,接著點擊「Yes, do it!」,即可創建成功。
    05 06

  6. 往下滑到 Privileged Gateway Intents 區塊,三個功能選項都點選並按下 Save Change,對未來製作機器人較方便操作。
    07

  7. 點擊左側功能欄 OAuth2 會跑出兩個選項,點擊 URL Generator 選項。
    08

  8. 右方 SCOPES 區塊中選擇 bot,往下滑點選 Administrator,賦予機器人所有權限,而最下方的 GENERATED URL 就是邀請機器人到伺服器中的連結。
    09 10

  9. 前往上方獲得的連結,進入邀請頁面後,點選要加入的伺服器並授權機器人。
    11 12

  10. 如果看到機器人出現在成員列表中以及歡迎訊息,代表機器人創建成功。
    13 14

四、Discord Bot 撰寫:

執行 Discord Bot 指令大致分為三種方式,三種方式的程式碼撰寫都不太一樣,本次教學以關鍵字和前綴指令作為範例,其他斜線指令或者更多使用方式可以參考未來教學。

  • 關鍵字 - Hello, ping, say
  • 前綴指令 - $Hello, %ping, &say
  • 斜線指令 - /Hello, /ping, /say

🔔 如果電腦中沒有撰寫 Python 程式的 IDE 的話,可以參考這篇 Visual Studio Code 撰寫 Python 程式

  1. 終端機輸入下方指令,安裝 discord.py 模組。

    1
    pip install discord.py

    15

  2. 回到 Bot 設置頁面,機器人名字下方有機器人的 TOKEN,如果忘記之前的 TOKEN 或者不小心外露出去讓別人知道,只要點擊 Reset Token 換新的一組 TOKEN 即可。

    🔔 TOKEN 是控制機器人的鑰匙,擁有者就可以操控機器人,要嚴禁保管!

    16 17

  3. 撰寫一個簡單功能的程式並執行程式來啟動機器人。

    • 關鍵字
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      # 導入Discord.py模組
      import discord

      # client是跟discord連接,intents是要求機器人的權限
      intents = discord.Intents.default()
      intents.message_content = True
      client = discord.Client(intents = intents)

      # 調用event函式庫
      @client.event
      # 當機器人完成啟動
      async def on_ready():
      print(f"目前登入身份 --> {client.user}")

      @client.event
      # 當頻道有新訊息
      async def on_message(message: discord.Message):
      # 排除機器人本身的訊息,避免無限循環
      if message.author == client.user:
      return
      # 新訊息包含Hello,回覆Hello, world!
      if message.content == "Hello":
      await message.channel.send("Hello, world!")

      client.run("機器人的TOKEN")
    • 前綴指令
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      # 導入Discord.py模組
      import discord
      # 導入commands指令模組
      from discord.ext import commands

      # intents是要求機器人的權限
      intents = discord.Intents.all()
      # command_prefix是前綴符號,可以自由選擇($, #, &...)
      bot = commands.Bot(command_prefix = "%", intents = intents)

      @bot.event
      # 當機器人完成啟動
      async def on_ready():
      print(f"目前登入身份 --> {bot.user}")

      @bot.command()
      # 輸入%Hello呼叫指令
      async def Hello(ctx: commands.Context):
      # 回覆Hello, world!
      await ctx.send("Hello, world!")

      bot.run("機器人的TOKEN")
  4. 如果終端機顯示「登入身分 –> 機器人名字」和看見 Discord 成員列表有顯示機器人上線,代表以上步驟都做對。
    18 19

  5. 現在只要在頻道中使用關鍵字「Hello」或者「%Hello」,機器人就會回覆「Hello, world!」囉。

    • 關鍵字
      20

    • 前綴指令
      21


此次教學已經結束,感謝各位看完整篇文章,希望大家都能成功製作出屬於自己的 Discord Bot!
上面提到授權機器人權限的部分,為了讓 Discord Bot 正常運作的成功率提高,因此全部勾選。如果有興趣想了解各個權限代表什麼的人可以自己研究看看。
如果自己將關鍵字和前綴指令的程式範例合併起來,會發現 Discord Bot 無法正常運作,那是因為關鍵字的 on_message 和前綴指令 command 互相抵觸到。要解決這個問題的話,需要使用 Cog 工具,可參考這篇筆者撰寫的新教學,Python Discord Bot 進階教學 — Cog 篇