पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

टेलीग्राम में बॉट ऐसे प्रोग्राम हैं जो दर्शकों के साथ संपर्क स्थापित करने या उन कार्यों को सरल बनाने में मदद करते हैं जिन्हें पहले मैन्युअल रूप से किया जाना था। ये प्रोग्राम विशेष रूप से मेसेंजर प्लेटफॉर्म के लिए लिखे गए हैं। बॉट इस तरह से काम करते हैं: उपयोगकर्ता इनपुट लाइन के माध्यम से एक कमांड भेजता है, और सिस्टम टेक्स्ट या इंटरेक्टिव संदेश के साथ प्रतिक्रिया करता है। कभी-कभी कार्यक्रम वास्तविक व्यक्ति के कार्यों की नकल भी करता है - ऐसा बॉट ग्राहकों के बीच अधिक विश्वास को प्रेरित करता है।

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

आप टेलीग्राम के लिए 9 चरणों में ऑन-स्क्रीन बटन के रूप में इंटरैक्टिव तत्वों के साथ एक साधारण बॉट लिख सकते हैं। आइए उनमें से प्रत्येक को विस्तार से देखें और कुछ प्रश्नों के उत्तर दें:

  • बॉट कैसे शुरू करें;
  • एक या अधिक बटनों से एक अंतर्निहित कीबोर्ड कैसे पंजीकृत करें;
  • वांछित कार्यों के लिए बटन कैसे प्रोग्राम करें;
  • इनलाइन मोड क्या है और इसे मौजूदा बॉट के लिए कैसे सेट अप करें।

चरण 0: टेलीग्राम बॉट्स एपीआई के बारे में सैद्धांतिक पृष्ठभूमि

टेलीग्राम बॉट बनाने के लिए इस्तेमाल किया जाने वाला मुख्य टूल एचटीएमएल एप्लीकेशन प्रोग्रामिंग इंटरफेस या एचटीएमएल एपीआई है। यह तत्व आगंतुक अनुरोधों को स्वीकार करता है और सूचना के रूप में प्रतिक्रिया भेजता है। तैयार डिजाइन कार्यक्रम पर काम को सरल बनाते हैं। टेलीग्राम के लिए बॉट लिखने के लिए, आपको इस ईमेल पते का उपयोग करना होगा: https://api.telegram.org/bot/METHOD_NAME

बॉट के सही कामकाज के लिए, एक टोकन की भी आवश्यकता होती है - वर्णों का एक संयोजन जो प्रोग्राम की सुरक्षा करता है और विश्वसनीय डेवलपर्स तक इसकी पहुंच खोलता है। प्रत्येक टोकन अद्वितीय है। स्ट्रिंग को निर्माण पर बॉट को सौंपा गया है। तरीके अलग हो सकते हैं: getUpdates, getChat और अन्य। विधि का चुनाव इस बात पर निर्भर करता है कि डेवलपर्स बॉट से किस एल्गोरिथम की अपेक्षा करते हैं। टोकन उदाहरण:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

बॉट GET और POST अनुरोधों का उपयोग करते हैं। विधि मापदंडों को अक्सर पूरक करना पड़ता है - उदाहरण के लिए, जब SendMessage विधि को चैट आईडी और कुछ पाठ भेजना होता है। विधि परिशोधन के लिए पैरामीटर को एप्लिकेशन/x-www-form-urlencoded या एप्लिकेशन-json के माध्यम से URL क्वेरी स्ट्रिंग के रूप में पारित किया जा सकता है। ये विधियाँ फ़ाइलों को डाउनलोड करने के लिए उपयुक्त नहीं हैं। UTF-8 एन्कोडिंग भी आवश्यक है। एपीआई को एक अनुरोध भेजकर, आप JSON प्रारूप में परिणाम प्राप्त कर सकते हैं। GetME विधि के माध्यम से जानकारी प्राप्त करने के लिए प्रोग्राम की प्रतिक्रिया पर एक नज़र डालें:

