පයිතන් හි ටෙලිග්‍රාම් බොට්. මුල සිටම විනිමය අනුපාත සහිත බොට් ලිවීම සඳහා සම්පූර්ණ මාර්ගෝපදේශයකි

ටෙලිග්‍රාම් හි බොට්ස් යනු ප්‍රේක්ෂකයින් සමඟ සම්බන්ධතා ඇති කර ගැනීමට හෝ කලින් අතින් සිදු කළ යුතු ක්‍රියාවන් සරල කිරීමට උපකාරී වන වැඩසටහන් වේ. මෙම වැඩසටහන් විශේෂයෙන් මැසෙන්ජර් වේදිකාව සඳහා ලියා ඇත. බොට්ස් මේ ආකාරයෙන් ක්‍රියා කරයි: පරිශීලකයා ආදාන රේඛාව හරහා විධානයක් යවන අතර පද්ධතිය පෙළ හෝ අන්තර්ක්‍රියාකාරී පණිවිඩයක් සමඟ ප්‍රතිචාර දක්වයි. සමහර විට වැඩසටහන සැබෑ පුද්ගලයෙකුගේ ක්රියාවන් පවා අනුකරණය කරයි - එවැනි බොට් පාරිභෝගිකයින් අතර වැඩි විශ්වාසයක් ඇති කරයි.

පරිශීලකයින්ට ස්වයංක්‍රීය සහාය සඳහා පද්ධති වර්ග කිහිපයක් තිබේ. සමහර බොට් ගනුදෙනුකරුවන් සමඟ පමණක් සන්නිවේදනය කරයි, අනෙක් අය නිතිපතා තොරතුරු සපයයි. වැඩසටහන් වර්ග වලට පැහැදිලිව බෙදීම කළ නොහැක - සංවර්ධකයින් බොහෝ විට එක් බොට් එකක කාර්යයන් කිහිපයක් ඒකාබද්ධ කරයි.

ඔබට පියවර 9 කින් තිරයේ බොත්තම් ආකාරයෙන් අන්තර්ක්‍රියාකාරී මූලද්‍රව්‍ය සහිත ටෙලිග්‍රාම් සඳහා සරල බොට් එකක් ලිවිය හැක. අපි ඒ සෑම එකක්ම විස්තරාත්මකව සලකා බලා ප්‍රශ්න කිහිපයකට පිළිතුරු දෙමු:

  • බොට් එකක් ආරම්භ කරන්නේ කෙසේද;
  • බොත්තම් එකකින් හෝ වැඩි ගණනකින් බිල්ට් යතුරුපුවරුවක් ලියාපදිංචි කරන්නේ කෙසේද;
  • අපේක්ෂිත කාර්යයන් සඳහා බොත්තම් වැඩසටහන්ගත කරන්නේ කෙසේද;
  • පේළිගත මාදිලිය යනු කුමක්ද සහ පවතින බොට් එකක් සඳහා එය සකසන්නේ කෙසේද.

පියවර 0: Telegram bots API පිළිබඳ න්‍යායාත්මක පසුබිම

Telegram bots නිර්මාණය කිරීමට භාවිතා කරන ප්‍රධාන මෙවලම වන්නේ HTML යෙදුම් ක්‍රමලේඛන අතුරුමුහුණත හෝ HTML API ය. මෙම අංගය අමුත්තන්ගේ ඉල්ලීම් පිළිගෙන තොරතුරු ආකාරයෙන් ප්‍රතිචාර යවයි. සූදානම් කළ නිර්මාණ වැඩසටහනේ වැඩ සරල කරයි. ටෙලිග්‍රාම් සඳහා බොට් එකක් ලිවීමට, ඔබ මෙම විද්‍යුත් තැපැල් ලිපිනය භාවිතා කළ යුතුය: https://api.telegram.org/bot/METHOD_NAME

