Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

ბოტები Telegram-ში არის პროგრამები, რომლებიც ხელს უწყობენ აუდიტორიასთან კონტაქტის დამყარებას ან მოქმედებების გამარტივებას, რომლებიც ადრე ხელით უნდა შესრულებულიყო. ეს პროგრამები დაწერილია სპეციალურად მესენჯერის პლატფორმისთვის. ბოტები მუშაობენ ამ გზით: მომხმარებელი აგზავნის ბრძანებას შეყვანის ხაზის მეშვეობით და სისტემა პასუხობს ტექსტური ან ინტერაქტიული შეტყობინების საშუალებით. ზოგჯერ პროგრამა რეალური ადამიანის ქმედებებსაც კი ბაძავს - ასეთი ბოტი მომხმარებელს მეტ ნდობას შთააგონებს.

არსებობს რამდენიმე ტიპის სისტემა მომხმარებლების ავტომატური დახმარებისთვის. ზოგიერთი ბოტი უბრალოდ ურთიერთობს მომხმარებლებთან, ზოგი კი რეგულარულად აწვდის ინფორმაციას. შეუძლებელია პროგრამების აშკარად დაყოფა ტიპებად - დეველოპერები ხშირად აერთიანებენ რამდენიმე ფუნქციას ერთ ბოტში.

თქვენ შეგიძლიათ დაწეროთ მარტივი ბოტი Telegram-ისთვის ინტერაქტიული ელემენტებით ეკრანზე ღილაკების სახით 9 ნაბიჯით. მოდით განვიხილოთ თითოეული მათგანი დეტალურად და ვუპასუხოთ რამდენიმე კითხვას:

  • როგორ დავიწყოთ ბოტი;
  • როგორ დაარეგისტრიროთ ჩაშენებული კლავიატურა ერთი ან მეტი ღილაკიდან;
  • როგორ დავაპროგრამოთ ღილაკები სასურველი ფუნქციებისთვის;
  • რა არის ინლაინ რეჟიმი და როგორ დავაყენოთ ის არსებული ბოტისთვის.

ნაბიჯი 0: თეორიული ფონი Telegram bots API-ის შესახებ

მთავარი ინსტრუმენტი, რომელიც გამოიყენება Telegram ბოტების შესაქმნელად, არის HTML აპლიკაციის პროგრამირების ინტერფეისი, ან HTML API. ეს ელემენტი იღებს ვიზიტორთა მოთხოვნებს და აგზავნის პასუხებს ინფორმაციის სახით. მზა დიზაინები ამარტივებს მუშაობას პროგრამაზე. Telegram-ისთვის ბოტის დასაწერად, თქვენ უნდა გამოიყენოთ ეს ელექტრონული ფოსტის მისამართი: https://api.telegram.org/bot/METHOD_NAME

ბოტის სწორი ფუნქციონირებისთვის საჭიროა ჟეტონიც - სიმბოლოების კომბინაცია, რომელიც იცავს პროგრამას და უხსნის მასზე წვდომას სანდო დეველოპერებს. თითოეული ნიშანი უნიკალურია. სტრიქონი ენიჭება ბოტს შექმნისას. მეთოდები შეიძლება იყოს განსხვავებული: getUpdates, getChat და სხვა. მეთოდის არჩევანი დამოკიდებულია იმაზე, თუ რა ალგორითმს ელიან დეველოპერები ბოტისგან. ნიშნის მაგალითი:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

ბოტები იყენებენ GET და POST მოთხოვნებს. მეთოდის პარამეტრებს ხშირად უნდა დაემატოს - მაგალითად, როდესაც sendMessage მეთოდი უნდა გამოაგზავნოს ჩატის ID და ტექსტი. მეთოდის დახვეწის პარამეტრები შეიძლება გადაეცეს როგორც URL-ის მოთხოვნის სტრიქონი განაცხადის/x-www-form-urlencoded ან application-json-ის გამოყენებით. ეს მეთოდები არ არის შესაფერისი ფაილების ჩამოტვირთვისთვის. ასევე საჭიროა UTF-8 კოდირება. API-ზე მოთხოვნის გაგზავნით, შეგიძლიათ მიიღოთ შედეგი JSON ფორმატში. გადახედეთ პროგრამის პასუხს ინფორმაციის მისაღებად getME მეთოდით:

მიიღეთ https://api.telegram.org/bot/getMe{ ok: true, შედეგი: { id: 231757398, first_name: "Exchange Rate Bot", მომხმარებლის სახელი: "exchangetestbot" } }

შედეგი მიიღება თუ ok ტოლია მართალია. წინააღმდეგ შემთხვევაში, სისტემა მიუთითებს შეცდომაზე.

