Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

Telegram ရှိ ဘော့တ်များသည် ပရိသတ်နှင့် အဆက်အသွယ် ထူထောင်ရန် သို့မဟုတ် ယခင်က ကိုယ်တိုင်လုပ်ဆောင်ရမည့် လုပ်ဆောင်ချက်များကို ရိုးရှင်းစေရန် ကူညီပေးသည့် ပရိုဂရမ်များဖြစ်သည်။ ဤပရိုဂရမ်များကို messenger ပလပ်ဖောင်းအတွက် အထူးရေးသားထားပါသည်။ Bots သည် ဤနည်းဖြင့် အလုပ်လုပ်သည်- အသုံးပြုသူသည် input line မှတဆင့် command တစ်ခုကို ပေးပို့ပြီး system သည် စာသား သို့မဟုတ် အပြန်အလှန်တုံ့ပြန်သော မက်ဆေ့ချ်ဖြင့် တုံ့ပြန်ပါသည်။ တစ်ခါတစ်ရံတွင် ပရိုဂရမ်သည် တကယ့်လူတစ်ဦး၏ လုပ်ရပ်များကိုပင် အတုယူတတ်သည် - ထိုသို့သော ဘော့တ်သည် သုံးစွဲသူများအကြား ပိုမိုယုံကြည်မှုကို လှုံ့ဆော်ပေးသည်။

သုံးစွဲသူများအား အလိုအလျောက် အကူအညီပေးရန်အတွက် စနစ်အမျိုးအစားများစွာ ရှိပါသည်။ အချို့သော ဘော့တ်များသည် ဖောက်သည်များနှင့်သာ ဆက်သွယ်ကြပြီး အချို့က သတင်းအချက်အလက်များကို ပုံမှန်ပေးကြသည်။ ပရိုဂရမ်များကို အမျိုးအစားများအဖြစ် ရှင်းရှင်းလင်းလင်း ပိုင်းခြားရန် မဖြစ်နိုင်ပါ - developer များသည် bot တစ်ခုတွင် လုပ်ဆောင်ချက်များစွာကို ပေါင်းစပ်လေ့ရှိသည်။

Telegram အတွက် ရိုးရှင်းသော ဘော့တ်တစ်ခုကို အဆင့် 9 ဆင့်ဖြင့် မျက်နှာပြင်ပေါ်ရှိ ခလုတ်များပုံစံဖြင့် အပြန်အလှန်အကျိုးသက်ရောက်သော အစိတ်အပိုင်းများ ရေးနိုင်သည်။ တစ်ခုချင်းစီကို အသေးစိတ်ကြည့်ရှုပြီး မေးခွန်းအချို့ကို ဖြေကြည့်ကြပါစို့။

  • bot တစ်ခုကို ဘယ်လိုစရမလဲ။
  • တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော ခလုတ်များမှ built-in ကီးဘုတ်ကို မှတ်ပုံတင်နည်း။
  • လိုချင်သောလုပ်ဆောင်ချက်များအတွက် ခလုတ်များကို ပရိုဂရမ်ပြုလုပ်နည်း၊
  • inline mode ဆိုတာဘာလဲ၊ ရှိပြီးသား bot တစ်ခုအတွက် ဘယ်လိုသတ်မှတ်မလဲ။

အဆင့် 0- Telegram bots API အကြောင်း သီအိုရီနောက်ခံ

Telegram bot များကိုဖန်တီးရန် အဓိကအသုံးပြုသည့်ကိရိယာမှာ HTML Application Programming Interface သို့မဟုတ် HTML API ဖြစ်သည်။ ဤအရာသည် ဧည့်သည်တောင်းဆိုမှုများကို လက်ခံပြီး အချက်အလက်ပုံစံဖြင့် တုံ့ပြန်မှုများကို ပေးပို့သည်။ အဆင်သင့်လုပ်ထားသော ဒီဇိုင်းများသည် ပရိုဂရမ်ပေါ်ရှိ အလုပ်များကို ရိုးရှင်းစေသည်။ Telegram အတွက် bot တစ်ခုရေးရန်၊ သင်သည် ဤအီးမေးလ်လိပ်စာကို အသုံးပြုရန် လိုအပ်သည်- https://api.telegram.org/bot/METHOD_NAME

