Telegram bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

Bots នៅក្នុង Telegram គឺជាកម្មវិធីដែលជួយបង្កើតទំនាក់ទំនងជាមួយទស្សនិកជន ឬសម្រួលសកម្មភាពដែលពីមុនត្រូវធ្វើដោយដៃ។ កម្មវិធីទាំងនេះត្រូវបានសរសេរជាពិសេសសម្រាប់វេទិកាផ្ញើសារ។ Bots ដំណើរការតាមរបៀបនេះ៖ អ្នកប្រើប្រាស់ផ្ញើពាក្យបញ្ជាតាមរយៈបន្ទាត់បញ្ចូល ហើយប្រព័ន្ធឆ្លើយតបជាមួយនឹងអត្ថបទ ឬសារអន្តរកម្ម។ ពេលខ្លះកម្មវិធីថែមទាំងធ្វើត្រាប់តាមសកម្មភាពរបស់មនុស្សពិត - bot បែបនេះជំរុញឱ្យមានទំនុកចិត្តកាន់តែច្រើនក្នុងចំណោមអតិថិជន។

មានប្រព័ន្ធជាច្រើនប្រភេទសម្រាប់ជំនួយដោយស្វ័យប្រវត្តិដល់អ្នកប្រើប្រាស់។ រូបយន្តខ្លះគ្រាន់តែទាក់ទងជាមួយអតិថិជន ខ្លះទៀតផ្តល់ព័ត៌មានជាទៀងទាត់។ វាមិនអាចទៅរួចទេក្នុងការបែងចែកកម្មវិធីឱ្យច្បាស់លាស់ទៅជាប្រភេទ - អ្នកអភិវឌ្ឍន៍ជារឿយៗរួមបញ្ចូលគ្នានូវមុខងារជាច្រើននៅក្នុង bot មួយ។

អ្នកអាចសរសេរ bot សាមញ្ញសម្រាប់ Telegram ជាមួយនឹងធាតុអន្តរកម្មក្នុងទម្រង់ជាប៊ូតុងនៅលើអេក្រង់ក្នុង 9 ជំហាន។ សូមក្រឡេកមើលពួកវានីមួយៗឱ្យបានលម្អិត ហើយឆ្លើយសំណួរមួយចំនួន៖

  • របៀបចាប់ផ្តើម bot;
  • របៀបចុះឈ្មោះក្តារចុចដែលភ្ជាប់មកជាមួយពីប៊ូតុងមួយ ឬច្រើន;
  • របៀបដាក់កម្មវិធីប៊ូតុងសម្រាប់មុខងារដែលចង់បាន;
  • តើ​អ្វី​ទៅ​ជា​របៀប​ក្នុង​បន្ទាត់ និង​របៀប​កំណត់​វា​សម្រាប់​ប៊ូត​ដែល​មាន​ស្រាប់។

ជំហានទី 0: ប្រវត្តិទ្រឹស្តីអំពី Telegram bots API

ឧបករណ៍សំខាន់ដែលប្រើដើម្បីបង្កើត Telegram bots គឺ HTML Application Programming Interface ឬ HTML API។ ធាតុនេះទទួលយកសំណើរបស់អ្នកទស្សនា និងផ្ញើការឆ្លើយតបជាទម្រង់ព័ត៌មាន។ ការរចនាដែលត្រៀមរួចជាស្រេចជួយសម្រួលការងារនៅលើកម្មវិធី។ ដើម្បីសរសេរ bot សម្រាប់ Telegram អ្នកត្រូវប្រើអាសយដ្ឋានអ៊ីមែលនេះ៖ https://api.telegram.org/bot/METHOD_NAME

