如何在 Discord 導入書籤機器人(使用 Zeabur 部署)


書籤機器人功能

在 Discord 中,對一個訊息按 🔖,機器人就會傳私訊,
將該訊息轉送給你,並保留原始訊息連結。
藉由這個方式達到「書籤」的功能,不怕錯過訊息後再也找不到。

這是在侯智薰(雷蒙)的 Discord 社群中,
雷蒙已經實作給大家使用的超好用功能!
雷蒙也寫了文章分享,但他是部署在自己的 NAS 上,
我自己主要是用 Zeabur 部署,所以就嘗試了用 Zeabur 部署,
並學習雷蒙紀錄步驟並分享出來。

實作步驟

Step 1:在電腦中預備程式

  1. 在電腦中建立一個資料夾。
  2. 在該資料夾中新增 main.py,內容如下:
import discord
import os
from discord.ext import commands

intents = discord.Intents.default()
intents.messages = True
intents.reactions = True
intents.message_content = True

bot = commands.Bot(command_prefix="!", intents=intents)

@bot.event
async def on_ready():
    print(f'Logged in as {bot.user.name}')

@bot.event
async def on_raw_reaction_add(payload):
    # 當有人添加 🔖 表情符號時
    if payload.emoji.name == '🔖':
        channel = bot.get_channel(payload.channel_id)
        message = await channel.fetch_message(payload.message_id)
        user = await bot.fetch_user(payload.user_id)
        
        # 建立嵌入訊息 (Embed)
        embed = discord.Embed(title="已儲存書籤", description=message.content, color=0x3498DB)
        embed.add_field(name="來源頻道", value=channel.mention)
        embed.add_field(name="原訊息連結", value=message.jump_url)
        
        try:
            await user.send(embed=embed)
        except discord.Forbidden:
            print("無法私訊該用戶")

bot.run(os.getenv("DISCORD_TOKEN"))

在這裡有一個地方可以調整:color=0x3498DB,後面的色碼可以自行換成其他顏色,它會是訊息的左邊框的顏色。

  1. 新增 requirements.txt,內容如下:
discord.py

Step 2:部署到 Zeabur

  1. 在 VS Code based Editor 中安裝 Zeabur extension,使用該 extension 進行 Deploy。
  2. 按照部署機器人的引導,在 Zeabur 中新增一個 Project。

Step 3:在 Discord Developer Portal 建立應用程式並將 Token 複製到 Zeabur

  1. 前往 Discord Developer Portal (https://discord.com/developers/applications )。
  2. 點擊 “New Application” 並命名。
  3. 導覽至 “Bot” 分頁。
  4. 修改 Username(機器人在伺服器裡面顯示的名稱)也可以上傳 Icon(機器人的頭像)。
  5. 在 Privileged Gateway Intents 區塊裡面找到 Message Content Intent,打開該設定。
  6. 按 Reset Token 按鈕,完成驗證後,複製 Token。
  7. 回到 Zeabur,在剛剛建立的 Project 中找到「環境變數」分頁,先確認是不是已經有一個變數名稱是 DISCORD_TOKEN,如果沒有就自己新增一個。
  8. 將變數值設定為剛剛複製的 Token。

Step 4:將機器人加入伺服器

  1. 回到 Discord Developer Portal,在剛剛建立的 Application 中,進入到 OAuth2 分頁,在 URL Generator 區塊中選擇 bot。
  2. 底下會多出一段 Bot Permissions,選擇 View Channel、Send Messages、Read Message History 這三個選項。
  3. 到底下 Generated URL 區塊複製邀請網址。
  4. 打開邀請網址,會轉到 Discord,選擇要加入的伺服器。
  5. 成功加入之後可以測試一下。

大功告成! 🎉🎉🎉