टेलीग्राम बॉट क्या है?

टेलीग्राम बॉट एक स्वचालित प्रोग्राम है जो टेलीग्राम प्लेटफ़ॉर्म पर चलता है और उपयोगकर्ताओं के साथ बातचीत कर सकता है। यह Bot API के माध्यम से काम करता है; यह API डेवलपर्स को संदेश भेजने, अनुकूलित कीबोर्ड प्रदर्शित करने, कमांड प्रोसेस करने और कई अन्य कार्यों की अनुमति देता है। यह लेख टेलीग्राम बॉट की प्रमुख विशेषताओं और उनके उपयोग के तरीके पर विस्तृत मार्गदर्शन प्रदान करता है। चाहे आप शुरुआती हों या अनुभवी डेवलपर, यहाँ आपको व्यावहारिक सलाह और उदाहरण मिलेंगे।

बॉट बनाना: BotFather के साथ शुरुआत

किसी भी टेलीग्राम बॉट को बनाने का पहला कदम @BotFather से संपर्क करना है। यह आधिकारिक बॉट नए बॉट पंजीकृत करता है और उनके लिए एक अद्वितीय API टोकन प्रदान करता है।

प्रक्रिया इस प्रकार है:

  1. टेलीग्राम में @BotFather खोजें और /start कमांड भेजें।
  2. फिर /newbot टाइप करें और अपने बॉट के लिए एक प्रदर्शन नाम (display name) चुनें।
  3. इसके बाद एक यूज़रनेम (unique identifier) दें, जो bot में समाप्त होना चाहिए — उदाहरण के लिए, MyAwesomeBot या my_awesome_bot
  4. सफलता पर, BotFather आपको एक API टोकन देगा। इसे सुरक्षित स्थान पर रखें, क्योंकि यह आपके बॉट की पहचान है।

प्लेटफ़ॉर्म अंतर: Android, iOS और डेस्कटॉप पर @BotFather तक पहुँच समान है, लेकिन डेस्कटॉप संस्करण में आप सीधे संदेश बॉक्स में @BotFather टाइप करके तुरंत शुरू कर सकते हैं।

प्रमुख विशेषताएँ और कॉन्फ़िगरेशन

टोकन प्राप्त करने के बाद, आप नीचे वर्णित विशेषताओं का लाभ उठा सकते हैं। प्रत्येक सुविधा Bot API के माध्यम से कार्यान्वित की जाती है। यहाँ हम उन मुख्य क्षमताओं पर ध्यान केंद्रित करेंगे जो अधिकांश बॉट के लिए आवश्यक हैं।

मैसेज भेजना (sendMessage)

सबसे बुनियादी विशेषता किसी चैट में टेक्स्ट संदेश भेजना है। इसके लिए API एंडपॉइंट sendMessage का उपयोग किया जाता है, जहाँ chat_id (लक्ष्य चैट या उपयोगकर्ता) और text अनिवार्य पैरामीटर हैं।

उदाहरण (Python में अनुरोध):

import requests

TOKEN = "YOUR_BOT_TOKEN"
url = f"https://api.telegram.org/bot{TOKEN}/sendMessage"
payload = {
    "chat_id": 123456789,
    "text": "नमस्ते, यह एक परीक्षण संदेश है!",
    "parse_mode": "HTML"   # वैकल्पिक, Markdown या HTML फ़ॉर्मेटिंग के लिए
}
requests.post(url, json=payload)

आप parse_mode पैरामीटर का उपयोग करके टेक्स्ट को बोल्ड, इटैलिक, कोड ब्लॉक आदि में प्रारूपित कर सकते हैं। ध्यान रखें: सादे टेक्स्ट संदेशों की अधिकतम लंबाई 4096 वर्ण है। यदि इससे अधिक होती है, तो API एक त्रुटि लौटाएगा — इसलिए लंबे संदेशों को छोटे भागों में विभाजित करना बेहतर है।

इनलाइन कीबोर्ड (InlineKeyboardMarkup)

इनलाइन कीबोर्ड आपको संदेश के नीचे क्लिक करने योग्य बटन जोड़ने की अनुमति देता है। प्रत्येक बटन में एक टेक्स्ट और callback_data या URL होता है। जब उपयोगकर्ता बटन पर क्लिक करता है, तो बॉट को एक CallbackQuery प्राप्त होता है, जिसे आप अपने कोड में संसाधित कर सकते हैं।