សម្រាប់ដំណើរការត្រឹមត្រូវនៃ bot និមិត្តសញ្ញាក៏ត្រូវការផងដែរ - ការរួមបញ្ចូលគ្នានៃតួអក្សរដែលការពារកម្មវិធី និងបើកការចូលប្រើវាទៅកាន់អ្នកអភិវឌ្ឍន៍ដែលជឿទុកចិត្ត។ និមិត្តសញ្ញានីមួយៗមានតែមួយគត់។ ខ្សែអក្សរត្រូវបានកំណត់ទៅ bot នៅពេលបង្កើត។ វិធីសាស្រ្តអាចខុសគ្នា៖ getUpdates getChat និងផ្សេងទៀត។ ជម្រើសនៃវិធីសាស្រ្តគឺអាស្រ័យលើអ្វីដែល algorithm ដែលអ្នកអភិវឌ្ឍន៍រំពឹងពី bot ។ ឧទាហរណ៍និមិត្តសញ្ញា៖

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Bots ប្រើសំណើ GET និង POST ។ ជារឿយៗប៉ារ៉ាម៉ែត្រវិធីសាស្រ្តត្រូវតែបំពេញបន្ថែម - ឧទាហរណ៍ នៅពេលដែលវិធីសាស្ត្រ sendMessage ត្រូវបានគេសន្មត់ថាផ្ញើលេខសម្គាល់ការជជែក និងអត្ថបទមួយចំនួន។ ប៉ារ៉ាម៉ែត្រសម្រាប់ការកែលម្អវិធីសាស្រ្តអាចត្រូវបានបញ្ជូនជាខ្សែអក្សរសំណួរ URL ដោយប្រើកម្មវិធី/x-www-form-urlencoded ឬតាមរយៈកម្មវិធី-json ។ វិធីសាស្រ្តទាំងនេះមិនសមរម្យសម្រាប់ការទាញយកឯកសារ។ ការអ៊ិនកូដ UTF-8 ក៏ត្រូវបានទាមទារផងដែរ។ តាមរយៈការផ្ញើសំណើទៅកាន់ API អ្នកអាចទទួលបានលទ្ធផលជាទម្រង់ JSON ។ សូមក្រឡេកមើលការឆ្លើយតបរបស់កម្មវិធីចំពោះការទាញយកព័ត៌មានតាមរយៈវិធីសាស្ត្រ getME៖

ទទួលបាន https://api.telegram.org/bot/getMe{ ok: true, result: { id: 231757398, first_name: "Exchange Rate Bot", username: "exchangetestbot" } }

លទ្ធផលនឹងត្រូវបានទទួលប្រសិនបើ ok ស្មើ ជាការពិត. បើមិនដូច្នោះទេប្រព័ន្ធនឹងបង្ហាញកំហុស។

មានវិធីពីរយ៉ាងក្នុងការទទួលបានសារផ្ទាល់ខ្លួននៅក្នុងបូត។ វិធីសាស្រ្តទាំងពីរនេះមានប្រសិទ្ធភាព ប៉ុន្តែសមរម្យនៅក្នុងករណីផ្សេងគ្នា។ ដើម្បីទទួលបានសារ អ្នកអាចសរសេរសំណើដោយដៃដោយប្រើវិធីសាស្ត្រ getUpdates – កម្មវិធីនឹងបង្ហាញអារេទិន្នន័យអាប់ដេតនៅលើអេក្រង់។ សំណើត្រូវតែត្រូវបានផ្ញើជាទៀងទាត់ បន្ទាប់ពីការវិភាគអារេនីមួយៗ ការផ្ញើត្រូវបានធ្វើម្តងទៀត។ អុហ្វសិតគឺជាប៉ារ៉ាម៉ែត្រដែលកំណត់ចំនួននៃកំណត់ត្រាដែលបានរំលង មុនពេលផ្ទុកលទ្ធផលថ្មី ដើម្បីជៀសវាងការលេចឡើងម្តងទៀតនៃវត្ថុដែលបានធីក។ អត្ថប្រយោជន៍នៃវិធីសាស្ត្រ getUpdates នឹងចូលមកលេងប្រសិនបើ៖

  • មិនមានវិធីដើម្បីកំណត់ HTTPS ទេ។
  • ភាសាស្គ្រីបស្មុគ្រស្មាញត្រូវបានប្រើ;
  • ម៉ាស៊ីនមេ bot ផ្លាស់ប្តូរពីពេលមួយទៅពេលមួយ;
  • bot ត្រូវបានផ្ទុកជាមួយអ្នកប្រើប្រាស់។

