पाइथनमा टेलिग्राम बोट। स्क्र्याच देखि विनिमय दर संग बोट लेख्न को लागी एक पूर्ण गाइड

टेलिग्राममा बटहरू कार्यक्रमहरू हुन् जसले दर्शकहरूसँग सम्पर्क स्थापित गर्न वा कार्यहरू सरल बनाउन मद्दत गर्दछ जुन पहिले म्यानुअल रूपमा प्रदर्शन गर्नु पर्ने थियो। यी कार्यक्रमहरू विशेष गरी मेसेन्जर प्लेटफर्मको लागि लेखिएका हुन्। बटहरूले यसरी काम गर्छन्: प्रयोगकर्ताले इनपुट लाइन मार्फत आदेश पठाउँछन्, र प्रणालीले पाठ वा अन्तरक्रियात्मक सन्देशको साथ प्रतिक्रिया दिन्छ। कहिलेकाहीँ कार्यक्रमले वास्तविक व्यक्तिको कार्यहरूको नक्कल पनि गर्दछ - यस्तो बोटले ग्राहकहरू बीच थप विश्वासलाई प्रेरित गर्दछ।

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

तपाईँले 9 चरणहरूमा अन-स्क्रिन बटनहरूको रूपमा अन्तरक्रियात्मक तत्वहरूको साथ टेलिग्रामको लागि सरल बोट लेख्न सक्नुहुन्छ। तिनीहरूमध्ये प्रत्येकलाई विस्तृत रूपमा हेरौं र केही प्रश्नहरूको जवाफ दिनुहोस्:

  • बोट कसरी सुरु गर्ने;
  • एक वा धेरै बटनहरूबाट निर्मित किबोर्ड कसरी दर्ता गर्ने;
  • इच्छित कार्यहरूको लागि बटनहरू कसरी प्रोग्राम गर्ने;
  • इनलाइन मोड के हो र यसलाई अवस्थित बोटको लागि कसरी सेट अप गर्ने।

चरण 0: टेलीग्राम बट्स API को बारे मा सैद्धान्तिक पृष्ठभूमि

टेलिग्राम बटहरू सिर्जना गर्न प्रयोग गरिने मुख्य उपकरण HTML अनुप्रयोग प्रोग्रामिङ इन्टरफेस, वा HTML API हो। यो तत्वले आगन्तुक अनुरोधहरू स्वीकार गर्दछ र जानकारीको रूपमा प्रतिक्रियाहरू पठाउँछ। तयार डिजाइनहरूले कार्यक्रममा कामलाई सरल बनाउँछ। टेलिग्रामको लागि बोट लेख्न, तपाईंले यो इमेल ठेगाना प्रयोग गर्न आवश्यक छ: https://api.telegram.org/bot/METHOD_NAME

बोटको सही कार्यका लागि, एउटा टोकन पनि आवश्यक छ - क्यारेक्टरहरूको संयोजन जसले प्रोग्रामलाई सुरक्षित गर्दछ र यसलाई विश्वसनीय विकासकर्ताहरूलाई पहुँच खोल्छ। प्रत्येक टोकन अद्वितीय छ। स्ट्रिङ सिर्जना पछि बोटमा तोकिएको छ। विधिहरू फरक हुन सक्छन्: getUpdates, getChat र अन्य। विधिको छनोट विकासकर्ताहरूले बोटबाट कस्तो एल्गोरिदमको अपेक्षा गर्छन् भन्ने कुरामा निर्भर गर्दछ। टोकन उदाहरण:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

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

https://api.telegram.org/bot प्राप्त गर्नुहोस्/getMe{ ठीक छ: सत्य, परिणाम: { आईडी: 231757398, पहिलो_नाम: "विनिमय दर बट", प्रयोगकर्ता नाम: "एक्सचेन्जेस्टबोट" } }