ბოტებში მორგებული შეტყობინებების მისაღებად ორი გზა არსებობს. ორივე მეთოდი ეფექტურია, მაგრამ შესაფერისია სხვადასხვა შემთხვევაში. შეტყობინებების მისაღებად შეგიძლიათ ხელით დაწეროთ მოთხოვნა getUpdates მეთოდით – პროგრამა ეკრანზე გამოაჩენს მონაცემთა განახლების მასივს. მოთხოვნები რეგულარულად უნდა გაიგზავნოს, თითოეული მასივის გაანალიზების შემდეგ გაგზავნა მეორდება. Offset არის პარამეტრი, რომელიც განსაზღვრავს გამოტოვებული ჩანაწერების რაოდენობას ახალი შედეგის ჩატვირთვამდე, რათა თავიდან იქნას აცილებული შემოწმებული ობიექტების ხელახლა გამოჩენა. getUpdates მეთოდის სარგებელი გამოჩნდება, თუ:

  • არ არსებობს გზა HTTPS-ის კონფიგურაციისთვის;
  • გამოიყენება რთული სკრიპტირების ენები;
  • ბოტის სერვერი დროდადრო იცვლება;
  • ბოტი დატვირთულია მომხმარებლებით.

მეორე მეთოდი, რომელიც შეიძლება დაიწეროს მომხმარებლის შეტყობინებების მისაღებად, არის setWebhook. იგი გამოიყენება ერთხელ, არ არის საჭირო მუდმივად ახალი მოთხოვნების გაგზავნა. Webhook აგზავნის მონაცემთა განახლებებს მითითებულ URL-ზე. ეს მეთოდი მოითხოვს SSL სერთიფიკატს. Webhook სასარგებლო იქნება შემდეგ შემთხვევებში:

  • გამოიყენება ვებ პროგრამირების ენები;
  • ბოტი არ არის გადატვირთული, არ არის ძალიან ბევრი მომხმარებელი;
  • სერვერი არ იცვლება, პროგრამა დიდხანს რჩება იმავე სერვერზე.

შემდგომ ინსტრუქციებში ჩვენ გამოვიყენებთ getUpdates-ს.

@BotFather Telegram სერვისი შექმნილია ჩატის ბოტების შესაქმნელად. ძირითადი პარამეტრები ასევე დაყენებულია ამ სისტემის საშუალებით – BotFather დაგეხმარებათ აღწერის გაკეთებაში, პროფილის ფოტოს განთავსებაში, დამხმარე ინსტრუმენტების დამატებაში. ბიბლიოთეკები - HTML მოთხოვნების ნაკრები Telegram ბოტებისთვის - ხელმისაწვდომია ინტერნეტში, მათ შორის საკმაოდ ბევრია. სამაგალითო პროგრამის შექმნისას გამოყენებული იქნა pyTelegramBotApi.

ნაბიჯი 1: გაცვლითი კურსის მოთხოვნების განხორციელება

ჯერ უნდა დაწეროთ კოდი, რომელიც ასრულებს შეკითხვებს. ჩვენ გამოვიყენებთ პრივატბანკის 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(): თუ re.match(ccy_pattern, exc['ccy'], re.IGNORECASE) არ არის None: 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: შექმენით Telegram Bot @BotFather-თან ერთად

თქვენ შეგიძლიათ შექმნათ პროგრამა შეტყობინებების მისაღებად და მათზე პასუხის გასაცემად @BotFather სერვისის გამოყენებით. გადადით მის Telegram გვერდზე და შეიყვანეთ ბრძანება /newbot. ჩატში გამოჩნდება ინსტრუქცია, რომლის მიხედვითაც ჯერ უნდა ჩაწეროთ ბოტის სახელი, შემდეგ კი მისამართი. ბოტის ანგარიშის შექმნისას ეკრანზე გამოჩნდება მისასალმებელი შეტყობინება, რომელიც შეიცავს ჟეტონს. შემდგომი კონფიგურაციისთვის გამოიყენეთ ეს ბრძანებები:

  • /setdescription – აღწერა;
  • /setabouttext – ინფორმაცია ახალი ბოტის შესახებ;
  • /setuserpic – პროფილის ფოტო;
  • /setinline – inline რეჟიმი;
  • /setcommands – ბრძანებების აღწერა.

კონფიგურაციის ბოლო ეტაპზე ჩვენ აღვწერთ /help და /exchange. როდესაც ყველა ნაბიჯი დასრულდა, დროა გადავიდეთ კოდირებაზე.

ნაბიჯი 3: ბოტის დაყენება და გაშვება