https://api.telegram.org/bot प्राप्त करें/getMe{ ठीक है: सच, परिणाम: { id: 231757398, first_name: "एक्सचेंज रेट बॉट", उपयोगकर्ता नाम: "एक्सचेंजटेस्टबॉट" } }

परिणाम प्राप्त होगा यदि ok के बराबर होती है <strong>उद्देश्य</strong>. अन्यथा, सिस्टम एक त्रुटि का संकेत देगा।

बॉट्स में कस्टम संदेश प्राप्त करने के दो तरीके हैं। दोनों विधियां प्रभावी हैं, लेकिन विभिन्न मामलों में उपयुक्त हैं। संदेश प्राप्त करने के लिए, आप मैन्युअल रूप से getUpdates विधि के साथ एक अनुरोध लिख सकते हैं - प्रोग्राम स्क्रीन पर अद्यतन डेटा सरणी प्रदर्शित करेगा। अनुरोध नियमित रूप से भेजे जाने चाहिए, प्रत्येक सरणी का विश्लेषण करने के बाद, भेजना दोहराया जाता है। ऑफसेट एक पैरामीटर है जो चेक किए गए ऑब्जेक्ट के पुन: प्रकट होने से बचने के लिए एक नया परिणाम लोड करने से पहले छोड़े गए रिकॉर्ड की संख्या निर्धारित करता है। GetUpdates पद्धति के लाभ तब लागू होंगे जब:

  • HTTPS को कॉन्फ़िगर करने का कोई तरीका नहीं है;
  • जटिल स्क्रिप्टिंग भाषाओं का उपयोग किया जाता है;
  • बॉट सर्वर समय-समय पर बदलता रहता है;
  • बॉट उपयोगकर्ताओं से भरा हुआ है।

दूसरी विधि जिसे उपयोगकर्ता संदेश प्राप्त करने के लिए लिखा जा सकता है, वह है सेटवेबहुक। इसका उपयोग एक बार किया जाता है, लगातार नए अनुरोध भेजने की आवश्यकता नहीं है। वेबहुक निर्दिष्ट URL पर डेटा अपडेट भेजता है। इस विधि के लिए SSL प्रमाणपत्र की आवश्यकता होती है। वेबहुक इन मामलों में उपयोगी होगा:

  • वेब प्रोग्रामिंग भाषाओं का उपयोग किया जाता है;
  • बॉट अतिभारित नहीं है, बहुत अधिक उपयोगकर्ता नहीं हैं;
  • सर्वर नहीं बदलता है, प्रोग्राम लंबे समय तक उसी सर्वर पर रहता है।

आगे के निर्देशों में, हम getUpdates का उपयोग करेंगे।

@BotFather टेलीग्राम सेवा को चैट बॉट बनाने के लिए डिज़ाइन किया गया है। इस प्रणाली के माध्यम से बुनियादी सेटिंग्स भी निर्धारित की जाती हैं - बॉटफादर आपको विवरण बनाने, प्रोफाइल फोटो लगाने, समर्थन उपकरण जोड़ने में मदद करेगा। पुस्तकालय - टेलीग्राम बॉट्स के लिए HTML अनुरोधों के सेट - इंटरनेट पर उपलब्ध हैं, उनमें से बहुत सारे हैं। उदाहरण प्रोग्राम बनाते समय, pyTelegramBotApi का उपयोग किया गया था।

चरण 1: विनिमय दर अनुरोधों को लागू करना

सबसे पहले आपको वह कोड लिखना होगा जो क्वेरी करता है। PrivatBank API लिखते समय हम इसका उपयोग करेंगे, इसका लिंक नीचे दिया गया है: https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5। आपको अपने कोड में इन विधियों का उपयोग करने की आवश्यकता है:

  • load_exchange - विनिमय दर पाता है और एन्कोडेड जानकारी प्रदर्शित करता है;
  • get_exchange - एक विशिष्ट मुद्रा के बारे में डेटा प्रदर्शित करता है;
  • get_exchanges - नमूने के अनुसार मुद्राओं की सूची दिखाता है।