इनलाइन कीबोर्ड का उपयोग कब न करें: यदि आपको केवल सरल उत्तरों की आवश्यकता है, तो रिप्लाई कीबोर्ड (नीचे देखें) अधिक उपयुक्त हो सकता है। इनलाइन कीबोर्ड के लिए आपको हमेशा एक कॉलबैक हैंडलर लागू करना होता है, जिससे कोड जटिल हो सकता है।

एक विशिष्ट पेलोड इस प्रकार दिखता है:

"reply_markup": {
    "inline_keyboard": [
        [
            {"text": "हाँ", "callback_data": "yes"},
            {"text": "नहीं", "callback_data": "no"}
        ]
    ]
}

कॉलबैक डेटा स्ट्रिंग की लंबाई 1–64 बाइट्स तक सीमित है। विस्तृत जानकारी के लिए आधिकारिक Bot API दस्तावेज़ देखें।

कस्टम कीबोर्ड (ReplyKeyboardMarkup)

रिप्लाई कीबोर्ड आपके बॉट के संदेश के जवाब में उपयोगकर्ता के चैट इनपुट फ़ील्ड के ऊपर एक अनुकूलित कीबोर्ड प्रदर्शित करता है। यह उपयोगकर्ता को पूर्वनिर्धारित विकल्पों में से चुनने देता है — जैसे सर्वेक्षण, फ़ीडबैक फ़ॉर्म, या किसी भी सीमित-विकल्प इंटरैक्शन के लिए आदर्श।

सेटअप करते समय resize_keyboard और one_time_keyboard जैसे पैरामीटर का उपयोग करें। पहला कीबोर्ड को बटनों के आकार में ढालता है, दूसरा उपयोग के बाद कीबोर्ड को गायब कर देता है।

एक सीमा: रिप्लाई कीबोर्ड केवल तब दिखाई देता है जब उपयोगकर्ता ने चैट में संदेश भेजा हो और बॉट ने उत्तर दिया हो। इसे स्थायी रूप से दृश्यमान रखने का कोई तरीका नहीं है।

कमांड्स हैंडल करना

टेलीग्राम बॉट स्लैश कमांड (जैसे /start, /help) को पहचान और संसाधित कर सकते हैं। आपको BotFather में अपने बॉट के लिए कमांड सूची सेट करनी होती है, ताकि उपयोगकर्ता उन्हें मेनू में देख सकें। BotFather पर /setcommands भेजें, अपना बॉट चुनें, फिर प्रति पंक्ति एक कमांड और विवरण दर्ज करें।

बैकएंड पर, आपको इन कमांड को हैंडल करना होगा। जब कोई उपयोगकर्ता कमांड भेजता है, तो Bot API Message ऑब्जेक्ट में entities फ़ील्ड के साथ एक अद्यतन भेजता है, जहाँ type: "bot_command" होता है।

युक्ति: सुनिश्चित करें कि आपका बॉट केवल पहले शब्द को कमांड के रूप में पहचाने। यदि कोई अज्ञात कमांड आता है, तो या तो उसे अनदेखा करें या उपयोगकर्ता को उपलब्ध कमांड की सूची दिखाएँ।

वेबहुक सेटअप (Webhook)

अपडेट प्राप्त करने के दो मुख्य तरीके हैं: वेबहुक और लॉन्ग पोलिंग। वेबहुक सर्वर-साइड इवेंट-ड्रिवन आर्किटेक्चर के लिए पसंदीदा है। आप setWebhook API कॉल के माध्यम से एक HTTPS URL निर्दिष्ट करते हैं; टेलीग्राम सर्वर हर नए अपडेट के साथ उस URL पर POST अनुरोध भेजता है।

वेबहुक सेट करने के लिए आपके सर्वर के पास एक वैध SSL प्रमाणपत्र होना चाहिए। एक सामान्य सेटअप: setWebhook?url=https://yourserver.com/webhook पर GET अनुरोध भेजें। सेटअप की स्थिति जाँचने के लिए getWebhookInfo का उपयोग करें।