බොට් හි නිවැරදි ක්‍රියාකාරිත්වය සඳහා, ටෝකනයක් ද අවශ්‍ය වේ - වැඩසටහන ආරක්ෂා කරන සහ විශ්වාසදායක සංවර්ධකයින්ට එයට ප්‍රවේශය විවෘත කරන අක්ෂර සංයෝජනයකි. සෑම සංකේතයක්ම අද්විතීයයි. නිර්මාණය කිරීමේදී තන්තුව බොට් වෙත පවරනු ලැබේ. ක්රම වෙනස් විය හැක: getUpdates, getChat සහ වෙනත් අය. ක්‍රමය තෝරා ගැනීම සංවර්ධකයින් බොට් වෙතින් බලාපොරොත්තු වන්නේ කුමන ඇල්ගොරිතම මතද යන්න මත රඳා පවතී. සංකේත උදාහරණය:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

බොට්ස් GET සහ POST ඉල්ලීම් භාවිතා කරයි. ක්‍රම පරාමිති බොහෝ විට අතිරේක කළ යුතුය - උදාහරණයක් ලෙස, sendMessage ක්‍රමය මඟින් චැට් හැඳුනුම්පත සහ සමහර පෙළ යැවීමට නියමිත විට. ක්‍රම ශෝධනය සඳහා පරාමිති 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 වින්‍යාස කිරීමට ක්‍රමයක් නොමැත;
  • සංකීර්ණ ස්ක්‍රිප්ටින් භාෂා භාවිතා වේ;
  • bot සේවාදායකය කලින් කලට වෙනස් වේ;
  • bot පරිශීලකයින් සමඟ පටවා ඇත.

පරිශීලක පණිවිඩ ලබා ගැනීම සඳහා ලිවිය හැකි දෙවන ක්රමය setWebhook වේ. එය එක් වරක් භාවිතා වේ, නිරන්තරයෙන් නව ඉල්ලීම් යැවීමට අවශ්ය නොවේ. webhook විසින් නිශ්චිත URL වෙත දත්ත යාවත්කාලීන යවයි. මෙම ක්‍රමයට SSL සහතිකයක් අවශ්‍ය වේ. මෙම අවස්ථා වලදී Webhook ප්රයෝජනවත් වනු ඇත:

  • වෙබ් ක්‍රමලේඛන භාෂා භාවිතා වේ;
  • බොට් අධික ලෙස පටවා නැත, බොහෝ පරිශීලකයින් නොමැත;
  • සේවාදායකය වෙනස් නොවේ, වැඩසටහන දිගු කාලයක් එකම සේවාදායකයේ පවතී.

වැඩිදුර උපදෙස් වලදී, අපි getUpdates භාවිතා කරන්නෙමු.

@BotFather Telegram සේවාව චැට් බොට් නිර්මාණය කිරීමට නිර්මාණය කර ඇත. මෙම පද්ධතිය හරහා මූලික සැකසුම් ද සකසා ඇත - BotFather ඔබට විස්තරයක් කිරීමට, පැතිකඩ ඡායාරූපයක් තැබීමට, ආධාරක මෙවලම් එකතු කිරීමට උපකාරී වනු ඇත. පුස්තකාල - ටෙලිග්‍රාම් බොට් සඳහා HTML ඉල්ලීම් කට්ටල - අන්තර්ජාලයේ තිබේ, ඒවායින් බොහොමයක් තිබේ. උදාහරණ වැඩසටහන නිර්මාණය කිරීමේදී, pyTelegramBotApi භාවිතා කරන ලදී.

පියවර 1: විනිමය අනුපාත ඉල්ලීම් ක්‍රියාත්මක කිරීම

මුලින්ම ඔබ විමසුම් සිදු කරන කේතය ලිවිය යුතුය. අපි PrivatBank API ලිවීමේදී භාවිතා කරනු ඇත, පහත එයට සබැඳියක් ඇත: https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5. ඔබ ඔබේ කේතයේ මෙම ක්‍රම භාවිතා කළ යුතුය:

  • load_exchange - විනිමය අනුපාත සොයා ගැනීම සහ සංකේතාත්මක තොරතුරු පෙන්වයි;
  • get_exchange - නිශ්චිත මුදල් වර්ගයක් පිළිබඳ දත්ත පෙන්වයි;
  • get_exchanges - නියැදියට අනුව මුදල් වර්ග ලැයිස්තුගත කිරීම පෙන්වයි.

