Telegram bot ໃນ Python. ຄູ່ມືຄົບຖ້ວນສົມບູນໃນການຂຽນ bot ກັບອັດຕາແລກປ່ຽນຈາກຈຸດເລີ່ມຕົ້ນ

Bots ໃນ Telegram ແມ່ນໂຄງການທີ່ຊ່ວຍສ້າງການຕິດຕໍ່ກັບຜູ້ຊົມຫຼືເຮັດໃຫ້ການກະທໍາທີ່ງ່າຍດາຍໃນເມື່ອກ່ອນຕ້ອງໄດ້ປະຕິບັດດ້ວຍຕົນເອງ. ໂຄງການເຫຼົ່ານີ້ຖືກຂຽນໂດຍສະເພາະສໍາລັບເວທີ messenger. Bots ເຮັດວຽກໃນລັກສະນະນີ້: ຜູ້ໃຊ້ສົ່ງຄໍາສັ່ງຜ່ານເສັ້ນປ້ອນຂໍ້ມູນ, ແລະລະບົບຕອບສະຫນອງດ້ວຍຂໍ້ຄວາມຫຼືຂໍ້ຄວາມໂຕ້ຕອບ. ບາງຄັ້ງໂຄງການກໍ່ຮຽນແບບການກະ ທຳ ຂອງບຸກຄົນທີ່ແທ້ຈິງ - bot ດັ່ງກ່າວສ້າງແຮງບັນດານໃຈໃຫ້ລູກຄ້າມີຄວາມໄວ້ວາງໃຈຫຼາຍຂຶ້ນ.

ມີຫຼາຍປະເພດຂອງລະບົບສໍາລັບການຊ່ວຍເຫຼືອອັດຕະໂນມັດໃຫ້ກັບຜູ້ໃຊ້. ບາງ bots ພຽງແຕ່ຕິດຕໍ່ກັບລູກຄ້າ, ຄົນອື່ນໃຫ້ຂໍ້ມູນເປັນປົກກະຕິ. ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະແບ່ງໂຄງການອອກເປັນປະເພດຢ່າງຊັດເຈນ - ນັກພັດທະນາມັກຈະລວມເອົາຫຼາຍຫນ້າທີ່ຢູ່ໃນຫນຶ່ງ bot.

ທ່ານສາມາດຂຽນ bot ງ່າຍໆສໍາລັບ Telegram ດ້ວຍອົງປະກອບການໂຕ້ຕອບໃນຮູບແບບຂອງປຸ່ມເທິງຫນ້າຈໍໃນ 9 ຂັ້ນຕອນ. ໃຫ້​ເບິ່ງ​ແຕ່​ລະ​ຢ່າງ​ໂດຍ​ລະ​ອຽດ​ແລະ​ຕອບ​ຄໍາ​ຖາມ​ບາງ​ຢ່າງ​:

  • ວິທີການເລີ່ມຕົ້ນ bot;
  • ວິທີການລົງທະບຽນແປ້ນພິມໃນຕົວຈາກຫນຶ່ງຫຼືຫຼາຍປຸ່ມ;
  • ວິທີການຂຽນໂປລແກລມປຸ່ມສໍາລັບຫນ້າທີ່ທີ່ຕ້ອງການ;
  • ຮູບແບບ inline ແມ່ນຫຍັງແລະວິທີການຕັ້ງຄ່າມັນສໍາລັບ bot ທີ່ມີຢູ່ແລ້ວ.

ຂັ້ນຕອນທີ 0: ພື້ນຖານທິດສະດີກ່ຽວກັບ Telegram bots API

ເຄື່ອງມືຕົ້ນຕໍທີ່ໃຊ້ໃນການສ້າງ Telegram bots ແມ່ນ HTML Application Programming Interface, ຫຼື HTML API. ອົງປະກອບນີ້ຍອມຮັບຄໍາຮ້ອງຂໍຂອງຜູ້ເຂົ້າຊົມແລະສົ່ງຄໍາຕອບໃນຮູບແບບຂໍ້ມູນ. ການອອກແບບທີ່ເຮັດແລ້ວເຮັດໃຫ້ງ່າຍໃນການເຮັດວຽກໃນໂຄງການ. ເພື່ອຂຽນ bot ສໍາລັບ Telegram, ທ່ານຈໍາເປັນຕ້ອງໃຊ້ທີ່ຢູ່ອີເມວນີ້: https://api.telegram.org/bot/METHOD_NAME