វិធីសាស្រ្តទីពីរដែលអាចត្រូវបានសរសេរដើម្បីទទួលសាររបស់អ្នកប្រើគឺ setWebhook ។ វា​ត្រូវ​បាន​ប្រើ​ម្តង​ដោយ​មិន​ចាំ​បាច់​ត្រូវ​បន្ត​ផ្ញើ​សំណើ​ថ្មី​។ webhook ផ្ញើការអាប់ដេតទិន្នន័យទៅកាន់ URL ដែលបានបញ្ជាក់។ វិធីសាស្រ្តនេះទាមទារវិញ្ញាបនបត្រ SSL ។ Webhook នឹងមានប្រយោជន៍ក្នុងករណីទាំងនេះ៖

  • ភាសាសរសេរកម្មវិធីគេហទំព័រត្រូវបានប្រើ;
  • bot មិនត្រូវបានផ្ទុកលើសទម្ងន់, មិនមានអ្នកប្រើប្រាស់ច្រើនពេក;
  • ម៉ាស៊ីនមេមិនផ្លាស់ប្តូរទេ កម្មវិធីនៅតែមាននៅលើម៉ាស៊ីនមេដដែលក្នុងរយៈពេលយូរ។

នៅក្នុងការណែនាំបន្ថែម យើងនឹងប្រើ getUpdates។

សេវាកម្ម @BotFather Telegram ត្រូវបានរចនាឡើងដើម្បីបង្កើត bots ជជែក។ ការ​កំណត់​មូលដ្ឋាន​ក៏​ត្រូវ​បាន​កំណត់​តាម​រយៈ​ប្រព័ន្ធ​នេះ – BotFather នឹង​ជួយ​អ្នក​ធ្វើ​ការ​ពិពណ៌នា ដាក់​រូបថត​កម្រង​ព័ត៌មាន បន្ថែម​ឧបករណ៍​ជំនួយ។ បណ្ណាល័យ - សំណុំសំណើ HTML សម្រាប់ Telegram bots - មាននៅលើអ៊ីនធឺណិត មានច្រើនណាស់។ នៅពេលបង្កើតកម្មវិធីឧទាហរណ៍ 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 ): សម្រាប់ exc ក្នុង load_exchange(): ប្រសិនបើ 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: បង្កើត Telegram Bot ជាមួយ @BotFather

អ្នកអាចបង្កើតកម្មវិធីសម្រាប់ទទួលសារ និងឆ្លើយតបទៅពួកគេដោយប្រើសេវាកម្ម @BotFather ។ ចូលទៅកាន់ទំព័រ Telegram របស់គាត់ ហើយបញ្ចូលពាក្យបញ្ជា /newbot ។ ការណែនាំនឹងបង្ហាញនៅក្នុងការជជែក យោងទៅតាមដែលអ្នកត្រូវសរសេរឈ្មោះរបស់ bot ជាមុន ហើយបន្ទាប់មកអាសយដ្ឋានរបស់វា។ នៅពេលដែលគណនី bot ត្រូវបានបង្កើត សារស្វាគមន៍ដែលមានសញ្ញាសម្ងាត់នឹងបង្ហាញនៅលើអេក្រង់។ សម្រាប់ការកំណត់រចនាសម្ព័ន្ធបន្ថែម សូមប្រើពាក្យបញ្ជាទាំងនេះ៖

  • /setdescription - ការពិពណ៌នា;
  • /setabouttext - ព័ត៌មានអំពី bot ថ្មី;
  • /setuserpic - រូបថតប្រវត្តិរូប;
  • / setinline - របៀបក្នុងជួរ;
  • / setcommands - ការពិពណ៌នាអំពីពាក្យបញ្ជា។

នៅជំហានកំណត់រចនាសម្ព័ន្ធចុងក្រោយ យើងពណ៌នា / ជំនួយ និង / ផ្លាស់ប្តូរ។ នៅពេលដែលជំហានទាំងអស់ត្រូវបានបញ្ចប់ វាដល់ពេលដែលត្រូវបន្តទៅការសរសេរកូដ។

ជំហានទី 3: ការដំឡើង និងបើកដំណើរការ Bot