එහි ප්‍රතිඵලයක් වශයෙන්, pb.py ගොනුවේ ඇති කේතය මෙලෙස දිස්වේ:

import re import requests import 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 හි exc සඳහා (): ccy_key == exc['ccy']: ආපසු exc ආපසු ලබා දෙන්න False def get_exchanges(ccy_pattern): result = [] 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", buy:"25.90000", sale:"26.25000" }, {ccy:"EUR", base_ccy:"UAH", buy:"29.10000", sale:"29.85000 " }, { ccy:"RUR", base_ccy:"UAH", මිලදී ගැනීම:"0.37800", විකිණීම:"0.41800" }, {ccy:"BTC", base_ccy:"USD", මිලදී ගැනීම:"11220.0384", විකිණීම: "12401.0950"} ]

පියවර 2: @BotFather සමඟින් Telegram Bot එකක් සාදන්න

ඔබට @BotFather සේවාව භාවිතයෙන් පණිවිඩ ලබා ගැනීම සහ ඒවාට ප්‍රතිචාර දැක්වීම සඳහා වැඩසටහනක් නිර්මාණය කළ හැකිය. ඔහුගේ Telegram පිටුවට ගොස් /newbot විධානය ඇතුල් කරන්න. සංවාදයේ උපදෙස් දිස්වනු ඇත, ඒ අනුව ඔබ මුලින්ම බොට්ගේ නම ලියා තැබිය යුතු අතර පසුව එහි ලිපිනය. බොට් ගිණුම සෑදූ විට, ටෝකනයක් සහිත පිළිගැනීමේ පණිවිඩයක් තිරය මත දිස්වනු ඇත. වැඩිදුර වින්‍යාස කිරීම සඳහා, මෙම විධාන භාවිතා කරන්න:

  • / කට්ටල විස්තරය - විස්තරය;
  • / setabouttext - නව බොට් පිළිබඳ තොරතුරු;
  • / setuserpic - පැතිකඩ ඡායාරූපය;
  • / සෙටින්ලයින් - පේළිගත මාදිලිය;
  • / setcommands - විධාන විස්තරය.

අවසාන වින්‍යාස කිරීමේ පියවරේදී, අපි / උදව් සහ / හුවමාරුව විස්තර කරමු. සියලුම පියවරයන් අවසන් වූ පසු, කේතීකරණය වෙත යාමට කාලයයි.

පියවර 3: බොට් සැකසීම සහ දියත් කිරීම

අපි config.py ගොනුවක් සාදා ගනිමු. එහි දී, ඔබට අද්විතීය බොට් කේතය සහ වැඩසටහන තොරතුරු සොයා ගන්නා කාල කලාපය සඳහන් කළ යුතුය.

TOKEN = '' # ඔබේ බොට්ගේ ටෝකනය සමඟ ප්‍රතිස්ථාපනය කරන්නTIMEZONE = 'යුරෝපය/කියෙව්' TIMEZONE_COMMON_NAME = 'කියෙව්'

ඊළඟට, අපි කලින් ලියන ලද pb.py, පුස්තකාල සහ අනෙකුත් අවශ්ය සංරචක ආයාත කිරීම සමඟ තවත් ගොනුවක් සාදන්න. අතුරුදහන් වූ පුස්තකාල පැකේජ කළමනාකරණ පද්ධතියෙන් (pip) ස්ථාපනය කර ඇත.

import telebotimport configimport pbimport datetimeimport pytzimport jsonimport traceback 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: /ආරම්භක 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ё විධාන =['ආරම්භය'] True වලට සමානයි start_command ලෙස හැඳින්වේ. පණිවිඩයේ අන්තර්ගතය එහි යයි. ඊළඟට, ඔබ යැවීමේ කාර්යය ක්රියාත්මක කළ යුතුය_පණිවුඩය විශේෂිත පණිවිඩයක් සම්බන්ධයෙන්.

පියවර 5: / help Command Handler එකක් සාදන්න