नतीजतन, pb.py फ़ाइल में कोड इस तरह दिखता है:

आयात पुनः आयात अनुरोध आयात json URL = 'https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5' def load_exchange(): return json.loads(requests.get(URL).text) def get_exchange(ccy_key ): लोड_एक्सचेंज () में एक्स के लिए: अगर सीसीई_की == एक्स ['सीसीई']: रिटर्न एक्स रिटर्न फाल्स डेफ गेट_एक्सचेंज (सीसीवाई_पैटर्न): परिणाम = [] सीसीई_पैटर्न = री.एस्केप (सीसीई_पैटर्न) + '। *' एक्स के लिए इन load_exchange(): यदि re.match(ccy_pattern, exc['ccy'], re.IGNORECASE) कोई नहीं है: result.append(exc) वापसी परिणाम

कार्यक्रम निर्दिष्ट अनुरोधों के लिए निम्नलिखित प्रतिक्रिया जारी कर सकता है:

[ { ccy:"USD", base_ccy:"UAH", ख़रीदें:"25.90000", बिक्री:"26.25000"}, {ccy:"EUR", base_ccy:"UAH", ख़रीदें:"29.10000", बिक्री:"29.85000 " }, {ccy:"RUR", base_ccy:"UAH", खरीद:"0.37800", बिक्री:"0.41800" }, {ccy:"BTC", base_ccy:"USD", buy:"11220.0384", बिक्री: "12401.0950" } ]

चरण 2: @BotFather . के साथ टेलीग्राम बॉट बनाएं

आप @BotFather सेवा का उपयोग करके संदेश प्राप्त करने और उनका जवाब देने के लिए एक प्रोग्राम बना सकते हैं। उसके टेलीग्राम पेज पर जाएं और /newbot कमांड दर्ज करें। चैट में निर्देश दिखाई देंगे, जिसके अनुसार आपको पहले बॉट का नाम और फिर उसका पता लिखना होगा। जब बॉट खाता बनाया जाता है, तो स्क्रीन पर एक टोकन युक्त स्वागत संदेश दिखाई देगा। आगे के विन्यास के लिए, इन आदेशों का उपयोग करें:

  • /सेटविवरण - विवरण;
  • /सेटबाउटटेक्स्ट - नए बॉट के बारे में जानकारी;
  • /setuserpic - प्रोफाइल फोटो;
  • /सेटिनलाइन - इनलाइन मोड;
  • / सेट कमांड - कमांड का विवरण।

अंतिम कॉन्फ़िगरेशन चरण में, हम /help और /exchange का वर्णन करते हैं। जब सभी चरण पूरे हो जाएं, तो कोडिंग की ओर बढ़ने का समय आ गया है।

चरण 3: बॉट की स्थापना और लॉन्च करना

आइए एक config.py फ़ाइल बनाएँ। इसमें, आपको अद्वितीय बॉट कोड और उस समय क्षेत्र को निर्दिष्ट करने की आवश्यकता है जिसमें कार्यक्रम जानकारी प्राप्त करेगा।

टोकन = '' # अपने बॉट के टोकन से बदलेंTIMEZONE = 'यूरोप/कीव' TIMEZONE_COMMON_NAME = 'कीव'

इसके बाद, हम पहले लिखे गए pb.py, पुस्तकालयों और अन्य आवश्यक घटकों के आयात के साथ एक और फ़ाइल बनाते हैं। लापता पुस्तकालय पैकेज प्रबंधन प्रणाली (पाइप) से स्थापित हैं।

आयात telebotimport configimport pbimport datetimeimport pytzimport jsonimport ट्रेसबैक P_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = config.TIMEZONE_COMMON_NAME