តោះបង្កើតឯកសារ config.py ។ នៅក្នុងវា អ្នកត្រូវបញ្ជាក់កូដ bot តែមួយគត់ និងតំបន់ពេលវេលាដែលកម្មវិធីនឹងស្វែងរកព័ត៌មាន។

TOKEN = '' # ជំនួសដោយនិមិត្តសញ្ញាបូតរបស់អ្នកTIMEZONE = 'អឺរ៉ុប/គៀវ' TIMEZONE_COMMON_NAME = 'គៀវ'

បន្ទាប់មក យើងបង្កើតឯកសារមួយទៀតជាមួយនឹងការនាំចូល pb.py បណ្ណាល័យ និងសមាសធាតុចាំបាច់ផ្សេងទៀតដែលបានសរសេរពីមុន។ បណ្ណាល័យដែលបាត់ត្រូវបានដំឡើងពីប្រព័ន្ធគ្រប់គ្រងកញ្ចប់ (pip) ។

នាំចូល telebotimport configimport pbimport datetimeimport pytzimport jsonimport traceback P_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = config.TIMEZONE_COMMON_NAME

តោះប្រើខ្លឹមសារនៃ pyTelegramBotApi ដើម្បីបង្កើត bot ។ យើងផ្ញើនិមិត្តសញ្ញាដែលទទួលបានដោយប្រើលេខកូដខាងក្រោម៖

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

ប៉ារ៉ាម៉ែត្រ none_stop ធានាថាសំណើត្រូវបានផ្ញើឥតឈប់ឈរ។ ប្រតិបត្តិការនៃប៉ារ៉ាម៉ែត្រនឹងមិនត្រូវបានប៉ះពាល់ដោយកំហុសវិធីសាស្រ្ត។

ជំហានទី 4: សរសេរ /start Command Handler

ប្រសិនបើជំហានមុនទាំងអស់ត្រូវបានធ្វើបានត្រឹមត្រូវ bot បានចាប់ផ្តើមដំណើរការហើយ។ កម្មវិធីបង្កើតសំណើជាទៀងទាត់ ព្រោះវាប្រើវិធីសាស្ត្រ getUpdates។ មុនពេលបន្ទាត់ជាមួយធាតុ none_stop យើងត្រូវការបំណែកនៃកូដដែលដំណើរការពាក្យបញ្ជា /start:

@bot.message_handler(commands=['start']) def start_command(message): bot.send_message( message.chat.id, 'ជំរាបសួរ! ខ្ញុំអាចបង្ហាញអ្នកនូវអត្រាប្តូរប្រាក់.n' + 'ដើម្បីទទួលបានអត្រាប្តូរប្រាក់ ចុច / exchange.n' + 'ដើម្បីទទួលបានជំនួយ ចុច /help ។')

រីអរ ពាក្យបញ្ជា=['ចាប់ផ្តើម'] ស្មើនឹង True start_command ត្រូវបានហៅ។ ខ្លឹមសារនៃសារទៅទីនោះ។ បន្ទាប់អ្នកត្រូវអនុវត្តមុខងារបញ្ជូន_ សារ ទាក់ទងនឹងសារជាក់លាក់មួយ។

ជំហានទី 5: បង្កើត /help Command Handler

ពាក្យបញ្ជា /help អាចត្រូវបានអនុវត្តជាប៊ូតុងមួយ។ ដោយចុចលើវា អ្នកប្រើប្រាស់នឹងត្រូវបានយកទៅគណនី Telegram របស់អ្នកអភិវឌ្ឍន៍។ ដាក់ឈ្មោះឱ្យប៊ូតុងដូចជា "សួរអ្នកអភិវឌ្ឍន៍" ។ កំណត់ប៉ារ៉ាម៉ែត្រ reply_markup ដែលបញ្ជូនអ្នកប្រើប្រាស់ទៅកាន់តំណសម្រាប់វិធី send_message ។ ចូរយើងសរសេរនៅក្នុងកូដនូវប៉ារ៉ាម៉ែត្រដែលបង្កើតក្តារចុច (InlineKeyboardMarkup) ។ អ្នកគ្រាន់តែត្រូវការប៊ូតុងមួយ (InlineKeyboardButton)។