bot ၏ မှန်ကန်သောလုပ်ဆောင်ချက်အတွက်၊ ပရိုဂရမ်ကိုကာကွယ်ပေးပြီး ယုံကြည်စိတ်ချရသော developer များထံ ဖွင့်ပေးသည့် ဇာတ်ကောင်များပေါင်းစပ်ထားသော တိုကင်တစ်ခုလည်း လိုအပ်ပါသည်။ တိုကင်တစ်ခုစီသည် ထူးခြားသည်။ ဖန်တီးသည့်အခါတွင် string ကို bot သို့ သတ်မှတ်ပေးသည်။ နည်းလမ်းများသည် ကွဲပြားနိုင်သည်- getUpdates၊ getChat နှင့် အခြားအရာများ။ နည်းလမ်းရွေးချယ်မှုသည် bot မှ developer များမျှော်လင့်ထားသည့် algorithm ပေါ်တွင်မူတည်သည်။ တိုကင်ဥပမာ-

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

ဘော့တ်များသည် GET နှင့် POST တောင်းဆိုမှုများကို အသုံးပြုသည်။ နည်းလမ်း ကန့်သတ်ချက်များကို မကြာခဏ ဖြည့်စွက်ရန် လိုအပ်သည် - ဥပမာ၊ sendMessage နည်းလမ်းသည် ချတ်အိုင်ဒီနှင့် စာသားအချို့ကို ပေးပို့ရန် ယူဆသည့်အခါ။ နည်းလမ်းပြန်လည်ပြင်ဆင်မှုအတွက် ကန့်သတ်ချက်များကို application/x-www-form-urlencoded သို့မဟုတ် application-json မှတဆင့် URL မေးမြန်းမှုစာကြောင်းအဖြစ် ဖြတ်သန်းနိုင်သည်။ ဤနည်းလမ်းများသည် ဖိုင်များကို ဒေါင်းလုဒ်လုပ်ရန်အတွက် မသင့်လျော်ပါ။ UTF-8 ကုဒ်နံပါတ်ကိုလည်း လိုအပ်ပါသည်။ API သို့ တောင်းဆိုချက်တစ်ခု ပေးပို့ခြင်းဖြင့်၊ သင်သည် JSON ဖော်မတ်ဖြင့် ရလဒ်ကို ရရှိနိုင်ပါသည်။ getME နည်းလမ်းမှတစ်ဆင့် အချက်အလက်ရယူခြင်းအတွက် ပရိုဂရမ်၏ တုံ့ပြန်မှုကို ကြည့်ပါ။

https://api.telegram.org/bot ရယူပါ။/getMe{ ok- true၊ ရလဒ်- { id- 231757398၊ first_name- "Exchange Rate Bot", အသုံးပြုသူအမည်- "exchangetestbot" } }

ရလာဒ်ရလာမယ်။ ok တန်းတူ စစ်မှန်တဲ့. မဟုတ်ပါက၊ စနစ်သည် error ကိုညွှန်ပြလိမ့်မည်။