आइए बॉट बनाने के लिए pyTelegramBotApi की सामग्री का उपयोग करें। हम निम्नलिखित कोड का उपयोग करके प्राप्त टोकन भेजते हैं:

bot = telebot.TeleBot(config.TOKEN) bot.polling(none_stop=True)

कोई नहीं_स्टॉप पैरामीटर सुनिश्चित करता है कि अनुरोध लगातार भेजे जाते हैं। पैरामीटर का संचालन विधि त्रुटियों से प्रभावित नहीं होगा।

चरण 4: / start कमांड हैंडलर लिखें

यदि पिछले सभी चरणों को सही ढंग से किया जाता है, तो बॉट ने काम करना शुरू कर दिया है। कार्यक्रम नियमित रूप से अनुरोध उत्पन्न करता है क्योंकि यह getUpdates विधि का उपयोग करता है। कोई नहीं_स्टॉप तत्व के साथ लाइन से पहले, हमें कोड के एक टुकड़े की आवश्यकता होती है जो /स्टार्ट कमांड को संसाधित करता है:

@bot.message_handler(commands=['start']) def start_command(message): bot.send_message(Message.chat.id, 'ग्रीटिंग्स! मैं आपको विनिमय दरें दिखा सकता हूं.n' + 'विनिमय दर प्राप्त करने के लिए दबाएं / exchange.n' + 'सहायता प्राप्त करने के लिए /help दबाएं।')

RSёRџ आदेश = ['शुरू'] सच के बराबर start_command कहा जाता है। संदेश की सामग्री वहां जाती है। अगला, आपको भेजें फ़ंक्शन को लागू करने की आवश्यकता है_संदेश किसी विशेष संदेश के संबंध में।

चरण 5: एक /help कमांड हैंडलर बनाएं

/help कमांड को एक बटन के रूप में लागू किया जा सकता है। इस पर क्लिक करते ही यूजर को डेवलपर के टेलीग्राम अकाउंट पर ले जाया जाएगा। बटन को एक नाम दें, जैसे "डेवलपर से पूछें"। send_message विधि के लिए, उत्तर_मार्कअप पैरामीटर सेट करें, जो उपयोगकर्ता को एक लिंक पर पुनर्निर्देशित करता है। आइए कोड में वह पैरामीटर लिखें जो कीबोर्ड बनाता है (InlineKeyboardMarkup)। आपको केवल एक बटन (इनलाइनकीबोर्डबटन) की आवश्यकता है।

अंतिम कमांड हैंडलर कोड इस तरह दिखता है:

@bot.message_handler(commands=['help']) def help_command(message): कीबोर्ड = telebot.types.InlineKeyboardMarkup() keyboard.add(telbot.types.InlineKeyboardButton('Ask the developer', url='ваша ссылка на профиль' ) ) bot.send_message(Message.chat.id, '1) उपलब्ध मुद्राओं की सूची प्राप्त करने के लिए /exchange.n' + '2) उस मुद्रा पर क्लिक करें जिसमें आप रुचि रखते हैं। स्रोत और लक्षित मुद्राओं के बारे में जानकारी वाला एक संदेश प्राप्त होगा, '+'खरीद दर और बिक्री दर।एन' + '3) अनुरोध के संबंध में वर्तमान जानकारी प्राप्त करने के लिए "अपडेट" पर क्लिक करें। ' + 'बॉट पिछली और वर्तमान विनिमय दरों के बीच अंतर भी दिखाएगा।' + '4) बॉट इनलाइन का समर्थन करता है। टाइप @ किसी भी चैट और मुद्रा के पहले अक्षर में।', answer_markup=keyboard )

टेलीग्राम चैट में कोड एक्शन:

पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

चरण 6: /एक्सचेंज कमांड हैंडलर जोड़ना