यदि परिणाम प्राप्त हुनेछ ok बराबर साँचो। अन्यथा, प्रणाली त्रुटि संकेत गर्नेछ।

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

  • HTTPS कन्फिगर गर्ने कुनै तरिका छैन;
  • जटिल स्क्रिप्टिङ भाषाहरू प्रयोग गरिन्छ;
  • बोट सर्भर समय समयमा परिवर्तन हुन्छ;
  • बोट प्रयोगकर्ताहरूले भरिएको छ।

दोस्रो विधि जुन प्रयोगकर्ता सन्देशहरू प्राप्त गर्न लेख्न सकिन्छ setWebhook हो। यो एक पटक प्रयोग गरिन्छ, लगातार नयाँ अनुरोधहरू पठाउन आवश्यक छैन। वेबहुकले निर्दिष्ट URL मा डेटा अद्यावधिकहरू पठाउँछ। यो विधिलाई SSL प्रमाणपत्र चाहिन्छ। Webhook यी अवस्थामा उपयोगी हुनेछ:

  • वेब प्रोग्रामिङ भाषाहरू प्रयोग गरिन्छ;
  • बोट ओभरलोड गरिएको छैन, त्यहाँ धेरै प्रयोगकर्ताहरू छैनन्;
  • सर्भर परिवर्तन गर्दैन, कार्यक्रम लामो समयको लागि एउटै सर्भरमा रहन्छ।

थप निर्देशनहरूमा, हामी getUdates प्रयोग गर्नेछौं।

@BotFather टेलिग्राम सेवा च्याट बटहरू सिर्जना गर्न डिजाइन गरिएको हो। यस प्रणाली मार्फत आधारभूत सेटिङहरू पनि सेट गरिएको छ - 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(): json.loads(requests.get(URL).text) def get_exchange(ccy_key) फर्काउनुहोस् ): load_exchange मा exc को लागी(): if ccy_key == exc['ccy']: exc फिर्ता गर्नुहोस् False def get_exchanges(ccy_pattern): परिणाम = [] ccy_pattern = re.escape(ccy_pattern) + '.*' exc मा 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", खरिद गर्नुहोस्:"11220.0384", बिक्री: "12401.0950" } ]

चरण 2: @BotFather सँग टेलिग्राम बट सिर्जना गर्नुहोस्

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

  • /सेट विवरण - विवरण;
  • /setabouttext - नयाँ बोट बारे जानकारी;
  • /setuserpic - प्रोफाइल फोटो;
  • /सेटिनलाइन - इनलाइन मोड;
  • /setcommands - आदेशहरूको विवरण।

अन्तिम कन्फिगरेसन चरणमा, हामी /हेल्प र /एक्सचेन्जको वर्णन गर्छौं। सबै चरणहरू पूरा भएपछि, यो कोडिङमा सार्नको लागि समय हो।

चरण 3: बट सेट अप र लन्च गर्दै

config.py फाइल सिर्जना गरौं। यसमा, तपाईंले अद्वितीय बोट कोड र कार्यक्रमले जानकारी फेला पार्ने समय क्षेत्र निर्दिष्ट गर्न आवश्यक छ।

टोकन = '' # आफ्नो बोटको टोकन TIMEZONE = 'युरोप/कीभ' TIMEZONE_COMMON_NAME = 'कीभ'सँग बदल्नुहोस्

अर्को, हामी पहिले लेखिएको pb.py, पुस्तकालयहरू र अन्य आवश्यक कम्पोनेन्टहरू आयात गरेर अर्को फाइल सिर्जना गर्छौं। हराइरहेको पुस्तकालयहरू प्याकेज व्यवस्थापन प्रणाली (pip) बाट स्थापना गरिएका छन्।

आयात telebotimport configimport pbimport datetime आयात 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)

none_stop प्यारामिटरले अनुरोधहरू निरन्तर पठाइन्छ भनी सुनिश्चित गर्दछ। प्यारामिटर को सञ्चालन विधि त्रुटिहरु द्वारा प्रभावित हुनेछैन।

चरण 4: / स्टार्ट कमाण्ड ह्यान्डलर लेख्नुहोस्

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

