使用 DisCatSharp
請根據消費專案的 DisCatSharp 版本及經過驗證的 DisCatSharp 證據來回答。公開的文件 MCP 涵蓋了主程式庫與官方 DisCatSharp.Extensions;當它可用時,應優先使用。請勿從 DSharpPlus、Discord.Net、Pycord 或其他 Discord 函式庫推斷 API。
建立專案上下文
- 在可用時檢查本地專案。確定:
- 從專案檔案、中央套件檔案、鎖定檔案或還原的資產中安裝的 DisCatSharp 套件版本。
- 目標框架與主機模型。
- 已經參考了哪些 DisCatSharp 模組。
- 如果沒有可用的專案,僅在答案會實質上依賴於該版本時,才詢問 DisCatSharp 版本。否則,說明答案目標是哪個最新的 API 版本。
- 將即時專案原始碼與已安裝的套件中繼資料視為該專案的權威來源。公開的 MCP 通常描述最新的文件建置版本,可能比使用者安裝的套件更新。
在選擇套件或擴充功能時,請閱讀 references/modules.md。
檢索證據
當 DisCatSharp 文件 MCP 已連線時,使用最小且有用的查詢序列:
- 對於廣泛的功能、工作流程或概念性問題,調用
search。除非專案或問題明確僅涉及main或extensions語料庫,否則應同時搜尋這兩個語料庫。 - 對於確切的型別、成員、完整名稱及多載,調用
find_symbol。使用語料庫篩選器來消除同時存在於兩個儲存庫中的型別歧義。 - 在依賴某個結果的完整文件之前,調用
fetch並使用其回傳的symbol:或document:ID。 - 僅在已索引符號中繼資料回傳了相對於儲存庫的路徑及限定範圍,且文件化行為不足時,才調用
get_source。
保留多載特定的 ID 與 URL。搜尋結果僅是候選項,並非完整文件。請勿偽造 UID、文件 ID、原始碼路徑、簽章或多載。
當 MCP 不可用但 HTTP 存取可行時,查詢 https://docs.dcs.aitsys.dev/_search?q=<查詢>。當已知所屬儲存庫時,請加上 corpus=main 或 corpus=extensions;省略則表示同時搜尋兩者。僅在進一步縮小範圍有用時,才使用 references/modules.md 中的確切模組名稱搭配 module=<套件>。
對於 Discord 平台的行為(如負載、權限、意圖、閘道事件、速率限制、REST 語意或應用程式命令規則),當官方 Discord 文件 MCP 可用時,請諮詢位於 https://docs.discord.com/mcp 的官方 Discord 文件 MCP。清楚區分 Discord 的合約與 DisCatSharp 對其的呈現方式。
當 MCP 不可用、結果與已安裝版本衝突或查詢無匹配時,請閱讀 references/evidence-and-fallbacks.md。
產出答案
- 使用證據支援的確切 DisCatSharp 名稱、簽章、套件及命名空間。
- 當要求程式碼時,提供一個簡潔可編譯的範例。包含相關的意圖、配置、擴充功能註冊、依賴注入以及釋放/生命週期細節。
- 說明正在使用的事件或命令模型。請勿隨意混用 ApplicationCommands 與 CommandsNext。
- 保持非同步行為與取消作業。請勿引入阻塞的
.Result或.Wait()呼叫。 - 在相關時提及版本要求、實驗狀態、所需的 Discord 配置以及遷移影響。
- 連結最有用的 DisCatSharp 頁面或精確的多載。避免未經解析就直接傾倒搜尋結果。
- 如果證據仍然不完整,請說明哪些已經驗證、哪些是推斷的,以及使用者應檢查哪些項目。切勿以看似合理的程式碼隱藏不確定性。
常見陷阱
- 其他 Discord 函式庫中的類似 API 不可互換。
- 當前文件中存在的型別,並不能證明它在較舊的已安裝套件中也存在。
- 快取狀態可能是部分的,且事件可能需要意圖。
- Discord REST 桶的 FIFO 順序與閘道使用者處理器的順序是兩個不同的關注點。
- 閘道快取變更保持有序,而使用者處理器預設為並行,除非
GatewayAdvancedConfiguration.DispatchMode使用SequentialHandlers。 - 斜線命令互動有 Discord 定義的回應截止時間以及回應/後續追蹤規則。