चैट में उपलब्ध मुद्राओं के प्रतीकों वाले बटन प्रदर्शित करने के लिए इस चरण की आवश्यकता है। विकल्पों के साथ ऑन-स्क्रीन कीबोर्ड आपको गलतियों से बचने में मदद करेगा। PrivatBank रूबल, डॉलर और यूरो के बारे में जानकारी प्रदान करता है। InlineKeyboardButton विकल्प इस तरह काम करता है:

  1. उपयोगकर्ता वांछित पदनाम के साथ बटन पर क्लिक करता है।
  2. getUpdates को कॉलबैक (CallbackQuery) प्राप्त होता है।
  3. यह ज्ञात हो जाता है कि कीबोर्ड को कैसे दबाया जाए - दबाए गए बटन के बारे में जानकारी प्रसारित की जाती है।

/ एक्सचेंज हैंडलर कोड:

@bot.message_handler(commands=['exchange']) def exchange_command(message): कीबोर्ड = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('USD', callback_data='get-USD') कीबोर्ड पंक्ति .id, 'पसंद की मुद्रा पर क्लिक करें:', answer_markup=keyboard )

टेलीग्राम में कोड का परिणाम:

पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

चरण 7: अंतर्निहित कीबोर्ड बटन के लिए एक हैंडलर लिखना

pyTelegramBot Api पैकेज में @bot.callback_query_handler डेकोरेटर फ़ंक्शन शामिल है। इस घटक को कॉलबैक को एक फ़ंक्शन में अनुवाद करने के लिए डिज़ाइन किया गया है - एपीआई कॉल को खोल देता है और फिर से बनाता है। इसे इस प्रकार लिखा गया है:

@bot.callback_query_handler(func=lambda call: True) def iq_callback(query): data = query.data अगर data.startswith('get-'): get_ex_callback(query)

आइए get_ex_callback विधि भी लिखें:

def get_ex_callback(query): bot.answer_callback_query(query.id) send_exchange_result(query.message, query.data[4:])

एक और उपयोगी तरीका है - answer_callback_query. यह बटन दबाने और स्क्रीन पर परिणाम प्रदर्शित करने के बीच के भार को दूर करने में मदद करता है। आप कुछ मुद्रा कोड और संदेश पास करके send_exchange_query पर एक संदेश भेज सकते हैं। आइए send_exchange_result लिखें:

def send_exchange_result(message, ex_code): bot.send_chat_action(message.chat.id, 'typing') ex = pb.get_exchange(ex_code) bot.send_message(Message.chat.id, serialize_ex(ex), answer_markup=get_update_keyboard(ex) ), parse_mode = 'एचटीएमएल')

जबकि चैटबॉट को बैंक से अनुरोध का परिणाम प्राप्त होता है API, आगंतुक "संदेश टाइप करना" शिलालेख देखता है। ऐसा लगता है कि कोई वास्तविक व्यक्ति उत्तर दे रहा है। स्क्रीन पर इस तरह के एक संकेतक को प्रदर्शित करने के लिए, आपको इनपुट स्थिति लाइनों को जोड़ना होगा। इसके बाद, हम get_exchange का उपयोग करेंगे - इसकी मदद से, प्रोग्राम को मुद्रा पदनाम (रूबल, यूरो या डॉलर) प्राप्त होगा। send_message अतिरिक्त विधियों का उपयोग करता है: serialize_ex मुद्रा को दूसरे प्रारूप में परिवर्तित करता है, और get_update_keyboard सॉफ्टकी सेट करता है जो जानकारी को अपडेट करता है और अन्य चैट को मुद्रा बाजार डेटा भेजता है।

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

def get_update_keyboard(ex): कीबोर्ड = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('update', callback_data=json.dumps({'t': 'u', 'e': { ' b': ex['buy'], 's': ex['sale'], 'c': ex['ccy'] } }).replace('', '') ), telebot.types.InlineKeyboardButton ('शेयर', switch_inline_query=ex['ccy']) ) रिटर्न कीबोर्ड