@bot.message_handler(commands=['start']) def start_command(message): bot.send_message(message.chat.id, 'नमस्ते! म तपाईंलाई एक्सचेन्ज दरहरू देखाउन सक्छु।n' + 'विनिमय दरहरू प्राप्त गर्न / थिच्नुहोस्। exchange.n' + 'मद्दत प्राप्त गर्न /help थिच्नुहोस्।')

RџSЂRё आदेश = ['सुरुवात'] सत्य को बराबर start_command भनिन्छ। सन्देशको सामग्री त्यहाँ जान्छ। अर्को, तपाईंले पठाउने प्रकार्य लागू गर्न आवश्यक छ_ सन्देश एक विशेष सन्देशको सम्बन्धमा।

चरण 5: / मद्दत कमाण्ड ह्यान्डलर सिर्जना गर्नुहोस्

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

अन्तिम आदेश ह्यान्डलर कोड यस्तो देखिन्छ:

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

टेलिग्राम च्याटमा कोड कार्य:

पाइथनमा टेलिग्राम बोट। स्क्र्याच देखि विनिमय दर संग बोट लेख्न को लागी एक पूर्ण गाइड

चरण 6: / एक्सचेन्ज कमाण्ड ह्यान्डलर थप्दै

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

  1. प्रयोगकर्ताले इच्छित पदनामको साथ बटनमा क्लिक गर्दछ।
  2. getUpdates ले कलब्याक (CallbackQuery) प्राप्त गर्दछ।
  3. किबोर्ड थिचेर ह्यान्डल गर्ने तरिका थाहा हुन्छ - थिचिएको बटनको बारेमा जानकारी पठाइन्छ।

/ विनिमय ह्यान्डलर कोड:

@bot.message_handler(commands=['exchange']) def exchange_command(message): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('USD', callback_data='get-USD') ) किबोर्ड .id, 'छनोटको मुद्रामा क्लिक गर्नुहोस्:', reply_markup=keyboard )

टेलिग्राममा कोडको नतिजा:

पाइथनमा टेलिग्राम बोट। स्क्र्याच देखि विनिमय दर संग बोट लेख्न को लागी एक पूर्ण गाइड

चरण 7: बिल्ट-इन किबोर्ड बटनहरूको लागि ह्यान्डलर लेख्दै

pyTelegramBot Api प्याकेजले @bot.callback_query_handler डेकोरेटर प्रकार्य समावेश गर्दछ। यो कम्पोनेन्ट कलब्याकलाई प्रकार्यमा अनुवाद गर्न डिजाइन गरिएको हो - API ले कल खोल्छ र पुन: सिर्जना गर्दछ। यसलाई यसरी लेखिएको छ:

@bot.callback_query_handler(func=lambda कल: True) def iq_callback(query): data = query.data if 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(सन्देश, 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), reply_markup=get_exdate_key ) parse_mode='HTML' )

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

get_update_keyboard को लागि कोड लेखौं। दुई बटनहरू उल्लेख गर्न आवश्यक छ - प्रकार र विनिमयको लागि t र e स्ट्यान्ड। सेयर बटनको लागि switch_inline_query वस्तु आवश्यक छ ताकि प्रयोगकर्ताले धेरै च्याटहरूबाट छनौट गर्न सकून्। आगन्तुकले डलर, रूबल वा यूरोको हालको विनिमय दर कसलाई पठाउने छनोट गर्न सक्षम हुनेछ।

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

कहिलेकाहीँ तपाईले हेर्नु पर्छ कि छोटो समयमा विनिमय दर कति परिवर्तन भएको छ। अपडेट बटनको लागि दुई तरिकाहरू लेखौं ताकि प्रयोगकर्ताहरूले तुलनात्मक रूपमा पाठ्यक्रमहरू हेर्न सक्छन्।

विनिमय दरहरू बीचको भिन्नता भिन्न प्यारामिटर मार्फत सीरियलाइजरमा पठाइन्छ।