/help විධානය බොත්තමක් ලෙස ක්‍රියාත්මක කළ හැක. එය මත ක්ලික් කිරීමෙන්, පරිශීලකයා සංවර්ධකයාගේ ටෙලිග්‍රාම් ගිණුමට ගෙන යනු ඇත. බොත්තමට "සංවර්ධකයාගෙන් අසන්න" වැනි නමක් දෙන්න. send_message ක්‍රමය සඳහා පරිශීලකයා සබැඳියකට හරවා යවන reply_markup පරාමිතිය සකසන්න. යතුරුපුවරුව (InlineKeyboardMarkup) නිර්මාණය කරන පරාමිතිය කේතයේ ලියන්නෙමු. ඔබට අවශ්‍ය වන්නේ එක් බොත්තමක් පමණි (InlineKeyboardButton).

අවසාන විධාන හසුරුවන්න කේතය මේ වගේ ය:

@bot.message_handler(commands=['help']) def help_command(පණිවිඩය): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.add( telebot.types.InlineKeyboardButton( 'සංවර්ධකයාගෙන් අසන්න', url='sáňka сна профиль' ) ) bot.send_message( message.chat.id, '1) පවතින මුදල් ලැයිස්තුවක් ලබා ගැනීමට /exchange.n' + '2) ඔබන්න ඔබ කැමති මුදල් වර්ගය මත ක්ලික් කරන්න.n' + '3) ඔබ මූලාශ්‍රය සහ ඉලක්කගත මුදල් වර්ග පිළිබඳ තොරතුරු අඩංගු පණිවිඩයක් ලැබෙනු ඇත, ' + 'මිලදී ගැනීමේ මිල සහ විකුණුම් අනුපාත.n' + '4) ඉල්ලීම සම්බන්ධයෙන් වත්මන් තොරතුරු ලබා ගැනීමට “යාවත්කාලීන කරන්න” ක්ලික් කරන්න. ' + 'බොට් එක පෙර සහ වත්මන් විනිමය අනුපාත අතර වෙනස ද පෙන්වයි.n' + '5) බොට් පේළියට සහය දක්වයි. @ ටයිප් කරන්න ඕනෑම කතාබහක සහ මුදල් ඒකකයක මුල් අකුරු.', reply_markup=keyboard )

ටෙලිග්‍රාම් කතාබස් තුළ කේත ක්‍රියාව:

පයිතන් හි ටෙලිග්‍රාම් බොට්. මුල සිටම විනිමය අනුපාත සහිත බොට් ලිවීම සඳහා සම්පූර්ණ මාර්ගෝපදේශයකි

පියවර 6: /exchange Command Handler එකතු කිරීම

කතාබස් තුළ පවතින මුදල්වල සංකේත සහිත බොත්තම් සංදර්ශන කිරීමට මෙම පියවර අවශ්‍ය වේ. විකල්ප සහිත තිරයේ යතුරු පුවරුව ඔබට වැරදි මඟහරවා ගැනීමට උපකාරී වනු ඇත. PrivatBank රුබල්, ඩොලරය සහ යුරෝ පිළිබඳ තොරතුරු සපයයි. InlineKeyboardButton විකල්පය මේ ආකාරයට ක්‍රියා කරයි:

  1. පරිශීලකයා අපේක්ෂිත තනතුර සහිත බොත්තම මත ක්ලික් කරයි.
  2. getUpdates හට නැවත ඇමතුමක් ලැබේ (CallbackQuery).
  3. යතුරුපුවරුව එබීමෙන් හැසිරවිය යුතු ආකාරය දැන ගනී - තද කළ බොත්තම පිළිබඳ තොරතුරු සම්ප්රේෂණය වේ.

/ හුවමාරු හසුරුවන්න කේතය:

@bot.message_handler(commands=['exchange']) def exchange_command(පණිවිඩය): 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 )

ටෙලිග්‍රාම් හි කේතයේ ප්‍රතිඵලය:

පයිතන් හි ටෙලිග්‍රාම් බොට්. මුල සිටම විනිමය අනුපාත සහිත බොට් ලිවීම සඳහා සම්පූර්ණ මාර්ගෝපදේශයකි