कभी-कभी आपको यह देखने की जरूरत होती है कि थोड़े समय में विनिमय दर में कितना बदलाव आया है। आइए अपडेट बटन के लिए दो तरीके लिखें ताकि उपयोगकर्ता तुलना में पाठ्यक्रम देख सकें।

विनिमय दरों के बीच का अंतर सीरिएलाइज़र को अंतर पैरामीटर के माध्यम से पारित किया जाता है।

डेटा अपडेट होने के बाद ही निर्धारित तरीके काम करते हैं, वे पाठ्यक्रम के पहले प्रदर्शन को प्रभावित नहीं करेंगे।

def serialize_ex (ex_json, diff = कोई नहीं): परिणाम = '' + ex_json ['base_ccy'] + ' -> ' + ex_json ['ccy'] + ':nn' + 'Buy:' + ex_json['buy'] if diff: result += '' + serialize_exchange_diff(diff['buy_diff']) + 'n' + 'Sell:' + ex_json['sale'] + ' ' + serialize_exchange_diff (diff ['sale_diff']) + 'n' और: परिणाम + = 'nSell:' + ex_json ['बिक्री'] + 'n' वापसी परिणाम def serialize_exchange_diff (अंतर): परिणाम = '' यदि भिन्न> 0: परिणाम = '(' + str(diff) + '" src="https://sworg/images/core/emoji/2.3/svg/2197.svg">" src="https://sworg/images /core/emoji/72x72/2197.png">" src="https://sworg/images/core/emoji/72x72/2197.png">)' elif diff <0: परिणाम = '(' + str( अंतर)[1:] + '" src="https://sworg/images/core/emoji/2.3/svg/2198.svg">" src="https://sworg/images/core/emoji/72x72 /2198.png">" src="https://sworg/images/core/emoji/72x72/2198.png">)' वापसी परिणाम

कल्पना कीजिए कि आगंतुक डॉलर विनिमय दर जानना चाहता था। यहां बताया गया है कि यदि आप संदेश में USD का चयन करते हैं तो क्या होता है:

पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

चरण 8: अपडेट बटन हैंडलर को लागू करना

आइए अपडेट बटन के साथ क्रियाओं को संभालने के लिए कोड लिखें और इसमें iq_callback_method भाग जोड़ें। जब प्रोग्राम आइटम गेट पैरामीटर से शुरू होते हैं, तो आपको get_ex_callback लिखना होगा। अन्य स्थितियों में, हम JSON को पार्स करते हैं और कुंजी t प्राप्त करने का प्रयास करते हैं।

@bot.callback_query_handler(func=lambda call: True) def iq_callback(query): data = query.data if data.startswith('get-'): get_ex_callback(query) else: try: if json.loads(data)[ 'टी'] == 'यू': एडिट_मेसेज_कॉलबैक (क्वेरी) ValueError को छोड़कर: पास

