使用 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=<query>。当已知所属仓库时,添加 corpus=main 或 corpus=extensions;省略则以搜索两者。仅当需要进一步缩小范围时,才使用 references/modules.md 中的确切模块名称和 module=<package>。
关于 Discord 平台行为——负载、权限、意图、Gateway 事件、速率限制、REST 语义或应用命令规则——请查阅可用的官方 Discord 文档 MCP https://docs.discord.com/mcp。明确区分 Discord 的协议和 DisCatSharp 对其的实现。
当 MCP 不可用、结果与已安装版本冲突或查找没有返回匹配项时,请阅读 references/evidence-and-fallbacks.md。
生成答案
- 使用基于证据的确切的 DisCatSharp 名称、签名、包和命名空间。
- 当请求代码时,提供最小可编译的示例。包含相关的意图、配置、扩展注册、依赖注入以及处置/生命周期细节。
- 解释正在使用哪个事件或命令模型。不要随意混合使用 ApplicationCommands 和 CommandsNext。
- 保留异步行为和取消。不要引入阻塞性的
.Result或.Wait()调用。 - 在相关时,提及版本要求、实验状态、所需的 Discord 配置和迁移影响。
- 链接最有用的 DisCatSharp 页面或确切的重载。避免不加解决地转储搜索结果。
- 如果证据仍然不完整,说明哪些是已验证的、哪些是推断的,以及用户应检查什么。切勿在看似合理的代码背后隐藏不确定性。
常见陷阱
- 其他 Discord 库中的类似 API 不可互换。
- 当前文档中存在某个类型并不能证明它在旧的已安装包中也存在。
- 缓存状态可能不完整,事件可能需要意图。
- Discord REST 存储桶的 FIFO 顺序和 Gateway 用户处理程序的顺序是不同的问题。
- Gateway 缓存突变保持有序,而用户处理程序默认是并发的,除非
GatewayAdvancedConfiguration.DispatchMode使用了SequentialHandlers。 - 斜杠命令交互有响应截止时间以及 Discord 定义的响应/跟进规则。