მოდით შევქმნათ config.py ფაილი. მასში თქვენ უნდა მიუთითოთ უნიკალური ბოტის კოდი და დროის ზონა, რომელშიც პროგრამა იპოვის ინფორმაციას.

TOKEN = '' # ჩანაცვლება თქვენი ბოტის ნიშნითTIMEZONE = 'ევროპა/კიევი' TIMEZONE_COMMON_NAME = 'კიევი'

შემდეგი, ჩვენ ვქმნით სხვა ფაილს ადრე დაწერილი pb.py, ბიბლიოთეკების და სხვა საჭირო კომპონენტების იმპორტით. დაკარგული ბიბლიოთეკები დაინსტალირებულია პაკეტის მართვის სისტემიდან (pip).

ტელებოტიმპორტის იმპორტი კონფიგურაცია pbimport თარიღიდროიმპორტი pytzimport jsonimport traceback P_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = კონფიგურაცია.TIMEZONE_COMMON_NAME

მოდით გამოვიყენოთ pyTelegramBotApi-ს შინაარსი ბოტის შესაქმნელად. მიღებულ ჟეტონს ვაგზავნით შემდეგი კოდის გამოყენებით:

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

none_stop პარამეტრი უზრუნველყოფს მოთხოვნების მუდმივად გაგზავნას. პარამეტრის მოქმედებაზე გავლენას არ მოახდენს მეთოდის შეცდომები.

ნაბიჯი 4: დაწერეთ /start Command Handler

თუ ყველა წინა ნაბიჯი სწორად შესრულდა, ბოტი იწყებს მუშაობას. პროგრამა რეგულარულად წარმოქმნის მოთხოვნებს, რადგან ის იყენებს 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ё commands=['დაწყება'] ტოლი True start_command ეწოდება. შეტყობინების შინაარსი იქ მიდის. შემდეგი, თქვენ უნდა განახორციელოთ გაგზავნის ფუნქცია_მესიჯი კონკრეტულ შეტყობინებასთან დაკავშირებით.

ნაბიჯი 5: შექმენით /help Command Handler

ბრძანება /help შეიძლება განხორციელდეს ღილაკის სახით. მასზე დაწკაპუნებით მომხმარებელი გადაიყვანება დეველოპერის Telegram ანგარიშზე. მიეცით ღილაკს სახელი, როგორიცაა „ჰკითხეთ დეველოპერს“. დააყენეთ reply_markup პარამეტრი, რომელიც გადამისამართებს მომხმარებელს ბმულზე, send_message მეთოდისთვის. კოდში ჩავწეროთ პარამეტრი, რომელიც ქმნის კლავიატურას (InlineKeyboardMarkup). თქვენ გჭირდებათ მხოლოდ ერთი ღილაკი (InlineKeyboardButton).

საბოლოო ბრძანების დამმუშავებლის კოდი ასე გამოიყურება:

@bot.message_handler(commands=['დახმარება']) def help_command(მესიჯი): კლავიატურა = 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) ბოტი მხარს უჭერს inline-ს. აკრიფეთ @ ნებისმიერ ჩატში და ვალუტის პირველ ასოებში.', reply_markup=keyboard )

კოდის მოქმედება Telegram ჩატში:

Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

ნაბიჯი 6: /exchange Command Handler-ის დამატება

ეს ნაბიჯი საჭიროა ჩატში არსებული ვალუტების სიმბოლოებით ღილაკების საჩვენებლად. ეკრანის კლავიატურა ოფციებით დაგეხმარებათ თავიდან აიცილოთ შეცდომები. პრივატბანკი გვაწვდის ინფორმაციას რუბლის, დოლარისა და ევროს შესახებ. InlineKeyboardButton ვარიანტი მუშაობს ასე:

  1. მომხმარებელი დააჭერს ღილაკს სასურველი აღნიშვნით.
  2. getUpdates იღებს გამოძახებას (CallbackQuery).
  3. ცნობილი ხდება, თუ როგორ უნდა გაუმკლავდეს კლავიატურაზე დაჭერას - გადადის ინფორმაცია დაჭერილი ღილაკის შესახებ.

/exchange დამმუშავებლის კოდი:

@bot.message_handler(commands=['გაცვლა']) def exchange_command(შეტყობინება): კლავიატურა = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('USD', callback_data='get-USD') ) keyboard.row( telebot.types.InlineKeyboardButton('EUR', callback_data='get-EUR'), telebot.types.InlineKeyboardButton('RUR', callback_data='get-RUR') ) bot.send_message( message.chat .id, 'დააწკაპუნეთ არჩეულ ვალუტაზე:', reply_markup=keyboard )

