Files
openclaw/extensions/qqbot/openclaw.plugin.json
Pavan Kumar Gondhi 33f44caa5d fix: restrict QQBot quoted context [AI] (#114136)
* fix: restrict qqbot quoted context

* fix: narrow qqbot bot quote exemption

* test: use valid qqbot ingress reasons

* fix: honor narrowed qqbot open dm quotes

* fix: honor narrowed qqbot open group quotes

* test: use valid qqbot blocked ingress decisions

* fix: honor qqbot quote visibility mode

* docs: mention qqbot context visibility

* fix: validate qqbot context visibility config

* fix: hide denied qqbot quote sender

* test: avoid unbound qqbot access mock

* test: allow auth migration isolation to finish

* Revert "test: allow auth migration isolation to finish"

This reverts commit f2b9a4f5e9.
2026-07-27 12:23:21 +05:30

183 lines
5.5 KiB
JSON

{
"id": "qqbot",
"name": "QQ Bot",
"description": "OpenClaw QQ Bot channel plugin for group and direct-message workflows.",
"icon": "https://cdn.simpleicons.org/qq",
"activation": {
"onStartup": false
},
"channels": ["qqbot"],
"contracts": {
"tools": ["qqbot_channel_api", "qqbot_remind"]
},
"enabledByDefault": true,
"skills": ["./skills"],
"configSchema": {
"type": "object",
"additionalProperties": true,
"$defs": {
"audioFormatPolicy": {
"type": "object",
"additionalProperties": false,
"properties": {
"sttDirectFormats": {
"type": "array",
"items": { "type": "string" }
},
"uploadDirectFormats": {
"type": "array",
"items": { "type": "string" }
},
"transcodeEnabled": { "type": "boolean" }
}
},
"stt": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": { "type": "boolean" },
"provider": { "type": "string" },
"baseUrl": { "type": "string" },
"apiKey": { "type": "string" },
"model": { "type": "string" }
}
},
"secretRef": {
"type": "object",
"additionalProperties": false,
"properties": {
"source": {
"type": "string",
"enum": ["env", "file", "exec"]
},
"provider": { "type": "string" },
"id": { "type": "string" }
},
"required": ["source", "provider", "id"]
},
"secretInput": {
"anyOf": [{ "type": "string", "minLength": 1 }, { "$ref": "#/$defs/secretRef" }]
},
"contextVisibility": {
"type": "string",
"enum": ["all", "allowlist", "allowlist_quote"]
},
"group": {
"type": "object",
"additionalProperties": true,
"properties": {
"requireMention": { "type": "boolean" },
"commandLevel": {
"type": "string",
"enum": ["all", "safety", "strict"]
},
"ignoreOtherMentions": { "type": "boolean" },
"historyLimit": { "type": "number" },
"name": { "type": "string" },
"prompt": { "type": "string" }
}
},
"groups": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/group"
}
},
"account": {
"type": "object",
"additionalProperties": true,
"properties": {
"enabled": { "type": "boolean" },
"name": { "type": "string" },
"appId": { "type": "string" },
"clientSecret": { "$ref": "#/$defs/secretInput" },
"clientSecretFile": { "type": "string" },
"allowFrom": {
"type": "array",
"items": { "type": "string" }
},
"contextVisibility": { "$ref": "#/$defs/contextVisibility" },
"systemPrompt": { "type": "string" },
"markdownSupport": { "type": "boolean" },
"voiceDirectUploadFormats": {
"type": "array",
"items": { "type": "string" }
},
"audioFormatPolicy": { "$ref": "#/$defs/audioFormatPolicy" },
"urlDirectUpload": { "type": "boolean" },
"upgradeUrl": { "type": "string" },
"upgradeMode": {
"type": "string",
"enum": ["doc", "hot-reload"]
},
"streaming": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": ["off", "partial"],
"default": "partial"
},
"nativeTransport": {
"type": "boolean",
"description": "Use QQ's official C2C stream_messages API for DM replies (single-message typing-style updates)."
}
}
},
"groups": { "$ref": "#/$defs/groups" }
}
}
},
"properties": {
"enabled": { "type": "boolean" },
"name": { "type": "string" },
"appId": { "type": "string" },
"clientSecret": { "$ref": "#/$defs/secretInput" },
"clientSecretFile": { "type": "string" },
"allowFrom": {
"type": "array",
"items": { "type": "string" }
},
"contextVisibility": { "$ref": "#/$defs/contextVisibility" },
"systemPrompt": { "type": "string" },
"markdownSupport": { "type": "boolean" },
"voiceDirectUploadFormats": {
"type": "array",
"items": { "type": "string" }
},
"audioFormatPolicy": { "$ref": "#/$defs/audioFormatPolicy" },
"stt": { "$ref": "#/$defs/stt" },
"urlDirectUpload": { "type": "boolean" },
"upgradeUrl": { "type": "string" },
"upgradeMode": {
"type": "string",
"enum": ["doc", "hot-reload"]
},
"streaming": {
"type": "object",
"additionalProperties": false,
"properties": {
"mode": {
"type": "string",
"enum": ["off", "partial"],
"default": "partial"
},
"nativeTransport": {
"type": "boolean",
"description": "Use QQ's official C2C stream_messages API for DM replies (single-message typing-style updates)."
}
}
},
"accounts": {
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/account"
}
},
"defaultAccount": { "type": "string" },
"groups": { "$ref": "#/$defs/groups" }
}
}
}