Telegram बॉट कमांड उन स्लैश कीवर्ड में से एक है जिन्हें बॉट प्रकाशित करता है, ताकि लोग देख सकें कि वह क्या करता है। ये संदेश बॉक्स के पास वाले मेनू में दिखते हैं, और Telegram की अपनी परिभाषा सीधी है: "कमांड एक सरल /keyword है जो बॉट को बताता है कि क्या करना है।"
असली सवाल यह नहीं है कि कमांड क्या हैं, बल्कि यह है कि किसी व्यक्ति को कौन-सी कमांड दिखती हैं। यह एक अकेली सूची से तय नहीं होता, बल्कि प्राथमिकता के एक नियम से तय होता है। आम तौर पर इसी वजह से कोई बदलाव लागू होता हुआ नहीं दिखता।
कमांड कैसी दिख सकती है?
Telegram के फ़ॉर्मेट नियम सख़्त और छोटे हैं। कमांड "हमेशा / चिह्न से शुरू होनी चाहिए और उसमें अधिकतम 32 वर्ण हो सकते हैं। इनमें लैटिन अक्षर, अंक और अंडरस्कोर इस्तेमाल किए जा सकते हैं, हालाँकि साफ़-सुथरे रूप के लिए सरल लोअरकेस टेक्स्ट की सलाह दी जाती है।"
यानी कोई स्पेस, हाइफ़न या एक्सेंट वाला वर्ण नहीं चलेगा, और स्लैश के बाद का कीवर्ड 32 वर्णों से लंबा नहीं हो सकता। इन नियमों से बाहर की कमांड छोटी कमांड नहीं बनती, वह कमांड ही नहीं मानी जाती।
तीन कमांड हर बॉट से अपेक्षित हैं। Telegram सभी डेवलपर से कहता है कि जहाँ लागू हो, वे /start, /help और /settings का समर्थन करें, ताकि लोग कोई भी बॉट खोलें, उन्हें एक जैसा सेट मिले। अगर आपका बॉट उसी शब्द से कोई अलग काम करता है, तब भी इन तीनों को आरक्षित मानें।
कमांड कैसे सेट की जाती हैं?
दो तरीकों से, और दोनों एक ही सूची बदलते हैं।
आप Telegram के अपने @BotFather से बातचीत करके इन्हें सेट कर सकते हैं, जो बॉट बनाते समय आम तरीका है। या आप कोड से Bot API की मेथड setMyCommands के ज़रिए इन्हें सेट कर सकते हैं। यह मेथड सूची को ऐरे के रूप में लेती है, अधिकतम 100 कमांड स्वीकार करती है, और एक वैकल्पिक स्कोप लेती है जो "डिफ़ॉल्ट रूप से BotCommandScopeDefault होता है"।
जब आपकी कमांड किसी स्थिति पर निर्भर करें, तब API वाला तरीका अपनाएँ। इसे स्थिति बदलते ही कॉल किया जा सकता है, किसी व्यक्ति के याद रखने पर निर्भर नहीं रहना पड़ता।
मेरी कमांड सूची क्यों नहीं बदलती?
क्योंकि स्कोप आपस में नहीं मिलते, और आपकी पहले सेट की गई कोई संकरी सूची अब भी प्राथमिकता पा रही है।
Telegram के मॉडल में एक बॉट "is able to show different commands to different users and groups", जिसे स्कोप नियंत्रित करते हैं। स्कोप सात हैं:
BotCommandScopeDefaultBotCommandScopeAllPrivateChatsBotCommandScopeAllGroupChatsBotCommandScopeAllChatAdministratorsBotCommandScopeChatBotCommandScopeChatAdministratorsBotCommandScopeChatMember
और यह तय करने का नियम कि कौन-सी सूची लागू होगी, Telegram के दस्तावेज़ में "Determining list of commands" के अंतर्गत एक ही वाक्य में दिया गया है: "The first list of commands which is set is returned."
सबसे आम शिकायत का पूरा जवाब यही है। सूचियाँ आपस में जोड़ी नहीं जातीं। Telegram सबसे विशिष्ट स्कोप से सबसे व्यापक स्कोप तक एक तय क्रम में जाँच करता है, और जो पहला स्कोप सेट मिलता है, वहीं रुक जाता है।
बॉट के साथ निजी चैट में Telegram इस क्रम में जाँच करता है: पहले मेल खाते language_code के साथ botCommandScopeChat, फिर botCommandScopeChat, फिर भाषा कोड के साथ botCommandScopeAllPrivateChats, फिर botCommandScopeAllPrivateChats, फिर भाषा कोड के साथ botCommandScopeDefault, और अंत में botCommandScopeDefault।
ग्रुप और सुपरग्रुप में यह क्रम लंबा होता है। यह botCommandScopeChatMember से शुरू होकर केवल एडमिनिस्ट्रेटर वाले स्कोप और botCommandScopeAllGroupChats से गुज़रता है, और उसके बाद डिफ़ॉल्ट तक पहुँचता है।
दोनों में एक चीज़ उलट जाती है, और यही जाल है। निजी चैट में botCommandScopeChat सबसे विशिष्ट स्कोप होता है। ग्रुप में ऐसा नहीं है: botCommandScopeChatAdministrators और उसका भाषा वाला रूप, दोनों इससे ऊपर आते हैं। इसलिए एक बार सेट की गई एडमिनिस्ट्रेटर सूची उन लोगों के लिए प्रति-चैट सूची पर भारी पड़ती है, ठीक उस जगह जहाँ आप प्रति-चैट सूची के लागू होने की उम्मीद करेंगे।
इसलिए अगर आपने परीक्षण के दौरान किसी एक चैट के लिए सूची सेट की और बाद में डिफ़ॉल्ट बदला, तो वह चैट हमेशा पुरानी सूची ही दिखाती रहेगी। समाधान यह है कि व्यापक स्कोप को बार-बार बदलने के बजाय संकरे स्कोप को साफ़ करें। यही बात language_code वैरिएंट पर भी लागू होती है, जो क्रम में अपने ही स्कोप से ऊपर आता है।
मुझे असल में क्या करना चाहिए?
प्राथमिकता के नियम से तीन आदतें निकलती हैं।
- डिफ़ॉल्ट स्कोप सबसे पहले सेट करें और सबसे आख़िर में बदलें। जब कोई संकरा स्कोप मौजूद न हो, तो हर कोई इसी पर पहुँचता है, इसलिए आपके ज़्यादातर उपयोगकर्ता यही सूची देखते हैं।
- संकरे स्कोप का उपयोग सोच-समझकर करें, सुविधा के लिए नहीं। चैट या सदस्य स्तर पर सेट की गई कोई भी चीज़ बाद में आपको तब तक नहीं दिखती जब तक आप उसे खोजें नहीं, और वह चुपचाप हर व्यापक स्कोप को ओवरराइड कर देती है।
- जब कोई सूची पुरानी लगे, तो जिस स्कोप को आपने बदला था उसे दोबारा सेट करने के बजाय सभी स्कोप जाँचें। जो स्कोप लागू हो रहा है, वह आमतौर पर वह नहीं होता जिसे आप बदलते रहे हैं।
क्या Bird Telegram को सपोर्ट करता है?
सत्यापन कोड के लिए हाँ, लेकिन इस पेज पर बताई गई किसी भी चीज़ के लिए नहीं।
Bird Verify ईमेल, SMS और WhatsApp के साथ Telegram पर भी एक बार उपयोग होने वाले सत्यापन कोड भेजता है। इसके लिए वह आपके चलाए किसी बॉट का नहीं, बल्कि Telegram के अपने सत्यापित सूचना खाते का उपयोग करता है। यह कमांड मेनू वाले बॉट से अलग तरीका है: इसमें न कोई बॉट रजिस्टर करना होता है, न कमांड प्रकाशित करने होते हैं, और इस पेज की कोई बात इस पर लागू नहीं होती। अगर आप सत्यापन कोड भेजने के लिए यहाँ आए हैं, तो Bird Verify में चैनल और उनके फ़ॉलबैक का तरीका बताया गया है।
ऊपर बताई गई हर बात Telegram के अपने प्लेटफ़ॉर्म का व्यवहार है। उनकी बॉट सुविधाओं की गाइड और Bot API संदर्भ इसका स्रोत हैं, और बदलावों की जाँच के लिए भी वहीं देखें।
संक्षेप में
कमांड एक स्लैश कीवर्ड है जिसे बॉट प्रदर्शित करता है।
यह स्लैश से शुरू होता है, अधिकतम 32 वर्णों का होता है, और इसमें केवल लैटिन अक्षर, अंक और अंडरस्कोर होते हैं।
हर बॉट से तीन कमांड अपेक्षित हैं।
Telegram डेवलपर से कहता है कि जहाँ लागू हो, वे
/start,/helpऔर/settingsका समर्थन करें, ताकि लोगों को हर जगह यही तीन कमांड मिलें।स्कोप तय करते हैं कि किसे कौन-सी सूची दिखेगी।
स्कोप सात हैं, वैश्विक डिफ़ॉल्ट से लेकर किसी एक चैट के किसी एक सदस्य तक।
जो स्कोप सबसे पहले सेट मिलता है, पूरी तरह वही लागू होता है।
सूचियाँ आपस में नहीं मिलतीं। एक बार सेट किया गया संकीर्ण स्कोप उस दर्शक वर्ग से व्यापक सूची को तब तक छिपाए रखता है, जब तक आप उसे हटा नहीं देते।