កូដកម្មវិធីគ្រប់គ្រងពាក្យបញ្ជាចុងក្រោយមើលទៅដូចនេះ៖

@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) bot គាំទ្រក្នុងជួរ។ វាយ @ នៅក្នុងការជជែកណាមួយ និងអក្សរដំបូងនៃរូបិយប័ណ្ណ។', reply_markup=keyboard )

សកម្មភាពកូដនៅក្នុងការជជែកតាម Telegram៖

Telegram bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

ជំហានទី 6: បន្ថែម /exchange Command Handler

ជំហាននេះគឺចាំបាច់ដើម្បីបង្ហាញប៊ូតុងដែលមាននិមិត្តសញ្ញានៃរូបិយប័ណ្ណដែលមាននៅក្នុងការជជែក។ ក្តារចុចលើអេក្រង់ដែលមានជម្រើសនឹងជួយអ្នកជៀសវាងកំហុស។ 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') ) 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 bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

ជំហានទី 7: ការសរសេរឧបករណ៍ដោះស្រាយសម្រាប់ប៊ូតុងក្តារចុចដែលភ្ជាប់មកជាមួយ

កញ្ចប់ pyTelegramBot Api មានមុខងារ @bot.callback_query_handler decorator ។ សមាសភាគនេះត្រូវបានរចនាឡើងដើម្បីបកប្រែការហៅត្រឡប់មកវិញទៅជាមុខងារ – API ពន្លា និងបង្កើតការហៅឡើងវិញ។ វាត្រូវបានសរសេរដូចនេះ៖

@bot.callback_query_handler(func=lambda call: 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_keyboard(ex) ), parse_mode='HTML')

ខណៈពេលដែល chatbot ទទួលបានលទ្ធផលនៃការស្នើសុំពីធនាគារ ការ APIអ្នកទស្សនាឃើញសិលាចារឹក "វាយសារ"។ វាហាក់ដូចជាមនុស្សពិតកំពុងឆ្លើយ។ ដើម្បីបង្ហាញសូចនាករបែបនេះនៅលើអេក្រង់ អ្នកនឹងត្រូវបន្ថែមបន្ទាត់ស្ថានភាពបញ្ចូល។ បន្ទាប់មក យើងនឹងប្រើ get_exchange – ជាមួយនឹងជំនួយរបស់វា កម្មវិធីនឹងទទួលបានការកំណត់រូបិយប័ណ្ណ (រូប្លិង អឺរ៉ូ ឬដុល្លារ)។ send_message ប្រើវិធីសាស្រ្តបន្ថែម៖ serialize_ex បំប្លែងរូបិយប័ណ្ណទៅជាទម្រង់មួយផ្សេងទៀត ហើយ get_update_keyboard ដំឡើង softkeys ដែលធ្វើបច្ចុប្បន្នភាពព័ត៌មាន និងផ្ញើទិន្នន័យទីផ្សាររូបិយប័ណ្ណទៅការជជែកផ្សេងទៀត។

តោះសរសេរកូដសម្រាប់ 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['buy'], 's': ex['sale'], 'c': ex['ccy'] } }).replace(' ','')), telebot.types.InlineKeyboardButton ('ចែករំលែក', switch_inline_query=ex['ccy'])) ត្រឡប់ក្តារចុច

ពេលខ្លះអ្នកត្រូវមើលថាតើអត្រាប្តូរប្រាក់បានផ្លាស់ប្តូរប៉ុន្មានក្នុងរយៈពេលខ្លី។ ចូរយើងសរសេរវិធីសាស្រ្តពីរសម្រាប់ប៊ូតុងអាប់ដេត ដូច្នេះអ្នកប្រើប្រាស់អាចមើលឃើញវគ្គសិក្សានៅក្នុងការប្រៀបធៀប។

ភាពខុសគ្នារវាងអត្រាប្តូរប្រាក់ត្រូវបានបញ្ជូនទៅ serializer តាមរយៈ diff parameter។

វិធីសាស្រ្តដែលបានចេញវេជ្ជបញ្ជាដំណើរការតែបន្ទាប់ពីទិន្នន័យត្រូវបានធ្វើបច្ចុប្បន្នភាពពួកគេនឹងមិនប៉ះពាល់ដល់ការបង្ហាញដំបូងនៃវគ្គសិក្សាទេ។