ဘော့တ်များတွင် စိတ်ကြိုက်မက်ဆေ့ဂျ်များ ရယူရန် နည်းလမ်းနှစ်ခုရှိသည်။ နည်းလမ်းနှစ်ခုလုံးသည် ထိရောက်သော်လည်း မတူညီသောကိစ္စများတွင် သင့်လျော်ပါသည်။ မက်ဆေ့ဂျ်များရယူရန်၊ သင်သည် getUpdates နည်းလမ်းဖြင့် တောင်းဆိုချက်ကို ကိုယ်တိုင်ရေးနိုင်သည် - ပရိုဂရမ်သည် အပ်ဒိတ်ဒေတာခင်းကျင်းမှုကို မျက်နှာပြင်ပေါ်တွင် ပြသမည်ဖြစ်သည်။ array တစ်ခုစီကို ခွဲခြမ်းစိတ်ဖြာပြီးနောက်၊ ပေးပို့ခြင်းကို ထပ်ခါတလဲလဲ တောင်းဆိုမှုများ ပုံမှန်ပေးပို့ရပါမည်။ အော့ဖ်ဆက်သည် အမှတ်ခြစ်ထားသော အရာဝတ္ထုများ ပြန်ပေါ်လာခြင်းကို ရှောင်ရှားရန် ရလဒ်အသစ်တစ်ခု မတင်မီ ကျော်သွားသည့် မှတ်တမ်းအရေအတွက်ကို ဆုံးဖြတ်သည့် ကန့်သတ်ချက်တစ်ခုဖြစ်သည်။ အကယ်၍ getUpdates နည်းလမ်း၏ အကျိုးကျေးဇူးများမှာ-

  • HTTPS ကို configure လုပ်ရန် နည်းလမ်းမရှိပါ။
  • ရှုပ်ထွေးသော ဇာတ်ညွှန်းဘာသာစကားများကို အသုံးပြုကြသည်။
  • bot server သည် အခါအားလျော်စွာ ပြောင်းလဲခြင်း၊
  • bot ကိုအသုံးပြုသူများနှင့်အတူတင်ထားသည်။

အသုံးပြုသူ မက်ဆေ့ချ်များ လက်ခံရရှိရန် ရေးသားနိုင်သော ဒုတိယနည်းလမ်းမှာ setWebhook ဖြစ်သည်။ ၎င်းကို တစ်ကြိမ်အသုံးပြုပြီး တောင်းဆိုချက်အသစ်များကို အဆက်မပြတ်ပေးပို့ရန် မလိုအပ်ပါ။ webhook သည် သတ်မှတ်ထားသော URL သို့ ဒေတာအပ်ဒိတ်များကို ပေးပို့သည်။ ဤနည်းလမ်းသည် SSL လက်မှတ်လိုအပ်သည်။ Webhook သည် ဤကိစ္စများတွင် အသုံးဝင်လိမ့်မည်-

  • ဝဘ်ပရိုဂရမ်းမင်းဘာသာစကားများကိုအသုံးပြုကြသည်;
  • bot သည် ဝန်ပိုမချပါ၊ အသုံးပြုသူ များလွန်းသည် ။
  • ဆာဗာသည် ပြောင်းလဲခြင်းမရှိပါ၊ ပရိုဂရမ်သည် တူညီသောဆာဗာတွင် အချိန်အကြာကြီးရှိနေပါသည်။

နောက်ထပ်ညွှန်ကြားချက်များတွင်၊ ကျွန်ုပ်တို့သည် getUpdates ကိုသုံးပါမည်။

@BotFather Telegram ဝန်ဆောင်မှုသည် chat bot များကိုဖန်တီးရန် ဒီဇိုင်းထုတ်ထားသည်။ အခြေခံဆက်တင်များကို ဤစနစ်မှတစ်ဆင့်လည်း သတ်မှတ်ပေးသည် – BotFather သည် သင့်အား ဖော်ပြချက်တစ်ခုပြုလုပ်ရန်၊ ပရိုဖိုင်ဓာတ်ပုံထည့်ရန်၊ ပံ့ပိုးမှုကိရိယာများထည့်ရန် ကူညီပေးပါမည်။ စာကြည့်တိုက်များ - Telegram bots အတွက် HTML တောင်းဆိုမှုအစုံ - အင်တာနက်ပေါ်တွင် ရနိုင်သည်၊ ၎င်းတို့မှာ များစွာရှိပါသည်။ ဥပမာပရိုဂရမ်ကိုဖန်တီးသောအခါ၊ pyTelegramBotApi ကိုအသုံးပြုခဲ့သည်။

အဆင့် 1- လဲလှယ်နှုန်းတောင်းဆိုမှုများကို အကောင်အထည်ဖော်ခြင်း။