පියවර 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(පණිවිඩය, 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_updateex ), 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['buy'], 's': ex['sale'], 'c': ex['ccy'] } ).replace(' ', '') ), telebot.types.InlineKeyboardButton ('Share', switch_inline_query=ex['ccy']) ) යතුරු පුවරුව ආපසු

සමහර විට ඔබ කෙටි කාලයක් තුළ විනිමය අනුපාතය කොපමණ වෙනස් වී ඇත්දැයි බැලීමට අවශ්ය වේ. යාවත්කාලීන බොත්තම සඳහා ක්‍රම දෙකක් ලියන්නෙමු, එවිට පරිශීලකයින්ට පාඨමාලා සැසඳීමේදී දැකිය හැකිය.

විනිමය අනුපාත අතර වෙනස diff පරාමිතිය හරහා serializer වෙත යවනු ලැබේ.

නියමිත ක්‍රම ක්‍රියාත්මක වන්නේ දත්ත යාවත්කාලීන කිරීමෙන් පසුව පමණි, ඒවා පාඨමාලාවේ පළමු දර්ශනයට බලපාන්නේ නැත.

def serialize_ex(ex_json, diff=none): result = '' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':nn' + 'මිලදී ගන්න: ' + ex_json['මිලදී ගන්න'] වෙනස නම්: ප්‍රතිඵලය += ' ' + serialize_exchange_diff(diff['buy_diff']) + 'n' + 'Sell: ' + ex_json['sale'] + ' ' + serialize_exchange_diff(diff['sale_diff']) + 'n' else: result += 'nSell: ' + ex_json['sale'] + 'n' return result def serialize_exchange_diff(diff): result = '' වෙනස් නම් > 0: ප්‍රතිඵලය = '(' + str(වෙනස) + ' " 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">)' ප්‍රතිඵලය ආපසු

අමුත්තාට ඩොලර් විනිමය අනුපාතය දැන ගැනීමට අවශ්‍ය වූ බව සිතන්න. ඔබ පණිවිඩයේ 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)[ '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).

මුල් පණිවිඩය වෙනස් නොවේ නම්, 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) _ හුවමාරුව) + '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._HTML'if : bot.edit_message_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): ආපසු {'buy': exc_json['b'], 'sale': exc_json['s']}

ඔබට තවත් ක්‍රම කිහිපයක් අවශ්‍ය වනු ඇත: උදාහරණයක් ලෙස, get_exchange_diff, එය මුදල්වල පිරිවැය පිළිබඳ පැරණි සහ නව තොරතුරු කියවා වෙනස පෙන්වයි.

def get_exchange_diff(පසුගිය, දැන්): ආපසු { 'sale_diff': float("%.6f" % (float(දැන්['විකිණීම'])) - float(last['sale']))), 'buy_diff': float ("%.6f" % (float(දැන්['buy']) - float(last['buy'])))}

අවසාන එක, get_edited_signature, පාඨමාලාව අවසන් වරට යාවත්කාලීන කළ කාලය පෙන්වයි.

def get_edited_signature(): return 'යාවත්කාලීන කරන ලදී ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME + ')'

එහි ප්‍රතිඵලයක් වශයෙන්, ස්ථාවර විනිමය අනුපාතිකයක් සහිත බොට් වෙතින් යාවත්කාලීන කරන ලද පණිවිඩය මෙලෙස දිස්වේ:

පයිතන් හි ටෙලිග්‍රාම් බොට්. මුල සිටම විනිමය අනුපාත සහිත බොට් ලිවීම සඳහා සම්පූර්ණ මාර්ගෝපදේශයකි

පාඨමාලාව වෙනස් වන විට, නියමිත පරාමිතීන් හේතුවෙන් අගයන් අතර වෙනස්කම් පණිවිඩයේ පෙන්වනු ලැබේ.

පයිතන් හි ටෙලිග්‍රාම් බොට්. මුල සිටම විනිමය අනුපාත සහිත බොට් ලිවීම සඳහා සම්පූර්ණ මාර්ගෝපදේශයකි