კოდის შედეგი Telegram-ში:

Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

ნაბიჯი 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(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), reply_markup=get_update_ ), parse_mode='HTML' )

სანამ ჩატბოტი ბანკიდან მოთხოვნის შედეგს იღებს API, ვიზიტორი ხედავს წარწერას „წერილის აკრეფა“. როგორც ჩანს, რეალური ადამიანი პასუხობს. ასეთი ინდიკატორის ეკრანზე საჩვენებლად, თქვენ უნდა დაამატოთ შეყვანის სტატუსის ხაზები. შემდეგი, ჩვენ გამოვიყენებთ 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('Update', callback_data=json.dumps({ 't': 'u', 'e': { ' b': ex['ყიდვა'], 's': ex['sale'], 'c': ex['ccy'] } }).replace(' ', '') ), telebot.types.InlineKeyboardButton ('Share', switch_inline_query=ex['ccy']) ) დააბრუნეთ კლავიატურა

ზოგჯერ თქვენ უნდა ნახოთ რამდენად შეიცვალა გაცვლითი კურსი მოკლე დროში. მოდით დავწეროთ ორი მეთოდი განახლების ღილაკისთვის, რათა მომხმარებლებმა ნახონ კურსები შედარებით.

კურსებს შორის სხვაობა გადაეცემა სერიალიზატორს diff პარამეტრის მეშვეობით.

დადგენილი მეთოდები მუშაობს მხოლოდ მონაცემების განახლების შემდეგ, ისინი გავლენას არ მოახდენენ კურსის პირველ ჩვენებაზე.

def serialize_ex(ex_json, diff=არცერთი): შედეგი = '' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':nn' + 'ყიდვა: ' + ex_json['ყიდვა'] თუ განსხვავება: შედეგი += ' ' + serialize_exchange_diff(diff['buy_diff']) + 'n' + 'გაყიდვა: ' + ex_json['sale'] + ' ' + serialize_exchange_diff(diff['sale_diff']) + 'n' other: შედეგი += 'nSell: ' + ex_json['sale'] + 'n' დაბრუნების შედეგი def serialize_exchange_diff(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: result = '(' + 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">)' დაბრუნების შედეგი

წარმოიდგინეთ, რომ ვიზიტორს სურდა დოლარის კურსის გაგება. აი, რა მოხდება, თუ შეტყობინებაში აირჩევთ აშშ დოლარს:

Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

ნაბიჯი 8: განახლების ღილაკის დამმუშავებლის დანერგვა

მოდით დავწეროთ მოქმედებების მართვის კოდი Update ღილაკით და დავამატოთ iq_callback_method ნაწილი. როდესაც პროგრამის ელემენტები იწყება get პარამეტრით, თქვენ უნდა დაწეროთ 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: try: if json.loads(data)[ 't'] == 'u': edit_message_callback(შეკითხვა) გარდა ValueError: pass

თუ t უდრის u, თქვენ უნდა დაწეროთ პროგრამა edit_message_callback მეთოდისთვის. მოდით გავაანალიზოთ ეს პროცესი ეტაპობრივად:

  1. ვალუტის ბაზრის მდგომარეობის შესახებ უახლესი ინფორმაციის ჩამოტვირთვა (exchange_now = pb.get_exchange(data['c']).
  1. ახალი შეტყობინების დაწერა სერიალიზატორის მეშვეობით diff.
  2. ხელმოწერის დამატება (get_edited_signature).

თუ საწყისი შეტყობინება არ იცვლება, დარეკეთ edit_message_text მეთოდს.

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 (owta))_ + 'n' + get_edited_signature() if query.message: bot.edit_message_text( text, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode_ifmessage.idline') : bot.edit_message_text(ტექსტი, inline_message_id=query.inline_message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML')

მოდით დავწეროთ get_ex_from_iq_data მეთოდი JSON-ის გასაანალიზებლად:

def get_ex_from_iq_data(exc_json): დაბრუნება { 'ყიდვა': exc_json['b'], 'გაყიდვა': exc_json['s'] }

დაგჭირდებათ კიდევ რამდენიმე მეთოდი: მაგალითად, get_exchange_diff, რომელიც კითხულობს ძველ და ახალ ინფორმაციას ვალუტების ღირებულების შესახებ და აჩვენებს განსხვავებას.

def get_exchange_diff(ბოლო, ახლა): return { 'sale_diff': float("%.6f" % (float(now['sale']) - float(last['sale']))), 'buy_diff': float ("%.6f" % (float(ახლა['ყიდვა']) - float(ბოლო['ყიდვა']))) }

ბოლო, get_edited_signature, აჩვენებს კურსის ბოლოს განახლების დროს.

def get_edited_signature(): დაბრუნება 'განახლებულია ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME + ')'