ສໍາລັບການເຮັດວຽກທີ່ຖືກຕ້ອງຂອງ bot, ຈໍາເປັນຕ້ອງມີ token - ການປະສົມປະສານຂອງຕົວອັກສອນທີ່ປົກປ້ອງໂຄງການແລະເປີດການເຂົ້າເຖິງມັນໃຫ້ກັບຜູ້ພັດທະນາທີ່ເຊື່ອຖືໄດ້. ແຕ່ລະ token ແມ່ນເປັນເອກະລັກ. ສະຕຣິງຖືກມອບໝາຍໃຫ້ bot ເມື່ອສ້າງ. ວິທີການສາມາດແຕກຕ່າງກັນ: getUpdates, getChat ແລະອື່ນໆ. ທາງເລືອກຂອງວິທີການແມ່ນຂຶ້ນກັບສິ່ງທີ່ algorithm ນັກພັດທະນາຄາດຫວັງຈາກ bot. ຕົວຢ່າງໂທເຄັນ:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Bots ໃຊ້ການຮ້ອງຂໍ GET ແລະ POST. ຕົວກໍານົດການວິທີການມັກຈະຕ້ອງໄດ້ຮັບການເສີມ - ຕົວຢ່າງ, ເມື່ອວິທີການ sendMessage ຄວນຈະສົ່ງ id ສົນທະນາແລະບາງຂໍ້ຄວາມ. ພາລາມິເຕີສໍາລັບການປັບປຸງວິທີການສາມາດຖືກສົ່ງຜ່ານເປັນສາຍຄໍາຖາມ URL ໂດຍໃຊ້ application/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 ເທົ່າກັນ ທີ່ແທ້ຈິງ. ຖ້າບໍ່ດັ່ງນັ້ນ, ລະບົບຈະສະແດງຂໍ້ຜິດພາດ.

ມີສອງວິທີທີ່ຈະໄດ້ຮັບຂໍ້ຄວາມທີ່ກໍາຫນົດເອງໃນ bots. ທັງສອງວິທີແມ່ນມີປະສິດທິພາບ, ແຕ່ເຫມາະສົມໃນກໍລະນີທີ່ແຕກຕ່າງກັນ. ເພື່ອໃຫ້ໄດ້ຮັບຂໍ້ຄວາມ, ທ່ານສາມາດຂຽນຄໍາຮ້ອງຂໍດ້ວຍຕົນເອງດ້ວຍວິທີການ getUpdates - ໂປລແກລມຈະສະແດງຊຸດຂໍ້ມູນການປັບປຸງໃນຫນ້າຈໍ. ການຮ້ອງຂໍຕ້ອງຖືກສົ່ງເປັນປົກກະຕິ, ຫຼັງຈາກການວິເຄາະແຕ່ລະອາເຣ, ການສົ່ງແມ່ນຊ້ໍາກັນ. Offset ເປັນພາລາມິເຕີທີ່ກໍານົດຈໍານວນຂອງບັນທຶກທີ່ຂ້າມໄປກ່ອນທີ່ຈະໂຫລດຜົນໄດ້ຮັບໃຫມ່ເພື່ອຫຼີກເວັ້ນການປະກົດຕົວຄືນໃຫມ່ຂອງວັດຖຸທີ່ຖືກກວດສອບ. ຜົນປະໂຫຍດຂອງວິທີການ getUpdates ຈະເຂົ້າມາຫຼິ້ນຖ້າ:

  • ບໍ່ມີວິທີທີ່ຈະຕັ້ງຄ່າ HTTPS;
  • complex scripting languages ​​ຖືກນໍາໃຊ້;
  • ເຄື່ອງແມ່ຂ່າຍຂອງ bot ມີການປ່ຽນແປງຈາກເວລາໃດຫນຶ່ງ;
  • bot ແມ່ນ loaded ກັບຜູ້ໃຊ້.

