北科程式設計研究社 (NPC) 的 Discord 社群管理工具,舊 Emily 的 Discord.js 重製版。專案結構是基於 書呆大學長。
利用指令製作由多個身份組組成的身份組,便於管理權限。例如透過自動產生「幹部」身份組群組來同時管理所有歷屆幹部身份組。
透過對話框填寫資料,並分配身份組,自動化社員加入流程;幹部可於後臺管理社員的加入請求。
請依照慣例式提交規範用中文或英文寫提交說明。
- Bun: JavaScript 執行環境和套件管理工具
- Discord.js:Discord API 的 Node.js 實作
- TypeScript:JavaScript 的超集,提供型別檢查和其他語言功能
- Prisma:資料庫存取工具
- Pino:日誌工具
所有斜線指令位於 src/commands
(index.ts
與 types.ts
除外)。要增加斜線指令,請在 src/commands
新增一個預設匯出 Command
型別的檔案。Command
型別可以在 src/commands/types.ts
找到。
你可以用 Dockerfile
和 examples
目錄的各種範例 compose.yaml
在 Docker 部屬這個機器人。大略步驟如下:
git clone https://github.com/NTUT-NPC/emily
cd emily
cp examples/compose.prod.yaml compose.yaml
cp examples/.env .
# 用文字編輯器填寫 `.env` 檔案
docker compose up -d
由於一個 Bun 的問題,資料庫遷移可能不會執行,導致 prisma
找不到 emily
資料庫。此時你需要手動執行 bun x prisma migrate deploy
後再試一次。
到 Discord Developers 網站建立一個機器人。啟用 Privileged Gateway Intents
中的 Presence Intent
和 Server Members Intent
。
最後,用邀請連結來將機器人加入您的Discord伺服器。將「你的_Client_ID」替換為您機器人的 Client ID:
https://discord.com/api/oauth2/authorize?client_id=你的_Client_ID&permissions=268437504&scope=bot%20applications.commands