समस्या निवारण: यदि वेबहुक काम नहीं कर रहा है, तो पहले जाँचें कि URL सार्वजनिक रूप से सुलभ है और SSL प्रमाणपत्र मान्य है। अस्थायी रूप से पोलिंग पर स्विच करने के लिए deleteWebhook का उपयोग करें और फिर पुनः प्रयास करें।

पोलिंग (Long Polling)

पोलिंग एक सरल विकल्प है जिसमें आप बार-बार getUpdates एंडपॉइंट को कॉल करते हैं। यह विकास या कम-ट्रैफ़िक बॉट के लिए उपयुक्त है। पहले से प्राप्त अपडेट को चिह्नित करने के लिए offset पैरामीटर का उपयोग करना न भूलें।

बड़े पैमाने पर, पोलिंग कम कुशल होती है क्योंकि यह लगातार HTTP अनुरोध उत्पन्न करती है। इसलिए उत्पादन बॉट के लिए वेबहुक को प्राथमिकता दी जाती है।

इनलाइन मोड (Inline Query)

इनलाइन मोड आपके बॉट को किसी भी चैट में @username के माध्यम से परिणाम प्रदान करने देता है। BotFather पर /setinline भेजकर इस सुविधा को सक्षम करें। जब उपयोगकर्ता @YourBot और फिर एक क्वेरी टाइप करता है, तो टेलीग्राम आपके बॉट को एक InlineQuery भेजता है। आपको InlineQueryResult ऑब्जेक्ट (जैसे लेख, फ़ोटो, Gif) की सूची के साथ उत्तर देना होता है।

इनलाइन मोड के लिए त्वरित प्रतिक्रिया आवश्यक है (अनुशंसित 1 सेकंड से कम); अन्यथा टेलीग्राम परिणाम प्रदर्शित नहीं कर सकता है।

सीमा: इनलाइन मोड तभी उपलब्ध है जब BotFather द्वारा सक्षम किया गया हो और उपयोगकर्ता ने बॉट के साथ कम से कम एक बार बातचीत की हो।

सामान्य समस्याएँ और समाधान

बॉट विकास के दौरान कुछ सामान्य समस्याएँ उत्पन्न हो सकती हैं। नीचे उनके निदान और समाधान दिए गए हैं:

टोकन समस्या: “Invalid token” त्रुटि

यदि API कॉल “404 Not Found” या “Unauthorized” लौटाता है, तो संभावित कारण हैं: टोकन में टाइपो, अनावश्यक स्पेस, या टोकन रीसेट हो जाना। BotFather पर /token कमांड भेजकर वर्तमान टोकन की जाँच करें और पुनः प्राप्त करें।

वेबहुक काम नहीं कर रहा

लक्षण: बॉट अपडेट प्राप्त नहीं करता। निदान: getWebhookInfo एंडपॉइंट को कॉल करके last_error_date और last_error_message फ़ील्ड जाँचें। सामान्य कारणों में SSL प्रमाणपत्र समाप्ति, गलत URL, या फ़ायरवॉल द्वारा अनुरोधों को अवरुद्ध करना शामिल है। समाधान: नया प्रमाणपत्र स्थापित करें, deleteWebhook के बाद पुनः setWebhook करें। यदि समस्या बनी रहे, तो अस्थायी रूप से पोलिंग पर स्विच करें।

मैसेज फ़ॉर्मेटिंग त्रुटि