ວິທີທີສອງທີ່ສາມາດຂຽນເພື່ອຮັບຂໍ້ຄວາມຂອງຜູ້ໃຊ້ແມ່ນ setWebhook. ມັນຖືກນໍາໃຊ້ຄັ້ງດຽວ, ບໍ່ຈໍາເປັນຕ້ອງສົ່ງຄໍາຮ້ອງຂໍໃຫມ່ຢ່າງຕໍ່ເນື່ອງ. webhook ສົ່ງການອັບເດດຂໍ້ມູນໄປຫາ URL ທີ່ລະບຸ. ວິທີການນີ້ຕ້ອງການໃບຢັ້ງຢືນ SSL. Webhook ຈະເປັນປະໂຫຍດໃນກໍລະນີເຫຼົ່ານີ້:

  • web programming languages ​​ຖືກນໍາໃຊ້;
  • bot ບໍ່ໄດ້ overloaded, ບໍ່ມີຜູ້ໃຊ້ຫຼາຍເກີນໄປ;
  • ເຄື່ອງແມ່ຂ່າຍບໍ່ປ່ຽນແປງ, ໂຄງການຍັງຄົງຢູ່ໃນເຄື່ອງແມ່ຂ່າຍດຽວກັນເປັນເວລາດົນນານ.

ໃນຄໍາແນະນໍາເພີ່ມເຕີມ, ພວກເຮົາຈະໃຊ້ 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 ເບິ່ງຄືວ່ານີ້:

import re import ການຮ້ອງຂໍ 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 ): for exc in load_exchange(): if ccy_key == exc['ccy']: return exc return False def get_exchanges(ccy_pattern): result = [] ccy_pattern = re.escape(ccy_pattern) + '.*' for exc in 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 ຖືກສ້າງຂຶ້ນ, ຂໍ້ຄວາມຍິນດີຕ້ອນຮັບທີ່ມີ token ຈະປາກົດຢູ່ໃນຫນ້າຈໍ. ສໍາລັບການຕັ້ງຄ່າເພີ່ມເຕີມ, ໃຊ້ຄໍາສັ່ງເຫຼົ່ານີ້:

  • /setdescription – ລາຍ​ລະ​ອຽດ​;
  • /setabouttext – ຂໍ້​ມູນ​ກ່ຽວ​ກັບ bot ໃຫມ່​;
  • /setuserpic – ຮູບໂປຣໄຟລ໌;
  • /setinline – ຮູບແບບ inline;
  • /setcommands – ລາຍ​ລະ​ອຽດ​ຂອງ​ຄໍາ​ສັ່ງ​.

ໃນຂັ້ນຕອນການຕັ້ງຄ່າສຸດທ້າຍ, ພວກເຮົາອະທິບາຍ /help ແລະ /exchange. ເມື່ອຂັ້ນຕອນທັງຫມົດໄດ້ຖືກສໍາເລັດ, ມັນເປັນເວລາທີ່ຈະກ້າວໄປສູ່ການເຂົ້າລະຫັດ.

ຂັ້ນ​ຕອນ​ທີ 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

ໃຫ້ໃຊ້ເນື້ອໃນຂອງ pyTelegramBotApi ເພື່ອສ້າງ bot. ພວກເຮົາສົ່ງ token ທີ່ໄດ້ຮັບໂດຍໃຊ້ລະຫັດຕໍ່ໄປນີ້:

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

ພາລາມິເຕີ none_stop ຮັບປະກັນວ່າການຮ້ອງຂໍຖືກສົ່ງຢ່າງຕໍ່ເນື່ອງ. ການດໍາເນີນງານຂອງພາລາມິເຕີຈະບໍ່ໄດ້ຮັບຜົນກະທົບຈາກຄວາມຜິດພາດຂອງວິທີການ.

ຂັ້ນຕອນທີ 4: ຂຽນ /start Commander