ပထမဦးစွာ သင်သည် queries ကိုလုပ်ဆောင်နိုင်သောကုဒ်ကိုရေးရန်လိုအပ်သည်။ 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 ): exc in load_exchange(): if ccy_key == exc['ccy']: return exc return False def get_exchanges(ccy_pattern): ရလဒ် = [] ccy_pattern = re.escape(ccy_pattern) + exc အတွက် '.*' 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- @BotFather ဖြင့် Telegram Bot ဖန်တီးပါ။

@BotFather ဝန်ဆောင်မှုကို အသုံးပြု၍ မက်ဆေ့ချ်များလက်ခံခြင်းနှင့် ၎င်းတို့အား တုံ့ပြန်ခြင်းအတွက် ပရိုဂရမ်တစ်ခုကို သင်ဖန်တီးနိုင်သည်။ သူ၏ Telegram စာမျက်နှာသို့သွား၍ /newbot command ကိုရိုက်ထည့်ပါ။ သင် bot ၏အမည်ကို ဦးစွာချရေးပြီးနောက်၎င်း၏လိပ်စာကိုသင်ရေးရန်လိုအပ်သည်နှင့်အညီ၊ ညွှန်ကြားချက်များသည် chat တွင်ပေါ်လာလိမ့်မည်။ ဘော့တ်အကောင့်ကို ဖန်တီးသောအခါ၊ တိုကင်ပါရှိသော ကြိုဆိုသည့်စာတိုသည် မျက်နှာပြင်ပေါ်တွင် ပေါ်လာလိမ့်မည်။ နောက်ထပ်ဖွဲ့စည်းပုံအတွက်၊ ဤအမိန့်များကို အသုံးပြုပါ-

  • /setdescription – ဖော်ပြချက်;
  • /setabouttext – bot အသစ်အကြောင်း အချက်အလက်၊
  • /setuserpic – ပရိုဖိုင်ဓာတ်ပုံ;
  • /setinline – လိုင်းမုဒ်၊
  • /setcommands - အမိန့်များဖော်ပြချက်။

နောက်ဆုံးဖွဲ့စည်းမှုအဆင့်တွင်၊ ကျွန်ုပ်တို့သည် /help နှင့် /exchange ကိုဖော်ပြပါသည်။ အဆင့်များ အားလုံးပြီးသွားသောအခါ၊ coding သို့ ဆက်သွားရန် အချိန်တန်ပါပြီ။

အဆင့် 3- Bot ကို စတင်သတ်မှတ်ခြင်းနှင့် စတင်ခြင်း

config.py ဖိုင်တစ်ခု ဖန်တီးကြပါစို့။ ၎င်းတွင်၊ သင်သည် သီးခြား bot ကုဒ်နှင့် ပရိုဂရမ် အချက်အလက်ကို ရှာဖွေမည့် အချိန်ဇုန်ကို သတ်မှတ်ရန် လိုအပ်သည်။

တိုကင် = '' # သင့်ဘော့တ်၏ တိုကင်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

bot တစ်ခုဖန်တီးရန် pyTelegramBotApi ၏အကြောင်းအရာကိုသုံးကြပါစို့။ ကျွန်ုပ်တို့သည် အောက်ပါကုဒ်ကို အသုံးပြု၍ လက်ခံရရှိသော တိုကင်ကို ပေးပို့သည်-

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၊ 'မင်္ဂလာပါရှင်။ ငွေလဲနှုန်းများကို ငါပြနိုင်သည်' + 'ငွေလဲနှုန်းများကို ရယူရန် နှိပ်ပါ / exchange.n' + 'အကူအညီရယူရန် /help ကိုနှိပ်ပါ။')

RџSЂRё commands=['start'] True နဲ့ ညီတယ်။ start_command ဟုခေါ်သည်။ မက်ဆေ့ချ်၏ အကြောင်းအရာသည် ထိုနေရာတွင် ရှိနေသည်။ ထို့နောက်၊ သင်သည် send function ကိုအကောင်အထည်ဖော်ရန်လိုအပ်သည်။_သတင်းစကား သီးခြားသတင်းစကားတစ်ခုနှင့်စပ်လျဉ်း။

