@-उल्लेख प्राथमिक चैट प्रकार हैं, जिनमें समृद्ध
मीडिया (इमेज, वॉइस, वीडियो, फ़ाइलें) शामिल है। गिल्ड चैनल संदेश केवल
टेक्स्ट और रिमोट-URL इमेज के लिए समर्थित हैं; वॉइस, वीडियो, फ़ाइल अपलोड और स्थानीय/Base64
इमेज गिल्ड चैनलों में उपलब्ध नहीं हैं। प्रतिक्रियाएँ और थ्रेड
कहीं भी समर्थित नहीं हैं।
स्थिति: आधिकारिक डाउनलोड योग्य Plugin।
इंस्टॉल करें
सेटअप
- QQ Open Platform पर जाएँ और पंजीकरण / लॉग इन करने के लिए अपने फ़ोन के QQ से QR कोड स्कैन करें।
- नया QQ bot बनाने के लिए Create Bot पर क्लिक करें।
- bot के सेटिंग पेज पर AppID और AppSecret ढूँढें और उन्हें कॉपी करें।
AppSecret सादे टेक्स्ट में संग्रहीत नहीं होता। यदि आप इसे सहेजे बिना पेज छोड़ देते हैं, तो आपको नया AppSecret फिर से जनरेट करना होगा।
- चैनल जोड़ें:
- Gateway को पुनः आरंभ करें।
इनबाउंड स्थायित्व
QQ gateway टर्न इवेंट के लिए, OpenClaw सहेजे गए gateway रिज़्यूम क्रम को आगे बढ़ाने से पहले रॉ इवेंट को स्थायी रूप से संग्रहीत करता है। लंबित या पुनः प्रयास योग्य टर्न Gateway के पुनः आरंभ होने के बाद भी बने रहते हैं, प्रत्येक वार्तालाप के अनुसार क्रमबद्ध रहते हैं, और सक्रिय या सुरक्षित रखा गया पूर्णता रिकॉर्ड मौजूद रहने तक डुप्लिकेट कतार प्रविष्टियों को रोकने के लिए प्रदाता इवेंट ID का उपयोग करते हैं। यदि स्थायी प्रवेश विफल होता है, तो OpenClaw क्रम को आगे बढ़ाए बिना वर्तमान gateway सॉकेट समाप्त कर देता है। इसके बाद पुनः कनेक्ट/रिज़्यूम पथ अप्रतिबद्ध इवेंट को फिर से अनुरोध कर सकता है। कतार-से-एजेंट सीमा पर डिलीवरी अब भी कम-से-कम एक बार होती है, इसलिए हैंडऑफ़ के दौरान क्रैश होने पर कोई टर्न फिर से चल सकता है। इंटरैक्टिव सेटअप:कॉन्फ़िगर करें
न्यूनतम कॉन्फ़िगरेशन:QQBOT_APP_IDQQBOT_CLIENT_SECRET
openclaw channels add --channel qqbot --token-file ...केवल AppSecret सेट करता है;appIdपहले से कॉन्फ़िगरेशन याQQBOT_APP_IDमें सेट होना चाहिए।clientSecretसादे टेक्स्ट की स्ट्रिंग, फ़ाइल पथ (clientSecretFile), या संरचित SecretRef ऑब्जेक्ट स्वीकार करता है।- लेगेसी
secretref:.../secretref-env:...मार्कर स्ट्रिंगclientSecretके लिए अस्वीकार की जाती हैं; इसके बजाय संरचित SecretRef ऑब्जेक्ट का उपयोग करें।
स्ट्रीमिंग
streaming.mode: "off"खाते के लिए ब्लॉक स्ट्रीमिंग अक्षम करता है।streaming.nativeTransport: trueQQ की आधिकारिकstream_messagesAPI के माध्यम से C2C (DM) उत्तर स्ट्रीम करता है; समूह/चैनल लक्ष्य अप्रभावित रहते हैं।- लेगेसी
streaming: true|falseस्केलर औरstreaming.c2cStreamApiकुंजीopenclaw doctor --fixके माध्यम से इस संरचना में माइग्रेट होते हैं। /bot-streaming on|offDM से इसी कॉन्फ़िगरेशन को टॉगल करता है।
पहुँच नीति
allowFrom/groupAllowFromनियंत्रित करते हैं कि C2C / समूह संदर्भों में bot से कौन चैट कर सकता है।dmPolicy/groupPolicy(open|allowlist|disabled) प्रवर्तन मोड नियंत्रित करते हैं।allowFromमें कोई ठोस (गैर-वाइल्डकार्ड) प्रविष्टि होने परdmPolicyका डिफ़ॉल्टallowlistहोता है, अन्यथाopen।groupAllowFromयाallowFromमें से किसी में ठोस प्रविष्टि होने परgroupPolicyका डिफ़ॉल्टallowlistहोता है, अन्यथाopen।- “Auth: allowlist” स्लैश कमांड के लिए
allowFromमें (या समूह आमंत्रणों के लिएgroupAllowFromमें) स्पष्ट गैर-वाइल्डकार्ड प्रविष्टि आवश्यक है, चाहेdmPolicy/groupPolicyकुछ भी हो — स्लैश कमांड देखें।
एकाधिक-खाता सेटअप
एक ही OpenClaw इंस्टेंस के अंतर्गत कई QQ bot चलाएँ:appId द्वारा कुंजीबद्ध एक पृथक WebSocket कनेक्शन, API क्लाइंट और टोकन
कैश का स्वामी होता है। लॉग पंक्तियों को स्वामी खाता ID से टैग किया जाता है, ताकि
एक Gateway के अंतर्गत कई bot चलाने पर निदान अलग-अलग रखा जा सके।
CLI के माध्यम से दूसरा bot जोड़ें:
समूह चैट
समूह समर्थन डिस्प्ले नामों के बजाय QQ समूह OpenID का उपयोग करता है। bot को किसी समूह में जोड़ें, फिर उसका उल्लेख करें या समूह को बिना उल्लेख के चलने के लिए कॉन्फ़िगर करें।groups["*"] प्रत्येक समूह के लिए डिफ़ॉल्ट सेट करता है; कोई ठोस groups.GROUP_OPENID
प्रविष्टि एक समूह के लिए उन डिफ़ॉल्ट को ओवरराइड करती है। समूह सेटिंग:
commandLevel यह स्वीकार करता है:
पुरानी QQBot
toolPolicy प्रविष्टियाँ सेवानिवृत्त हो चुकी हैं। उन्हें tools में माइग्रेट करने के लिए openclaw doctor --fix चलाएँ।
सक्रियण मोड mention और always हैं। requireMention: true,
mention से मैप होता है; requireMention: false, always से मैप होता है। सत्र-स्तरीय सक्रियण
ओवरराइड मौजूद होने पर कॉन्फ़िगरेशन पर प्राथमिकता पाता है।
इनबाउंड कतार प्रति पीयर होती है। समूह पीयर को बड़ी कतार सीमा मिलती है (सीधे
पीयर के लिए 20 की तुलना में 50), कतार भरने पर मानव-लिखित संदेशों से पहले bot-लिखित संदेशों को
हटाया जाता है, और सामान्य समूह संदेशों के बर्स्ट को एक एट्रिब्यूटेड टर्न में मर्ज किया जाता है। स्लैश
कमांड किसी भी मर्ज बैच से स्वतंत्र होकर एक-एक करके चलते हैं।
वॉइस (STT / TTS)
STT और TTS प्राथमिकता फ़ॉलबैक के साथ दो-स्तरीय कॉन्फ़िगरेशन का समर्थन करते हैं:enabled: false सेट करें। खाता-स्तरीय TTS ओवरराइड
tts जैसी ही संरचना का उपयोग करते हैं और चैनल/वैश्विक TTS कॉन्फ़िगरेशन पर डीप-मर्ज होते हैं।
STT अनुरोध डिफ़ॉल्ट रूप से 60 सेकंड के बाद टाइम आउट होते हैं। Plugin-विशिष्ट STT चयनित
models.providers.<id>.timeoutSeconds ओवरराइड का उपयोग करता है। फ़्रेमवर्क ऑडियो STT
चयनित ऑडियो-सक्षम tools.media.models[] प्रविष्टि के timeoutSeconds का, और फिर चयनित प्रदाता ओवरराइड का उपयोग करता है।
इनबाउंड QQ वॉइस अटैचमेंट एजेंटों के समक्ष ऑडियो मीडिया मेटाडेटा के रूप में प्रस्तुत किए जाते हैं,
जबकि रॉ वॉइस फ़ाइलों को सामान्य MediaPaths से बाहर रखा जाता है। सादे-टेक्स्ट उत्तर में
[[audio_as_voice]] TTS संश्लेषित करता है और TTS कॉन्फ़िगर होने पर मूल QQ वॉइस संदेश भेजता है।
आउटबाउंड ऑडियो अपलोड/ट्रांसकोड व्यवहार को
channels.qqbot.audioFormatPolicy के साथ भी समायोजित किया जा सकता है:
sttDirectFormatsuploadDirectFormatstranscodeEnabled
लक्ष्य प्रारूप
प्रत्येक bot के पास उपयोगकर्ता OpenID का अपना समूह होता है। Bot A द्वारा प्राप्त OpenID का उपयोग Bot B के माध्यम से संदेश भेजने के लिए नहीं किया जा सकता।
स्लैश कमांड
AI कतार से पहले इंटरसेप्ट किए जाने वाले अंतर्निहित कमांड:
उपयोग सहायता के लिए किसी भी कमांड के अंत में
? जोड़ें (उदाहरण के लिए /bot-upgrade ?)।
“प्रमाणीकरण: अनुमति-सूची” वाले कमांड के लिए अतिरिक्त रूप से प्रेषक का openid
स्पष्ट गैर-वाइल्डकार्ड allowFrom सूची में होना आवश्यक है (समूह से जारी
कमांड के लिए groupAllowFrom को प्राथमिकता मिलती है और अनुपलब्ध होने पर
allowFrom का उपयोग होता है)। वाइल्डकार्ड allowFrom: ["*"] चैट की अनुमति
देता है, लेकिन इन कमांड की नहीं। इनमें से किसी कमांड को निजी चैट के बाहर या
प्राधिकरण के बिना चलाने पर संदेश चुपचाप हटाने के बजाय एक संकेत लौटाया जाता है।
/bot-me, /bot-version, और /bot-upgrade केवल निजी चैट के लिए हैं, लेकिन इनके
लिए अनुमति-सूची आवश्यक नहीं है — कोई भी C2C प्रेषक इन्हें चला सकता है।
जब QQ Bot निष्पादन अनुमोदन डिफ़ॉल्ट समान-चैट फ़ॉलबैक का उपयोग करते हैं, तो मूल
अनुमोदन बटन के क्लिक भी उसी स्पष्ट गैर-वाइल्डकार्ड कमांड अनुमति-सूची का पालन
करते हैं। व्यापक कमांड एक्सेस दिए बिना केवल अनुमोदन एक्सेस देने के लिए
channels.qqbot.execApprovals.approvers कॉन्फ़िगर करें। मूल निष्पादन अनुमोदन डिफ़ॉल्ट रूप से
सक्षम होते हैं।
मीडिया और स्टोरेज
- इनबाउंड, आउटबाउंड और Gateway-ब्रिज मीडिया
~/.openclaw/media/qqbotके अंतर्गत एक ही पेलोड रूट साझा करते हैं (सेट होने परOPENCLAW_HOMEका पालन करते हुए), ताकि अपलोड, डाउनलोड और ट्रांसकोड कैश एक ही सुरक्षित डायरेक्टरी के अंतर्गत रहें। - C2C और समूह लक्ष्यों के लिए रिच मीडिया डिलीवरी एक ही
sendMediaपथ से होती है। 5 MiB या उससे बड़ी स्थानीय फ़ाइलें और इन-मेमोरी बफ़र QQ के खंडित अपलोड एंडपॉइंट का उपयोग करते हैं; छोटे पेलोड और रिमोट-URL/Base64 स्रोत एकल-प्रयास अपलोड API का उपयोग करते हैं। - यदि कोई हॉट अपग्रेड
openclaw.jsonका लेखन पूरा होने से पहले Gateway को बाधित करता है, तो Plugin अगली शुरुआत पर आंतरिक स्नैपशॉट से उस खाते के अंतिम ज्ञातappId/clientSecretको पुनर्स्थापित करता है (किसी जानबूझकर किए गए कॉन्फ़िगरेशन परिवर्तन को कभी अधिलेखित नहीं करता), इसलिए QR कोड को फिर से स्कैन करना आवश्यक नहीं है।
समस्या निवारण
- Gateway शुरू नहीं होता / कोई इनबाउंड संदेश नहीं: सत्यापित करें कि
appIdऔरclientSecretसही हैं और QQ Open Platform पर बॉट सक्षम है। क्रेडेंशियल अनुपलब्ध होने पर “QQBot कॉन्फ़िगर नहीं है (appId या clientSecret अनुपलब्ध है)” दिखाई देता है। --token-fileके साथ सेटअप अब भी कॉन्फ़िगर नहीं दिखाता:--token-fileकेवल AppSecret सेट करता है।appIdको अभी भी कॉन्फ़िगरेशन याQQBOT_APP_IDमें सेट करना आवश्यक है।- अचानक बड़ी संख्या में आए समूह उत्तर टकराते हैं: किसी पीयर की कतार भरने पर इनबाउंड कतार मनुष्यों द्वारा लिखे संदेशों से पहले बॉट द्वारा लिखे संदेशों को हटाती है और सामान्य (गैर-कमांड) समूह संदेशों के समूह को एक श्रेयांकित टर्न में मिला देती है, ताकि बॉट संदेशों की बाढ़ से मानव संदेशों को संसाधन मिलना बंद न हो।
- सक्रिय रूप से भेजे गए संदेश नहीं पहुँच रहे: यदि उपयोगकर्ता ने हाल में इंटरैक्ट नहीं किया है, तो QQ बॉट द्वारा आरंभ किए गए संदेशों को अवरुद्ध कर सकता है।
- आवाज़ का लिप्यंतरण नहीं हुआ: सुनिश्चित करें कि STT कॉन्फ़िगर किया गया है और प्रदाता तक पहुँचा जा सकता है।