ຖ້າທຸກຂັ້ນຕອນທີ່ຜ່ານມາຖືກເຮັດຢ່າງຖືກຕ້ອງ, bot ໄດ້ເລີ່ມເຮັດວຽກ. ໂຄງການສ້າງການຮ້ອງຂໍເປັນປົກກະຕິເນື່ອງຈາກວ່າມັນໃຊ້ວິທີການ 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=['start'] ເທົ່າກັບ 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​) ກົດ "ປັບ​ປຸງ​" ເພື່ອ​ໄດ້​ຮັບ​ຂໍ້​ມູນ​ໃນ​ປັດ​ຈຸ​ບັນ​ກ່ຽວ​ກັບ​ການ​ຮ້ອງ​ຂໍ​. ' + 'bot ຍັງຈະສະແດງຄວາມແຕກຕ່າງລະຫວ່າງອັດຕາແລກປ່ຽນທີ່ຜ່ານມາແລະປະຈຸບັນ.n' + '5) bot ສະຫນັບສະຫນູນ inline. ພິມ @ ໃນການສົນທະນາໃດນຶ່ງ ແລະຕົວອັກສອນທຳອິດຂອງສະກຸນເງິນ.', reply_markup=keyboard )

ການປະຕິບັດລະຫັດໃນການສົນທະນາ Telegram:

Telegram bot ໃນ Python. ຄູ່ມືຄົບຖ້ວນສົມບູນໃນການຂຽນ bot ກັບອັດຕາແລກປ່ຽນຈາກຈຸດເລີ່ມຕົ້ນ

ຂັ້ນຕອນທີ 6: ເພີ່ມຕົວຈັດການຄໍາສັ່ງ /exchange

ຂັ້ນຕອນນີ້ແມ່ນຈໍາເປັນເພື່ອສະແດງປຸ່ມທີ່ມີສັນຍາລັກຂອງສະກຸນເງິນທີ່ມີຢູ່ໃນການສົນທະນາ. ແປ້ນພິມໃນຫນ້າຈໍທີ່ມີຕົວເລືອກຈະຊ່ວຍໃຫ້ທ່ານຫຼີກເວັ້ນຄວາມຜິດພາດ. PrivatBank ໃຫ້ຂໍ້ມູນກ່ຽວກັບ ruble, ເງິນໂດລາແລະເອີໂຣ. ຕົວເລືອກ 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=keyboard )

ຜົນໄດ້ຮັບຂອງລະຫັດໃນ Telegram:

Telegram bot ໃນ Python. ຄູ່ມືຄົບຖ້ວນສົມບູນໃນການຂຽນ bot ກັບອັດຕາແລກປ່ຽນຈາກຈຸດເລີ່ມຕົ້ນ

ຂັ້ນ​ຕອນ​ທີ 7​: ການ​ຂຽນ handler ສໍາ​ລັບ​ການ​ສ້າງ​ໃນ​ປຸ່ມ​ແປ້ນ​ພິມ​

ຊຸດ pyTelegramBot Api ປະກອບມີຟັງຊັນ @bot.callback_query_handler decorator. ອົງປະກອບນີ້ຖືກອອກແບບມາເພື່ອແປການເອີ້ນຄືນເປັນຟັງຊັນ – API ຖອດອອກ ແລະສ້າງການໂທຄືນໃໝ່. ມັນຖືກສະກົດຄືນີ້:

@bot.callback_query_handler(func=lambda call: True) def iq_callback(query): data = query.data ຖ້າ 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_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 ສໍາລັບປຸ່ມ Share ເພື່ອໃຫ້ຜູ້ໃຊ້ສາມາດເລືອກຈາກຫຼາຍໆການສົນທະນາ. ນັກທ່ອງທ່ຽວຈະສາມາດເລືອກໃຫ້ໃຜທີ່ຈະສົ່ງອັດຕາແລກປ່ຽນໃນປະຈຸບັນຂອງເງິນໂດລາ, ruble ຫຼືເອີໂຣ.

def get_update_keyboard(ex): keyboard = 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']) ) ກັບຄືນແປ້ນພິມ

ບາງຄັ້ງທ່ານຈໍາເປັນຕ້ອງເບິ່ງວ່າອັດຕາແລກປ່ຽນມີການປ່ຽນແປງຫຼາຍປານໃດໃນເວລາສັ້ນໆ. ໃຫ້ຂຽນສອງວິທີສໍາລັບປຸ່ມອັບເດດເພື່ອໃຫ້ຜູ້ໃຊ້ສາມາດເບິ່ງຫຼັກສູດໃນການປຽບທຽບ.