အဆင့် 5: /help Command Handler ဖန်တီးပါ။

/help အမိန့်ကို ခလုတ်တစ်ခုအဖြစ် အကောင်အထည် ဖော်နိုင်သည်။ ၎င်းကိုနှိပ်ခြင်းဖြင့်၊ အသုံးပြုသူကို developer ၏ Telegram အကောင့်သို့ ခေါ်ဆောင်သွားမည်ဖြစ်သည်။ “ဆော့ဖ်ဝဲရေးသားသူကိုမေးပါ” ကဲ့သို့သော ခလုတ်ကို အမည်ပေးပါ။ send_message နည်းလမ်းအတွက် အသုံးပြုသူကို လင့်ခ်တစ်ခုသို့ ပြန်ညွှန်းပေးသည့် reply_markup ကန့်သတ်ဘောင်ကို သတ်မှတ်ပါ။ ကီးဘုတ် (InlineKeyboardMarkup) ကိုဖန်တီးပေးသည့် ဘောင်အတွင်းကုဒ်ကို ရေးကြပါစို့။ သင်သည် ခလုတ်တစ်ခုသာ လိုအပ်သည် (InlineKeyboardButton)။

နောက်ဆုံး command handler code သည် ဤကဲ့သို့ ဖြစ်သည်-

@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 သည် inline ကို ပံ့ပိုးပေးသည်။ @ ရိုက်ထည့်ပါ မည်သည့် ချတ်တွင်မဆို နှင့် ငွေကြေးတစ်ခု၏ ပထမစာလုံးများ။', reply_markup=keyboard )

Telegram ချတ်တွင် ကုဒ်လုပ်ဆောင်ချက်

Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

အဆင့် 6: /exchange Command Handler ကိုထည့်ခြင်း။

ချတ်တွင် ရနိုင်သောငွေကြေးများ၏ သင်္ကေတများဖြင့် ခလုတ်များကို ပြသရန် ဤအဆင့် လိုအပ်ပါသည်။ ရွေးချယ်စရာများပါရှိသော စခရင်ပေါ်ရှိ ကီးဘုတ်သည် သင့်အမှားများကို ရှောင်ရှားရန် ကူညီပေးပါမည်။ PrivatBank သည် ရူဘယ်၊ ဒေါ်လာနှင့် ယူရိုဆိုင်ရာ အချက်အလက်များကို ပေးသည်။ InlineKeyboardButton ရွေးချယ်မှုသည် ဤကဲ့သို့အလုပ်လုပ်သည်-

  1. အသုံးပြုသူသည် အလိုရှိသော သတ်မှတ်ချက်ဖြင့် ခလုတ်ကို နှိပ်သည်။
  2. getUpdates သည် ပြန်ခေါ်ချက် (CallbackQuery) ကို လက်ခံရရှိသည် ။
  3. ကီးဘုတ်ကို နှိပ်နည်းကို သိလာပါသည် – နှိပ်ထားသော ခလုတ်အကြောင်း အချက်အလက်များကို ပေးပို့သည်။

/exchange handler code:

@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=ကီးဘုတ်)

Telegram ရှိ ကုဒ်၏ရလဒ်-

Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

အဆင့် 7- built-in ကီးဘုတ်ခလုတ်များအတွက် handler ကိုရေးခြင်း။

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။ ခလုတ်နှိပ်ခြင်းနှင့် မျက်နှာပြင်ပေါ်တွင် ရလဒ်ပြသခြင်းကြားရှိ ဝန်ကို ဖယ်ရှားရန် ကူညီပေးသည်။ ငွေကြေးကုဒ်နှင့် Message အချို့ကို ဖြတ်သန်းခြင်းဖြင့် 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_update_keyboard(ex) ) parse_mode='HTML' )

