插件常见问答 (FAQ)
插件开发与排查常见问题的问答集合
插件常见问答(FAQ)
-
问:插件没有被加载,应该如何排查?
- 答:确认插件目录或文件名不以
.开头,且不在node_modules目录下。检查插件入口是否存在并被正确引用;确保项目启动或构建脚本没有忽略该目录。
- 答:确认插件目录或文件名不以
-
问:报错“缺少默认导出”,如何修复?
- 答:确保你的模块使用
export default导出插件实例或类,且导出的类继承自Plugin。例如:
import { Plugin } from "@plugin/BasePlugin.ts"; export default class MyPlugin extends Plugin { // ...实现... } - 答:确保你的模块使用
-
问:发送消息后返回消息对象中的id不能用
- 答:发送消息后返回的是正在发送中的消息对象,发送成功的你需要监听
updateMessageSendSucceeded更新,该事件会包含正式的消息 ID 和旧消息 ID 和最终状态;不要仅依赖发送中的消息值作为最终消息。 - 因此我们封装了一个
sendMessage的函数,来帮助你发送消息并等待发送成功的结果, 这个方法精简了调用流程并直接返回最终的消息对象,优化了原版中发送消息的复杂程度,支持参数你可以在src\TDLib\types\message.d.ts中sendMessage找到。示例用法如下:
import { sendMessage } from "@TDLib/function/message.ts"; const result = await sendMessage(client, chatId, { text: "hello world", }); - 答:发送消息后返回的是正在发送中的消息对象,发送成功的你需要监听
-
问:调用 TDLib 原生方法失败,去哪查文档?
- 答:参考官方 TDLib 方法文档: https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1_function.html ,确认传参、类型与调用方式符合 TDLib 要求。
const result = await client.invoke({ _: "sendMessage", chat_id: chatId, input_message_content: { _: "inputMessageText", text: { _: "formattedText", text: "hello world", }, }, }); -
问:我想看更多示例或扩展插件框架,有建议吗?