ຄວາມແຕກຕ່າງລະຫວ່າງອັດຕາແລກປ່ຽນແມ່ນຖືກສົ່ງໄປຫາ serializer ຜ່ານຕົວກໍານົດຄວາມແຕກຕ່າງ.

ວິທີການທີ່ກໍານົດໄວ້ເຮັດວຽກພຽງແຕ່ຫຼັງຈາກຂໍ້ມູນຖືກປັບປຸງ, ພວກມັນຈະບໍ່ມີຜົນກະທົບຕໍ່ການສະແດງຄັ້ງທໍາອິດຂອງຫຼັກສູດ.

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): ຜົນໄດ້ຮັບ = '' ຖ້າຄວາມແຕກຕ່າງ> 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, ທ່ານຕ້ອງຂຽນ 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 ທີ່ມີຄວາມແຕກຕ່າງ.
  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_mesquery idlineif. : 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'], 'sale': exc_json['s'] }

ທ່ານຈະຕ້ອງການວິທີການອີກບໍ່ຫຼາຍປານໃດ: ຕົວຢ່າງ get_exchange_diff, ເຊິ່ງອ່ານຂໍ້ມູນເກົ່າແລະໃຫມ່ກ່ຽວກັບຄ່າໃຊ້ຈ່າຍຂອງສະກຸນເງິນແລະສະແດງຄວາມແຕກຕ່າງ.

def get_exchange_diff(ຫຼ້າສຸດ, ດຽວນີ້): ກັບຄືນ { 'sale_diff': float("%.6f" % (float(ດຽວນີ້['sale']) - float(last['sale']))), 'buy_diff': float ("%.6f" % (float(ດຽວນີ້['ຊື້']) - float(ສຸດທ້າຍ['buy']))) }

ອັນສຸດທ້າຍ, get_edited_signature, ສະແດງເວລາທີ່ຫຼັກສູດໄດ້ຖືກປັບປຸງຫຼ້າສຸດ.

def get_edited_signature(): return 'ອັບເດດ ' + 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 ເພື່ອດຶງຜົນການຄົ້ນຫາເປັນ array ຂອງຂໍ້ມູນ ແລະອົງປະກອບ 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)))

ພວກເຮົາສົ່ງຂໍ້ມູນ array ໄປຫາ 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. ທ່ານສາມາດເພີ່ມເຄື່ອງມືທີ່ເປັນປະໂຫຍດໃນໂປຼແກຼມຂອງທ່ານ: ປຸ່ມສໍາລັບການປັບປຸງແລະສົ່ງຜົນໄດ້ຮັບໃຫ້ກັບຜູ້ໃຊ້ອື່ນໆຂອງ messenger ແລະຮູບແບບທີ່ສ້າງຂຶ້ນໃນຕົວທີ່ຊ່ວຍໃຫ້ທ່ານໃຊ້ຫນ້າທີ່ຂອງ bot ຢູ່ນອກການສົນທະນາກັບມັນ. ອີງຕາມຄໍາແນະນໍານີ້, ທ່ານສາມາດສ້າງ bot ງ່າຍໆທີ່ມີຫນ້າທີ່ອື່ນໆ - ບໍ່ພຽງແຕ່ຫນຶ່ງທີ່ຈະສະແດງອັດຕາແລກປ່ຽນ. ຢ່າຢ້ານທີ່ຈະທົດລອງຫ້ອງສະຫມຸດ, APIs, ແລະລະຫັດເພື່ອສ້າງຜູ້ຊ່ວຍອັດຕະໂນມັດທີ່ຈະສົນທະນາກັບລູກຄ້າໃນ Telegram ແລະເສີມສ້າງການເຊື່ອມຕໍ່ຂອງຜູ້ສົນໃຈກັບບໍລິສັດ.

1 ແດງຄວາມຄິດເຫັນ

  1. Fantastica publicación

ອອກຈາກ Reply ເປັນ