def serialize_ex(ex_json, diff=None): លទ្ធផល = '' + 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' else: លទ្ធផល += '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: លទ្ធផល = '(' + str( diff)[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 ក្នុងសារ៖

Telegram bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

ជំហានទី 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)[ 't'] == 'u': edit_message_callback(query) លើកលែងតែ ValueError: pass

ប្រសិនបើ t ស្មើនឹង u អ្នកនឹងត្រូវសរសេរកម្មវិធីសម្រាប់វិធីសាស្ត្រ edit_message_callback ។ ចូរបំបែកដំណើរការនេះជាជំហាន ៗ ៖

  1. កំពុងទាញយកព័ត៌មានថ្មីៗអំពីស្ថានភាពទីផ្សាររូបិយប័ណ្ណ (exchange_now = pb.get_exchange(data['c']) ។
  1. ការសរសេរសារថ្មីតាមរយៈ serializer with 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(data), exchange_now )) + 'n' + get_edited_signature() ប្រសិនបើ query.message: bot.edit_message_text( text, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML_mesquery_idlineif) ៖ bot.edit_message_text( 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'], 'sale': exc_json['s'] }

អ្នកនឹងត្រូវការវិធីសាស្រ្តមួយចំនួនទៀត៖ ឧទាហរណ៍ get_exchange_diff ដែលអានព័ត៌មានចាស់ និងថ្មីអំពីតម្លៃរូបិយប័ណ្ណ និងបង្ហាញភាពខុសគ្នា។

def get_exchange_diff(ចុងក្រោយ ពេលនេះ): ត្រឡប់ { 'sale_diff': float("%.6f" % (float(ឥឡូវ['sale']) - float(ចុងក្រោយ['sale']))), 'buy_diff': float ("%.6f" % (អណ្តែត(ឥឡូវ['ទិញ']) - អណ្តែត(ចុងក្រោយ['ទិញ']))) }

លេខចុងក្រោយ get_edited_signature បង្ហាញពីពេលវេលាដែលវគ្គសិក្សាត្រូវបានធ្វើបច្ចុប្បន្នភាពចុងក្រោយ។

def get_edited_signature(): ត្រឡប់ 'បានធ្វើបច្ចុប្បន្នភាព ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + '(' + TIMEZONE_COMMON_NAME + ')'

ជាលទ្ធផល សារដែលបានធ្វើបច្ចុប្បន្នភាពពី bot ជាមួយនឹងអត្រាប្តូរប្រាក់មានស្ថេរភាពមើលទៅដូចនេះ៖

Telegram bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

នៅពេលដែលវគ្គសិក្សាផ្លាស់ប្តូរភាពខុសគ្នារវាងតម្លៃត្រូវបានបង្ហាញនៅក្នុងសារដោយសារតែប៉ារ៉ាម៉ែត្រដែលបានចេញវេជ្ជបញ្ជា។

Telegram bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

ជំហានទី 9: ការអនុវត្តរបៀបបង្កប់

របៀបដែលភ្ជាប់មកជាមួយគឺត្រូវការជាចាំបាច់ ដើម្បីបញ្ជូនព័ត៌មានពីកម្មវិធីយ៉ាងលឿនទៅការជជែកណាមួយ - ឥឡូវនេះអ្នកមិនចាំបាច់បន្ថែម bot ក្នុងការសន្ទនាក្នុងនាមជាអ្នកចូលរួមនោះទេ។ នៅពេលអ្នកប្រើប្រាស់ Telegram បញ្ចូលឈ្មោះ bot ដែលមានសញ្ញា @ នៅពីមុខវា ជម្រើសបំប្លែងគួរតែបង្ហាញនៅខាងលើបន្ទាត់បញ្ចូល។ ប្រសិនបើអ្នកចុចលើធាតុណាមួយនោះ bot នឹងផ្ញើសារទៅកាន់ការសន្ទនាជាមួយនឹងលទ្ធផល និងប៊ូតុងសម្រាប់ធ្វើបច្ចុប្បន្នភាព និងផ្ញើទិន្នន័យ។ ឈ្មោះរបស់អ្នកផ្ញើនឹងមានចំណងជើងថា “តាមរយៈ "។

InlineQuery ត្រូវបានបញ្ជូនទៅ query_text តាមរយៈបណ្ណាល័យ។ កូដប្រើមុខងារ answer_line ដើម្បីទាញយកលទ្ធផលស្វែងរកជាអារេនៃទិន្នន័យ និងធាតុ inline_query_id ។ យើងប្រើ get_exchanges ដូច្នេះ bot រកឃើញរូបិយប័ណ្ណជាច្រើនតាមការស្នើសុំ។

@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)))