შედეგად, განახლებული შეტყობინება ბოტისგან სტაბილური გაცვლითი კურსით ასე გამოიყურება:

Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

როდესაც კურსი იცვლება, მნიშვნელობებს შორის განსხვავებები ნაჩვენებია შეტყობინებაში დადგენილი პარამეტრების გამო.

Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

ნაბიჯი 9: ჩაშენებული რეჟიმის დანერგვა

ჩაშენებული რეჟიმი საჭიროა პროგრამიდან ინფორმაციის სწრაფად გაგზავნისთვის ნებისმიერ ჩატში – ახლა თქვენ არ გჭირდებათ ბოტის დამატება საუბარში, როგორც მონაწილე. როდესაც Telegram-ის მომხმარებელი შეაქვს ბოტის სახელს @ ნიშნით მის წინ, კონვერტაციის ვარიანტები უნდა გამოჩნდეს შეყვანის ხაზის ზემოთ. თუ დააწკაპუნებთ ერთ-ერთ ელემენტზე, ბოტი საუბარში გამოგიგზავნით შეტყობინებას შედეგებით და მონაცემების განახლებისა და გაგზავნის ღილაკებით. გამგზავნის სახელი შეიცავს წარწერას „via ".

InlineQuery გადაეცემა query_text-ს ბიბლიოთეკის მეშვეობით. კოდი იყენებს answer_line ფუნქციას ძიების შედეგების ამოსაღებად, როგორც მონაცემთა მასივი და inline_query_id ელემენტი. ჩვენ ვიყენებთ get_exchanges-ს ისე, რომ ბოტი მოთხოვნის შემთხვევაში იპოვის რამდენიმე ვალუტას.

@bot.inline_handler(func=lambda შეკითხვა: True) def query_text(inline_query): bot.answer_inline_query(inline_query.id, get_iq_articles(pb.get_exchanges(inline_query.query)) )

ჩვენ გადავცემთ მონაცემების მასივს get_iq_articles-ს, რათა ამ მეთოდით დავაბრუნოთ ობიექტები InlineQueryResultArticle-დან.

def get_iq_articles(exchanges): result = [] exc-ისთვის ბირჟებზე: result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextnts ( serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 ) ) დაბრუნების შედეგი

ახლა თუ დაწერ @ და ხაზის სივრცეში, ეკრანზე გამოჩნდება ძიების შედეგები - სამ ხელმისაწვდომ ვალუტაში გადაყვანის ვარიანტები.

Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

მომხმარებლებს შეუძლიათ შედეგების გაფილტვრა სასურველი ვალუტის შეყვანით.

სიიდან სასურველ ვალუტაზე დაწკაპუნების შემდეგ ჩატი იღებს იმავე შეტყობინებას, რასაც ბოტის მომხმარებლები იღებენ. ასევე შეგიძლიათ გამოიყენოთ განახლების ღილაკი. ქვემოთ მოყვანილი სურათი აჩვენებს განახლებულ შეტყობინებას, რომელიც გაგზავნილია ბოტის საშუალებით:

Telegram ბოტი პითონში. სრული სახელმძღვანელო ბოტის დასაწერად გაცვლითი კურსით ნულიდან

დასკვნა

ახლა თქვენ იცით, როგორ შექმნათ ბოტი Telegram-ისთვის. თქვენ შეგიძლიათ დაამატოთ სასარგებლო ხელსაწყოები თქვენს პროგრამაში: ღილაკები მესინჯერის სხვა მომხმარებლებისთვის შედეგის განახლებისა და გაგზავნისთვის და ჩაშენებული რეჟიმი, რომელიც საშუალებას გაძლევთ გამოიყენოთ ბოტის ფუნქციები მასთან ჩატის გარეთ. ამ ინსტრუქციის საფუძველზე შეგიძლიათ შექმნათ ნებისმიერი მარტივი ბოტი სხვა ფუნქციებით - არა მხოლოდ ის, რომელიც აჩვენებს გაცვლის კურსებს. ნუ შეგეშინდებათ ბიბლიოთეკებით, API-ებით და კოდით ექსპერიმენტებით, რათა შექმნათ ავტომატური ასისტენტი, რომელიც ესაუბრება მომხმარებელს Telegram-ზე და გააძლიერებს დაინტერესებულ პირთა კავშირს კომპანიასთან.

1 კომენტარები

  1. ფანტასტიკური პუბლიკაცია

დატოვე პასუხი