新插件优先使用
Sender 的 replyImage、replyVoice、replyVideo、replyFile 和 replyMixed。旧版回复脚本中的全局 sendImage、sendVoice、sendVideo、sendFile、sendMixed 仍可用于维护存量插件,但新文档示例不再主推全局函数。选择发送方式
回复当前会话
在消息触发的插件里使用
sender.replyImage(...) 等方法,目标自动来自当前消息。主动推送
使用
pushImage(...)、pushVoice(...)、pushVideo(...)、pushFile(...) 或 pushMixed(...) 指定 imType、群和用户。发送组合内容
使用
replyMixed(...) 一次发送文本、图片、语音、视频或文件组成的消息。先保存文件
使用
fileDownload(...) 保存远程地址、base64 或 data URI,再把本地路径传给媒体发送方法。快速示例
媒体来源
媒体方法的source 参数支持以下形式:
回复媒体
先创建Sender,再调用对应的回复方法。返回值通常是 SendReceipt。
方法作用
options
媒体回复方法的第二个参数是可选对象。当前普通插件发送帮助函数实际使用这些字段:
需要指定目标时,请使用
pushImage(...)、pushVoice(...)、pushVideo(...)、pushFile(...) 或 pushMixed(...)。普通回复默认发送到当前会话。
发送混合消息
replyMixed(items, options?) 可以把文本和媒体组成一个消息序列。媒体项可使用 source,也可使用 file、url 或 path 表示来源。
items:
媒体项可额外传
name、file_name、filename、mime_type 或 mimeType。
主动推送媒体
主动推送不依赖当前消息。你需要指定目标:imType:IM 类型,例如qq、wx,以实际启用的适配器为准。groupCode:群号/群 ID。私聊时通常传空字符串。userID:用户 ID。群推送时通常传空字符串。title:推送标题或备注,部分适配器会忽略。
更多主动推送账号选择规则见
JavaScript 主动推送 或 Python 主动推送。
保存并发送文件
fileDownload(url, path?) 会把 http(s)、base64://... 或 data:*;base64,... 保存为本地文件。返回的 path / file_path 可以继续传给媒体发送方法。
fileDownload 参数
FileDownloadResult
fileDownload(...) 单个文件默认限制约 20 MB。下载失败、来源不可访问或文件过大时会抛出异常。
处理用户上传的文件
如果用户在消息里上传文件,先读取媒体项,再调用downloadAdapterFile(...) 保存到本地。
downloadAdapterFile(...) 返回字段与 fileDownload(...) 相同,并可能额外包含:
SendReceipt
文本、媒体和撤回类方法通常返回发送回执。适配器可能添加额外字段。ok === false / ok is False 当作失败;不要只依赖某一个消息 ID 字段。
实用技巧
- 发送本地生成文件前,先确认文件已经写入完成,再调用
replyImage/replyVideo等方法。 - 给文件和 mixed 媒体项设置
filename/name,方便用户识别下载内容。 - 大文件优先使用可访问的 URL;需要落盘处理时再用
fileDownload(...)。 - 用户上传文件不要手动解析平台原始字段;使用
sender.getMediaItems()+downloadAdapterFile(...)。 - 媒体发送失败时读取回执里的
error,并给用户一个可执行的下一步提示。
旧版回复脚本入口
维护plugin/replies/*.js 这类旧版脚本时,可以继续使用全局函数:
plugin/scripts/*.js 或 plugin/scripts/*.py 时,请优先使用 Sender 写法,便于阅读和类型提示。