chatbot သည်ဘဏ်ထံမှတောင်းဆိုမှုရလဒ်ကိုလက်ခံရရှိနေစဉ် API ကိုဧည့်သည်သည် “စာရိုက်ခြင်း” ဟူသော စာတန်းကို မြင်သည်။ တကယ့်လူက ဖြေနေပုံရတယ်။ မျက်နှာပြင်ပေါ်တွင် ထိုသို့သောအညွှန်းကိုပြသရန်၊ ထည့်သွင်းမှုအခြေအနေလိုင်းများကို ထည့်သွင်းရန် လိုအပ်မည်ဖြစ်သည်။ ထို့နောက်၊ ကျွန်ုပ်တို့သည် get_exchange ကိုအသုံးပြုပါမည် – ၎င်း၏အကူအညီဖြင့်၊ ပရိုဂရမ်သည် ငွေကြေးသတ်မှတ်ခြင်း (ရူဘယ်၊ ယူရို သို့မဟုတ် ဒေါ်လာ) ကို လက်ခံရရှိမည်ဖြစ်သည်။ send_message သည် နောက်ထပ်နည်းလမ်းများကို အသုံးပြုသည်- serialize_ex သည် ငွေကြေးကို အခြားဖော်မတ်သို့ ပြောင်းပေးသည်၊ နှင့် get_update_keyboard သည် အချက်အလက်များကို အပ်ဒိတ်လုပ်ပြီး အခြားချတ်များသို့ ငွေကြေးစျေးကွက်ဒေတာကို ပေးပို့သည့် softkey များကို သတ်မှတ်ပေးပါသည်။

get_update_keyboard အတွက် ကုဒ်ကိုရေးကြရအောင်။ ခလုတ်နှစ်ခုကို ဖော်ပြရန်လိုအပ်သည် - t နှင့် e သည် အမျိုးအစားနှင့် လဲလှယ်မှုအတွက် ရပ်တည်သည်။ အသုံးပြုသူသည် ချတ်အများအပြားမှ ရွေးချယ်နိုင်စေရန် မျှဝေရန်ခလုတ်အတွက် switch_inline_query item လိုအပ်ပါသည်။ ဧည့်သည်သည် ဒေါ်လာ၊ ရူဘယ် သို့မဟုတ် ယူရို၏ လက်ရှိငွေလဲနှုန်းကို ပေးပို့ရမည့်သူကို ရွေးချယ်နိုင်မည်ဖြစ်သည်။

def get_update_keyboard(ex): ကီးဘုတ် = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton( 'အပ်ဒိတ်'၊ 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'])) ကီးဘုတ်ကို ပြန်ပေးပါ။

တစ်ခါတစ်ရံတွင် ငွေလဲနှုန်းသည် အချိန်တိုအတွင်း မည်မျှပြောင်းလဲသွားသည်ကို ကြည့်ရန် လိုအပ်သည်။ အသုံးပြုသူများသည် သင်တန်းများကို နှိုင်းယှဉ်ကြည့်နိုင်စေရန် အပ်ဒိတ်ခလုတ်အတွက် နည်းလမ်းနှစ်ခုကို ရေးကြပါစို့။

ငွေလဲနှုန်းများကြားခြားနားချက်ကို diff ကန့်သတ်ဘောင်မှတဆင့် နံပါတ်စဉ်စီယာသို့ ပေးပို့သည်။

သတ်မှတ်ထားသောနည်းလမ်းများသည် ဒေတာကို မွမ်းမံပြီးမှသာ အလုပ်လုပ်နိုင်ပြီး၊ သင်တန်း၏ ပထမဆုံးပြသမှုကို ထိခိုက်စေမည်မဟုတ်ပါ။

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' အခြား: ရလဒ် += 'nSell: ' + ex_json['sale'] + 'n' ရလဒ် def serialize_exchange_diff(diff): ရလဒ် = '' if 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( 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 ကို ရွေးချယ်ပါက ဤအရာသည် အဘယ်နည်း။

Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

အဆင့် 8- Update Button Handler ကို အကောင်အထည်ဖော်ခြင်း။

အပ်ဒိတ်ခလုတ်ဖြင့် လုပ်ဆောင်ချက်များကို ကိုင်တွယ်ရန်အတွက် ကုဒ်ကိုရေးပြီး iq_callback_method အပိုင်းကို ၎င်းတွင် ထည့်ကြပါစို့။ ပရိုဂရမ်အရာများသည် get parameter ဖြင့်စတင်သောအခါ၊ သင်သည် get_ex_callback ကိုရေးရပါမည်။ အခြားအခြေအနေများတွင်၊ ကျွန်ုပ်တို့သည် JSON ကိုခွဲခြမ်းစိတ်ဖြာပြီး သော့ကိုရယူရန် ကြိုးစားသည်။

@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(query) ValueError: pass

t နှင့် ညီမျှပါက သင်သည် edit_message_callback method အတွက် ပရိုဂရမ်တစ်ခု ရေးရန် လိုအပ်ပါသည်။ ဤလုပ်ငန်းစဉ်ကို အဆင့်ဆင့်ခွဲကြည့်ကြပါစို့။

  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), 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='HTML_mesque ) : 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၊ ငွေကြေး၏ကုန်ကျစရိတ်နှင့်ပတ်သက်သော အချက်အလက်အဟောင်းနှင့် အသစ်များကိုဖတ်ပြီး ကွာခြားချက်ကိုပြသပေးသော get_exchange_diff။