यदि t आपके बराबर है, तो आपको edit_message_callback विधि के लिए एक प्रोग्राम लिखना होगा। आइए इस प्रक्रिया को चरण दर चरण तोड़ें:

  1. मुद्रा बाजार की स्थिति के बारे में अप-टू-डेट जानकारी डाउनलोड करना (exchange_now = pb.get_exchange(data['c'])।
  1. एक सीरिएलाइज़र के माध्यम से एक नया संदेश लिखना diff के साथ।
  2. एक हस्ताक्षर जोड़ना (get_edited_signature)।

यदि प्रारंभिक संदेश नहीं बदलता है, तो edit_message_text विधि को कॉल करें।

def edit_message_callback (क्वेरी): डेटा = json.loads (query.data) ['e'] exchange_now = pb.get_exchange (डेटा ['c']) टेक्स्ट = serialize_ex (exchange_now, get_exchange_diff (get_ex_from_iq_data (डेटा), exchange_now)) + 'n' + get_edited_signature() अगर query.message: bot.edit_message_text(text, query.message.chat.id, query.message.message_id, answer_markup=get_update_keyboard(exchange_now), parse_mode='HTML' ) elif query.inline_message_id : bot.edit_message_text (पाठ, inline_message_id=query.inline_message_id, answer_markup=get_update_keyboard(exchange_now), parse_mode='HTML')

आइए JSON को पार्स करने के लिए get_ex_from_iq_data विधि लिखें:

def get_ex_from_iq_data(exc_json): वापसी {'खरीदें': exc_json['b'], 'बिक्री': exc_json['s'] }

आपको कुछ और विधियों की आवश्यकता होगी: उदाहरण के लिए, get_exchange_diff, जो मुद्राओं की लागत के बारे में पुरानी और नई जानकारी पढ़ता है और अंतर प्रदर्शित करता है।

def get_exchange_diff (अंतिम, अब): वापसी {'sale_diff': फ्लोट ("% .6f"% (फ्लोट (अब ['बिक्री']) - फ्लोट (अंतिम ['बिक्री'])), 'buy_diff': फ्लोट ("%.6f"% (फ्लोट (अब ['खरीदें']) - फ्लोट (अंतिम ['खरीदें'])))}

आखिरी वाला, get_edited_signature, उस समय को दिखाता है जब पाठ्यक्रम अंतिम बार अपडेट किया गया था।

def get_edited_signature (): वापसी 'अपडेट किया गया '+ str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + '(' + TIMEZONE_COMMON_NAME + ')'

नतीजतन, स्थिर विनिमय दर के साथ बॉट से अपडेट किया गया संदेश इस तरह दिखता है:

पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

जब पाठ्यक्रम बदलता है, तो निर्धारित मापदंडों के कारण संदेशों में मूल्यों के बीच अंतर प्रदर्शित होता है।

पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

चरण 9: एंबेडेड मोड कार्यान्वयन

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

InlineQuery लाइब्रेरी के माध्यम से query_text को पास कर दिया जाता है। कोड डेटा की एक सरणी और inline_query_id तत्व के रूप में खोज परिणामों को पुनः प्राप्त करने के लिए answer_line फ़ंक्शन का उपयोग करता है। हम get_exchanges का उपयोग करते हैं ताकि अनुरोध पर बॉट को कई मुद्राएं मिलें।

@bot.inline_handler(func=lambda query: True) def query_text(inline_query): bot.answer_inline_query(inline_query.id, get_iq_articles(pb.get_exchanges(inline_query.query)))

हम इस विधि के माध्यम से InlineQueryResultArticle से ऑब्जेक्ट वापस करने के लिए get_iq_articles को डेटा की एक सरणी पास करते हैं।

def get_iq_articles (एक्सचेंज): परिणाम = [] एक्सचेंज में एक्स के लिए: परिणाम। संलग्न करें ( telebot.types.InlineQueryResultArticle (आईडी = exc ['ccy'], शीर्षक = exc ['ccy'], input_message_content = telebot.types.InputTextMessageContent। ( serialize_ex(exc), parse_mode='HTML' ), answer_markup=get_update_keyboard(exc), विवरण='कन्वर्ट' + exc ['base_ccy'] + ' ->' + exc ['ccy'], thumb_height=1 )) वापसी परिणाम

अब, यदि आप @ लिखते हैं और पंक्ति में एक स्थान, खोज परिणाम स्क्रीन पर दिखाई देंगे - तीन उपलब्ध मुद्राओं में परिवर्तित करने के विकल्प।

पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

उपयोगकर्ता वांछित मुद्रा दर्ज करके परिणामों को फ़िल्टर कर सकते हैं।

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

पायथन में टेलीग्राम बॉट। शुरुआत से विनिमय दरों के साथ बॉट लिखने के लिए एक संपूर्ण मार्गदर्शिका

निष्कर्ष

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

1 टिप्पणी

एक जवाब लिखें