यदि parse_mode सेट करने के बाद भी HTML टैग या Markdown दिखाई देते हैं, तो सुनिश्चित करें कि आपने सही मोड (HTML या MarkdownV2) चुना है और सभी टैग ठीक से बंद हैं। MarkdownV2 में विशेष वर्णों (_*[]()~`>#+-=|{}.!) को बैकस्लैश से एस्केप करना आवश्यक है।

दर सीमा (Rate Limits)

टेलीग्राम API प्रति सेकंड/प्रति चैट अनुरोधों की संख्या सीमित करता है। यदि आप एक ही चैट में तेज़ी से कई संदेश भेजते हैं, तो 429 Too Many Requests त्रुटि आ सकती है। समाधान: रेट्री लॉजिक और बैक-ऑफ़ एल्गोरिदम लागू करें, या संदेशों को बैच में भेजें। अनुभवजन्य अवलोकन: लगभग 20–30 संदेश प्रति सेकंड प्रति चैट एक सुरक्षित सीमा है, हालाँकि यह भिन्न हो सकती है।

सर्वोत्तम प्रथाएँ

बॉट विकास करते समय निम्नलिखित बातों का ध्यान रखें:

  • सुरक्षा: टोकन को कभी भी सार्वजनिक रिपॉजिटरी या क्लाइंट-साइड कोड में न रखें। इसके बजाय पर्यावरण चर या सुरक्षित वॉल्ट का उपयोग करें।
  • त्रुटि प्रबंधन: सभी API कॉल को try-except में लपेटें और त्रुटियों को लॉग करें।
  • Webhook सुरक्षा: अपने वेबहुक एंडपॉइंट पर एक गुप्त टोकन (secret_token पैरामीटर) सेट करें, ताकि केवल Telegram से आने वाले अनुरोधों को ही स्वीकार किया जाए।
  • संसाधन अनुकूलन: यदि आपका बॉट कई उपयोगकर्ताओं को सेवा देता है, तो वेबहुक को प्राथमिकता दें और स्टेटलेस डिज़ाइन अपनाएँ।
  • प्रतिबंधों का सम्मान: स्पैम न करें और Telegram की सेवा शर्तों का पालन करें; इससे आपके बॉट पर प्रतिबंध लगने का जोखिम कम होगा।

इन सिद्धांतों का पालन करके आप एक सुरक्षित, कुशल और उपयोगकर्ता-अनुकूल बॉट बना सकते हैं।

अक्सर पूछे जाने वाले प्रश्न

क्या मैं एक बॉट को ग्रुप में जोड़ सकता हूँ?

हाँ, अपने बॉट को किसी भी ग्रुप में जोड़ा जा सकता है। ग्रुप एडमिन को बॉट को जोड़ने की अनुमति देनी होती है। बॉट ग्रुप के सभी संदेशों को नहीं पढ़ सकता, जब तक कि उसका Privacy Mode बदल न दिया जाए। डिफ़ॉल्ट रूप से, बॉट केवल उन संदेशों को देखता है जो / कमांड से शुरू होते हैं या जिनमें बॉट का उल्लेख होता है। ग्रुप प्राइवेसी को बंद करने के लिए BotFather पर /setprivacy कमांड का उपयोग करें।

बॉट किस प्रकार का मीडिया भेज सकता है?

बॉट फ़ोटो, वीडियो, ऑडियो, दस्तावेज़, स्टिकर, GIF (एनिमेटेड स्टिकर) और वॉइस संदेश भेज सकता है। प्रत्येक मीडिया प्रकार के लिए अलग API एंडपॉइंट हैं — sendPhoto, sendVideo, आदि। फ़ाइल का आकार सीमित है: फ़ोटो के लिए 10 MB, वीडियो और दस्तावेज़ों के लिए 50 MB। आप sendMediaGroup का उपयोग करके एक साथ कई मीडिया फ़ाइलें भेज सकते हैं।

क्या बॉट भुगतान प्रोसेस कर सकता है?

हाँ, Telegram बॉट भुगतान (Payments) का समर्थन करता है। BotFather पर /mybots चुनकर अपने बॉट के लिए भुगतान प्रदाता (जैसे Stripe) सेट करें। फिर sendInvoice API के माध्यम से इनवॉइस भेज सकते हैं। यह सुविधा केवल कुछ देशों में उपलब्ध है, और आपको Telegram की भुगतान नीतियों का पालन करना होगा।

निष्कर्ष

इस लेख में हमने Telegram बॉट की प्रमुख विशेषताओं को कवर किया है — संदेश भेजना, इनलाइन और कस्टम कीबोर्ड, कमांड, वेबहुक, पोलिंग और इनलाइन मोड। आपने सीखा कि BotFather के माध्यम से एक नया बॉट कैसे बनाएँ, प्रत्येक सुविधा को कैसे लागू करें, और सामान्य समस्याओं का समाधान कैसे करें। अब आप एक कार्यशील बॉट बनाने के लिए तैयार हैं। शुरुआत सरल रखें, धीरे-धीरे जटिलता बढ़ाएँ, और Telegram API दस्तावेज़ को अपना संदर्भ बनाए रखें।

यदि आपके कोई और प्रश्न हैं, तो @BotFather या Telegram डेवलपर समुदाय से पूछने में संकोच न करें। हैप्पी कोडिंग!