निर्धारित विधिहरूले डाटा अपडेट गरेपछि मात्र काम गर्दछ, तिनीहरूले पाठ्यक्रमको पहिलो प्रदर्शनलाई असर गर्दैनन्।

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

कल्पना गर्नुहोस् कि आगन्तुक डलर विनिमय दर जान्न चाहन्थे। यदि तपाईंले सन्देशमा USD चयन गर्नुभयो भने के हुन्छ:

पाइथनमा टेलिग्राम बोट। स्क्र्याच देखि विनिमय दर संग बोट लेख्न को लागी एक पूर्ण गाइड

चरण 8: अपडेट बटन ह्यान्डलर लागू गर्दै

अपडेट बटनसँग कार्यहरू ह्यान्डल गर्नको लागि कोड लेखौं र यसमा iq_callback_method भाग थपौं। जब कार्यक्रम वस्तुहरू प्राप्त प्यारामिटरबाट सुरु हुन्छ, तपाईंले get_ex_callback लेख्नु पर्छ। अन्य परिस्थितिहरूमा, हामी JSON पार्स गर्छौं र कुञ्जी t प्राप्त गर्ने प्रयास गर्छौं।

@bot.callback_query_handler(func=lambda कल: True) def iq_callback(query): data = query.data if data.startswith('get-'): get_ex_callback(query) else: प्रयास गर्नुहोस्: यदि json.loads(data)[ 't'] == 'u': edit_message_callback(query) बाहेक ValueError: pass

यदि t u बराबर छ भने, तपाईंले edit_message_callback विधिको लागि एउटा कार्यक्रम लेख्नुपर्छ। यस प्रक्रियालाई चरणबद्ध रूपमा तोडौं:

  1. मुद्रा बजारको अवस्थाको बारेमा अद्यावधिक जानकारी डाउनलोड गर्दै (exchange_now = pb.get_exchange(data['c'])।
  1. फरकसँग सिरियलाइजर मार्फत नयाँ सन्देश लेख्दै।
  2. हस्ताक्षर थप्दै (get_edited_signature)।

यदि प्रारम्भिक सन्देश परिवर्तन भएन भने, सम्पादन_मेसेज_टेक्स्ट विधिलाई कल गर्नुहोस्।

def edit_message_callback(query): data = json.loads(query.data)['e'] exchange_now = pb.get_exchange(data['c']) text = serialize_ex(exchange_now, get_exchange_diff( get_ex_from_iq_data(data)), exchange_now + 'n' + get_edited_signature() यदि query.message: bot.edit_message_text(पाठ, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='if_message HTML' लाईनमा। : bot.edit_message_text( text, inline_message_id=query.inline_message_id, reply_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': float("%.6f" % (float(now['sale']) - float(last['sale']))), '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)))

हामी यस विधि मार्फत InlineQueryResultArticles बाट वस्तुहरू फर्काउनको लागि get_iq_articles मा डेटाको एरे पास गर्छौं।

def get_iq_articles(एक्सचेन्जहरू): परिणाम = [] एक्सचेन्जहरूमा exc को लागि: result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextemContent ( serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> '+ exc['ccy'], thumb_height=1 ) परिणाम फिर्ता

अब, यदि तपाइँ @ लेख्नुहुन्छ र रेखामा एउटा स्पेस, खोज परिणामहरू स्क्रिनमा देखा पर्नेछ - तीन उपलब्ध मुद्राहरूमा रूपान्तरणका लागि विकल्पहरू।

पाइथनमा टेलिग्राम बोट। स्क्र्याच देखि विनिमय दर संग बोट लेख्न को लागी एक पूर्ण गाइड

प्रयोगकर्ताहरूले इच्छित मुद्रा प्रविष्ट गरेर परिणामहरू फिल्टर गर्न सक्छन्।

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

पाइथनमा टेलिग्राम बोट। स्क्र्याच देखि विनिमय दर संग बोट लेख्न को लागी एक पूर्ण गाइड

निष्कर्ष

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

1 टिप्पणी

  1. फ्यान्टास्टिक प्रकाशन

जवाफ छाड्नुस्