පියවර 9: Embedded Mode ක්‍රියාත්මක කිරීම

ඕනෑම කතාබහකට වැඩසටහනෙන් තොරතුරු ඉක්මනින් යැවීමට බිල්ට් මාදිලිය අවශ්‍ය වේ - දැන් ඔබට සහභාගිවන්නෙකු ලෙස සංවාදයට බොට් එකක් එක් කිරීමට අවශ්‍ය නොවේ. ටෙලිග්‍රාම් පරිශීලකයෙකු ඉදිරියෙන් @ ලකුණක් සහිත බොට් නාමයක් ඇතුළු කළ විට, පරිවර්තන විකල්ප ආදාන රේඛාවට ඉහළින් දිස්විය යුතුය. ඔබ එක් අයිතමයක් මත ක්ලික් කළහොත්, දත්ත යාවත්කාලීන කිරීම සහ යැවීම සඳහා ප්‍රතිඵල සහ බොත්තම් සමඟ බොට් සංවාදයට පණිවිඩයක් යවනු ඇත. යවන්නාගේ නමෙහි “හරහා ".

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 (හුවමාරු): result (serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 ) ) ප්රතිඵලය ආපසු

දැන්, ඔබ @ ලියන්නේ නම් සහ පේළියේ ඉඩක්, සෙවුම් ප්රතිඵල තිරය මත දිස්වනු ඇත - පවතින මුදල් වර්ග තුනක් බවට පරිවර්තනය කිරීම සඳහා විකල්ප.

පයිතන් හි ටෙලිග්‍රාම් බොට්. මුල සිටම විනිමය අනුපාත සහිත බොට් ලිවීම සඳහා සම්පූර්ණ මාර්ගෝපදේශයකි

පරිශීලකයින්ට අපේක්ෂිත මුදල් ඇතුළත් කිරීමෙන් ප්‍රතිඵල පෙරීමට හැකිය.

ලැයිස්තුවෙන් අපේක්ෂිත මුදල් මත ක්ලික් කිරීමෙන් පසු, bot පරිශීලකයින්ට ලැබෙන එකම පණිවිඩය චැට් වෙත ලැබේ. ඔබට යාවත්කාලීන බොත්තම ද භාවිතා කළ හැකිය. පහත රූපයේ දැක්වෙන්නේ බොට් හරහා යවන ලද යාවත්කාලීන කළ පණිවිඩයයි:

පයිතන් හි ටෙලිග්‍රාම් බොට්. මුල සිටම විනිමය අනුපාත සහිත බොට් ලිවීම සඳහා සම්පූර්ණ මාර්ගෝපදේශයකි

නිගමනය

ටෙලිග්‍රාම් සඳහා බොට් එකක් සාදා ගන්නේ කෙසේදැයි දැන් ඔබ දන්නවා. ඔබට ඔබේ වැඩසටහනට ප්‍රයෝජනවත් මෙවලම් එකතු කළ හැකිය: පණිවිඩකරුගේ අනෙකුත් පරිශීලකයින්ට ප්‍රති result ලය යාවත්කාලීන කිරීම සහ යැවීම සඳහා බොත්තම් සහ එය සමඟ සංවාදයෙන් පිටත බොට් හි කාර්යයන් භාවිතා කිරීමට ඔබට ඉඩ සලසන බිල්ට් මාදිලියක්. මෙම උපදෙස් මත පදනම්ව, ඔබට වෙනත් කාර්යයන් සහිත ඕනෑම සරල බොට් එකක් නිර්මාණය කළ හැකිය - විනිමය අනුපාත පෙන්වන එක පමණක් නොවේ. Telegram හි ගනුදෙනුකරුවන් සමඟ කතාබස් කරන සහ සමාගම සමඟ උනන්දුවක් දක්වන පුද්ගලයින්ගේ සම්බන්ධතාවය ශක්තිමත් කරන ස්වයංක්‍රීය සහායකයෙකු නිර්මාණය කිරීම සඳහා පුස්තකාල, API සහ කේතය සමඟ අත්හදා බැලීමට බිය නොවන්න.

1 පරිකථනය

ඔබමයි