យើងបញ្ជូនទិន្នន័យអារេទៅ get_iq_articles ដើម្បីត្រឡប់វត្ថុពី InlineQueryResultArticle តាមរយៈវិធីសាស្ត្រនេះ។

def get_iq_articles(exchanges): លទ្ធផល = [] សម្រាប់ exc ក្នុងការផ្លាស់ប្តូរ៖ result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextMessageContent ( serialize_ex(exc), parse_mode='HTML'), reply_markup=get_update_keyboard(exc), description='បម្លែង ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 )) លទ្ធផលត្រឡប់មកវិញ

ឥឡូវនេះប្រសិនបើអ្នកសរសេរ @ និងចន្លោះនៅក្នុងបន្ទាត់ លទ្ធផលស្វែងរកនឹងបង្ហាញនៅលើអេក្រង់ – ជម្រើសសម្រាប់បំប្លែងទៅជារូបិយប័ណ្ណដែលមានចំនួនបី។

Telegram bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

អ្នកប្រើប្រាស់អាចត្រងលទ្ធផលដោយបញ្ចូលរូបិយប័ណ្ណដែលចង់បាន។

បន្ទាប់ពីចុចលើរូបិយបណ្ណដែលចង់បានពីបញ្ជី ការជជែកទទួលបានសារដូចគ្នាដែលអ្នកប្រើប្រាស់ bot ទទួលបាន។ អ្នកក៏អាចប្រើប៊ូតុងធ្វើបច្ចុប្បន្នភាពផងដែរ។ រូបភាពខាងក្រោមបង្ហាញពីសារដែលបានធ្វើបច្ចុប្បន្នភាពដែលបានផ្ញើតាមរយៈ bot៖

Telegram bot នៅក្នុង Python ។ ការណែនាំពេញលេញក្នុងការសរសេរ bot ជាមួយនឹងអត្រាប្តូរប្រាក់ពីដំបូង

សន្និដ្ឋាន

ឥឡូវនេះអ្នកដឹងពីរបៀបបង្កើត bot សម្រាប់ Telegram ។ អ្នកអាចបន្ថែមឧបករណ៍មានប្រយោជន៍ទៅក្នុងកម្មវិធីរបស់អ្នក៖ ប៊ូតុងសម្រាប់អាប់ដេត និងផ្ញើលទ្ធផលទៅកាន់អ្នកប្រើប្រាស់ផ្សេងទៀតនៃកម្មវិធីផ្ញើសារ និងរបៀបភ្ជាប់មកជាមួយដែលអនុញ្ញាតឱ្យអ្នកប្រើមុខងាររបស់ bot នៅខាងក្រៅការជជែកជាមួយវា។ ដោយផ្អែកលើការណែនាំនេះ អ្នកអាចបង្កើត bot សាមញ្ញណាមួយជាមួយនឹងមុខងារផ្សេងទៀត - មិនត្រឹមតែមួយដែលនឹងបង្ហាញអត្រាប្តូរប្រាក់នោះទេ។ កុំខ្លាចក្នុងការពិសោធន៍ជាមួយបណ្ណាល័យ APIs និងកូដដើម្បីបង្កើតជំនួយការស្វ័យប្រវត្តិដែលនឹងជជែកជាមួយអតិថិជននៅលើ Telegram និងពង្រឹងការតភ្ជាប់អ្នកចាប់អារម្មណ៍ជាមួយក្រុមហ៊ុន។

យោបល់ 1

  1. Fantastica publicación

សូមផ្ដល់យោបល់