def get_exchange_diff(နောက်ဆုံး၊ ယခု): return { 'sale_diff': float("%.6f" % (float(ယခု['sale']) - float(နောက်ဆုံး['sale']))), 'buy_diff': float ("%.6f" % (float(ယခု['buy']) - float(နောက်ဆုံး['buy']))) }

နောက်ဆုံးတစ်ခု၊ get_edited_signature သည် သင်တန်းနောက်ဆုံးအပ်ဒိတ်လုပ်သည့်အချိန်ကို ပြသည်။

def get_edited_signature(): return '' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + '(' + TIMEZONE_COMMON_NAME + ')'

ရလဒ်အနေဖြင့် တည်ငြိမ်သော ငွေလဲနှုန်းဖြင့် bot မှ မွမ်းမံထားသော မက်ဆေ့ချ်သည် ဤကဲ့သို့ ဖြစ်သည်-

Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

သင်တန်းပြောင်းလဲသောအခါတွင် သတ်မှတ်ထားသော ကန့်သတ်ဘောင်များကြောင့် မက်ဆေ့ချ်တွင် တန်ဖိုးများအကြား ကွဲပြားမှုများကို ပြသပါသည်။

Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

အဆင့် 9- မြှုပ်သွင်းမုဒ်ကို အကောင်အထည်ဖော်ခြင်း။

ပရိုဂရမ်မှ အချက်အလက်များကို မည်သည့် chat သို့မဆို လျင်မြန်စွာ ပေးပို့ရန် အတွက် built-in မုဒ် လိုအပ်ပါသည် - ယခုတွင် ပါဝင်သူအနေဖြင့် စကားဝိုင်းသို့ bot တစ်ခုကို ထည့်ရန် မလိုအပ်တော့ပါ။ Telegram အသုံးပြုသူတစ်ဦးသည် ၎င်း၏ရှေ့တွင် @ ဆိုင်းဘုတ်ဖြင့် bot အမည်ကိုရိုက်ထည့်သောအခါ၊ ပြောင်းလဲခြင်းရွေးချယ်စရာများကို ထည့်သွင်းသည့်လိုင်းအထက်တွင် ပေါ်လာမည်ဖြစ်သည်။ အရာများထဲမှ တစ်ခုကို နှိပ်ပါက၊ bot သည် ဒေတာမွမ်းမံခြင်းနှင့် ပေးပို့ခြင်းအတွက် ရလဒ်များနှင့် ခလုတ်များဖြင့် စကားဝိုင်းသို့ မက်ဆေ့ချ်တစ်ခု ပေးပို့မည်ဖြစ်ပါသည်။ ပေးပို့သူ၏အမည်တွင် “မှတစ်ဆင့်” စာတန်းပါရှိသည်။ "။

InlineQuery ကို စာကြည့်တိုက်မှတဆင့် query_text သို့ ပေးပို့ပါသည်။ ကုဒ်သည် ရှာဖွေမှုရလဒ်များကို ဒေတာအခင်းအကျင်းနှင့် inline_query_id ဒြပ်စင်အဖြစ် ရယူရန် answer_line လုပ်ဆောင်ချက်ကို အသုံးပြုသည်။ ကျွန်ုပ်တို့သည် get_exchanges ကိုအသုံးပြု၍ bot သည် တောင်းဆိုမှုအရ ငွေကြေးများစွာကို ရှာတွေ့နိုင်စေရန်။

@bot.inline_handler(func=lambda မေးမြန်းချက်- မှန်) 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 များထံသို့ ဒေတာ array တစ်ခုအား ကျွန်ုပ်တို့ ဖြတ်သန်းပါသည်။

def get_iq_articles(exchanges): ဖလှယ်မှုတွင် exc အတွက် ရလဒ် = [] အတွက် 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='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 )) ရလဒ်

အခု @ ရေးရင်၊ နှင့် မျဉ်းအတွင်း နေရာလွတ်တစ်ခု၊ ရှာဖွေမှုရလဒ်များသည် ဖန်သားပြင်ပေါ်တွင် ပေါ်လာလိမ့်မည် - ရရှိနိုင်သော ငွေကြေးသုံးမျိုးအဖြစ် ပြောင်းလဲခြင်းအတွက် ရွေးချယ်စရာများ။

Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

အသုံးပြုသူများသည် လိုချင်သောငွေကြေးကို ထည့်သွင်းခြင်းဖြင့် ရလဒ်များကို စစ်ထုတ်နိုင်ပါသည်။

စာရင်းမှ လိုချင်သော ငွေကြေးကို နှိပ်ပြီးနောက်၊ ချက်တင်သည် bot အသုံးပြုသူများ လက်ခံရရှိသည့် တူညီသော မက်ဆေ့ချ်ကို လက်ခံရရှိပါသည်။ Update ခလုတ်ကိုလည်း သုံးနိုင်ပါတယ်။ အောက်ပါပုံသည် bot မှတစ်ဆင့် အပ်ဒိတ်လုပ်ထားသော မက်ဆေ့ချ်ကို ပြသသည်-

Python ရှိ Telegram bot ။ ငွေလဲနှုန်းအစမှအစ bot တစ်ခုကိုရေးရန် လမ်းညွှန်ချက်အပြည့်အစုံ

ကောက်ချက်

Telegram အတွက် bot တစ်ခုကို ဘယ်လိုဖန်တီးရမလဲဆိုတာ သင်သိနေပါပြီ။ သင့်ပရိုဂရမ်တွင် အသုံးဝင်သောကိရိယာများကို သင်ထည့်သွင်းနိုင်သည်- messenger ၏အခြားအသုံးပြုသူများထံ ရလဒ်ကိုမွမ်းမံခြင်းနှင့် ပေးပို့ခြင်းအတွက် ခလုတ်များနှင့် ၎င်းနှင့် ချတ်ပြင်ပရှိ bot ၏လုပ်ဆောင်ချက်များကို သင်အသုံးပြုခွင့်ပြုသည့် built-in မုဒ်တစ်ခု။ ဤညွှန်ကြားချက်ကိုအခြေခံ၍ ငွေလဲနှုန်းကိုပြသမည့်တစ်ခုတည်းသာမက အခြားသောလုပ်ဆောင်ချက်များဖြင့် ရိုးရှင်းသော bot များကို သင်ဖန်တီးနိုင်သည်။ Telegram တွင်ဖောက်သည်များနှင့်စကားပြောပြီး ကုမ္ပဏီနှင့်စိတ်ဝင်စားသူများ၏ချိတ်ဆက်မှုကို အားကောင်းစေမည့် အလိုအလျောက်လက်ထောက်ကိုဖန်တီးရန် စာကြည့်တိုက်များ၊ API နှင့် ကုဒ်များဖြင့် စမ်းသပ်ရန် မကြောက်ပါနှင့်။

1 မှတ်ချက်

  1. Fantastica publicación

တစ်ဦးစာပြန်ရန် Leave