Боти Telegram дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

Ботҳо дар Telegram барномаҳое мебошанд, ки барои барқарор кардани тамос бо аудитория ё содда кардани амалҳое, ки қаблан бояд дастӣ иҷро мешуданд, кӯмак мекунанд. Ин барномаҳо махсус барои платформаи паёмнависӣ навишта шудаанд. Ботҳо ҳамин тавр кор мекунанд: корбар тавассути хати вуруд фармон мефиристад ва система бо паёми матнӣ ё интерактивӣ посух медиҳад. Баъзан барнома ҳатто ба амалҳои шахси воқеӣ тақлид мекунад - чунин бот эътимоди бештари муштариёнро ба вуҷуд меорад.

Якчанд намуди системаҳо барои кӯмаки автоматӣ ба корбарон мавҷуданд. Баъзе ботҳо танҳо бо муштариён муошират мекунанд, дигарон мунтазам маълумот медиҳанд. Барномаҳоро ба намудҳо аниқ тақсим кардан ғайриимкон аст - таҳиягарон аксар вақт якчанд функсияро дар як бот муттаҳид мекунанд.

Шумо метавонед боти оддӣ барои Telegram бо унсурҳои интерактивӣ дар шакли тугмаҳои экран дар 9 қадам нависед. Биёед ҳар яки онҳоро ба таври муфассал дида бароем ва ба чанд савол ҷавоб диҳем:

  • чӣ гуна оғоз кардани бот;
  • чӣ тавр ба қайд гирифтани клавиатураи дарунсохт аз як ё якчанд тугмаҳо;
  • чӣ тавр барномасозии тугмаҳо барои вазифаҳои дилхоҳ;
  • режими inline чист ва чӣ гуна онро барои боти мавҷуда танзим кардан мумкин аст.

Қадами 0: заминаи назариявӣ дар бораи API ботҳои Telegram

Воситаи асосие, ки барои сохтани ботҳои Telegram истифода мешавад, интерфейси барномасозии HTML ё HTML API мебошад. Ин элемент дархостҳои меҳмононро қабул мекунад ва посухҳоро дар шакли иттилоот мефиристад. Конструкцияхои тайёр кори программаро осон мекунанд. Барои навиштани бот барои Telegram, шумо бояд ин суроғаи почтаи электрониро истифода баред: https://api.telegram.org/bot/METHOD_NAME

Барои дуруст кор кардани бот, нишона низ лозим аст - маҷмӯи аломатҳое, ки барномаро муҳофизат мекунанд ва дастрасӣ ба он ба таҳиягарони боэътимодро мекушоянд. Ҳар як аломат беназир аст. Сатр ҳангоми офариниш ба бот таъин карда мешавад. Усулҳо метавонанд гуногун бошанд: getUpdates, getChat ва дигарон. Интихоби усул аз он вобаста аст, ки таҳиягарон аз бот кадом алгоритмро интизоранд. Намунаи аломат:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Ботҳо дархостҳои GET ва POST-ро истифода мебаранд. Параметрҳои усул аксар вақт бояд пурра карда шаванд - масалан, вақте ки усули sendMessage бояд id-и чат ва баъзе матнро ирсол кунад. Параметрҳои такмили усулро метавон ҳамчун сатри дархости URL бо истифода аз application/x-www-form-urlencoded ё тавассути application-json интиқол дод. Ин усулҳо барои зеркашии файлҳо мувофиқ нестанд. Рамзгузории UTF-8 низ талаб карда мешавад. Бо фиристодани дархост ба API, шумо метавонед натиҷаро дар формати JSON ба даст оред. Ба вокуниши барнома ба дарёфти иттилоот тавассути усули getME нигаред:

Гирифтани https://api.telegram.org/bot/getMe{ хуб: ҳақиқӣ, натиҷа: {id: 231757398, аввал_ном: "Боти мубодилаи асъор", номи корбар: "exchangetestbot" } }

Натича ба даст меояд, агар ok баробар аст ҳақиқӣ. Дар акси ҳол, система хатогиро нишон медиҳад.

Ду роҳи ба даст овардани паёмҳои фармоишӣ дар ботҳо вуҷуд дорад. Ҳарду усул самараноканд, аммо дар ҳолатҳои гуногун мувофиқанд. Барои гирифтани паёмҳо, шумо метавонед дархостро бо усули getUpdates дастӣ нависед - барнома дар экран массиви маълумотҳои Навсозии маълумотро намоиш медиҳад. Дархостҳо бояд мунтазам фиристода шаванд, пас аз таҳлили ҳар як массив, ирсол такрор карда мешавад. Офсет параметрест, ки шумораи сабтҳои партофташударо пеш аз бор кардани натиҷаи нав барои пешгирӣ кардани пайдоиши объектҳои тафтишшуда муайян мекунад. Манфиатҳои усули getUpdates ба амал меоянд, агар:

  • ҳеҷ роҳе барои танзими HTTPS вуҷуд надорад;
  • забонҳои мураккаби скрипт истифода мешаванд;
  • сервери бот вақт аз вақт тағир меёбад;
  • бот бо корбарон пур карда мешавад.

Усули дуюм, ки барои қабули паёмҳои корбар навишта мешавад, setWebhook мебошад. Он як маротиба истифода мешавад, барои фиристодани дархостҳои нав лозим нест. Вебхук навсозиҳои маълумотро ба URL-и муайяншуда мефиристад. Ин усул сертификати SSL-ро талаб мекунад. Webhook дар ин ҳолатҳо муфид хоҳад буд:

  • забонҳои барномасозии веб истифода мешаванд;
  • бот изофабор нест, корбарон аз ҳад зиёд нестанд;
  • сервер тагйир намеёбад, барнома муддати дароз дар як сервер мемонад.

Дар дастурҳои минбаъда, мо getUpdates-ро истифода мебарем.

Хидмати @BotFather Telegram барои эҷоди ботҳои чат пешбинӣ шудааст. Танзимоти асосӣ низ тавассути ин система муқаррар карда мешаванд - BotFather ба шумо кӯмак мекунад, ки тавсиф кунед, акси профилро гузоред, асбобҳои дастгирӣ илова кунед. Китобхонаҳо - маҷмӯи дархостҳои HTML барои ботҳои Telegram - дар Интернет дастрасанд, хеле зиёданд. Ҳангоми сохтани барномаи намунавӣ, pyTelegramBotApi истифода мешуд.

Қадами 1: Иҷрои дархостҳои қурби асъор

Аввал шумо бояд кодеро нависед, ки дархостҳоро иҷро мекунад. Мо ҳангоми навиштани API PrivatBank истифода хоҳем кард, дар зер истиноди он аст: 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) ): for exc in load_exchange(): if ccy_key == exc['ccy']: баргардонидани exc баргардонидани Бардурӯғ 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 бо @BotFather эҷод кунед

Шумо метавонед бо истифода аз хидмати @BotFather барнома барои қабули паёмҳо ва посух додан ба онҳо эҷод кунед. Ба саҳифаи Telegram-и ӯ равед ва фармони / newbot-ро ворид кунед. Дар чат дастурҳо пайдо мешаванд, ки мувофиқи он шумо бояд аввал номи бот ва сипас суроғаи онро нависед. Вақте ки ҳисоби бот эҷод мешавад, дар экран паёми истиқболи дорои аломат пайдо мешавад. Барои конфигуратсияи минбаъда ин фармонҳоро истифода баред:

  • /setdescription – тавсиф;
  • /setabouttext – маълумот дар бораи боти нав;
  • /setuserpic – сурати профил;
  • /setinline - ҳолати дохилӣ;
  • /setcommands - тавсифи фармонҳо.

Дар қадами охирини конфигуратсия, мо / help ва / exchange -ро тавсиф мекунем. Вақте ки ҳамаи қадамҳо анҷом ёфтанд, вақти он расидааст, ки ба рамзгузорӣ гузаред.

Қадами 3: Насб ва ба кор андохтани бот

Биёед файли config.py эҷод кунем. Дар он шумо бояд рамзи ягонаи бот ва минтақаи вақтро, ки дар он барнома маълумот пайдо мекунад, муайян кунед.

ТОКЕН = '' # бо нишони боти худ иваз кунед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 = telebot.TeleBot(config.TOKEN) bot.polling(none_stop=True)

Параметри none_stop кафолат медиҳад, ки дархостҳо пайваста фиристода мешаванд. Ба кори параметр хатогиҳои усул таъсир намерасонанд.

Қадами 4: Дастури фармони /start -ро нависед

Агар ҳамаи қадамҳои қаблӣ дуруст иҷро карда шаванд, бот ба кор шурӯъ кардааст. Барнома дархостҳоро мунтазам тавлид мекунад, зеро он усули getUpdates -ро истифода мебарад. Пеш аз сатри унсури none_stop, ба мо як пораи код лозим аст, ки фармони /start -ро коркард мекунад:

@bot.message_handler(фармонҳо=['оғоз']) def start_command(пайғом): bot.send_message( message.chat.id, 'Салом! Ман метавонам ба шумо қурби асъорро нишон диҳам.n' + 'Барои гирифтани қурби асъор / -ро пахш кунед. exchange.n' + 'Барои гирифтани кӯмак /help-ро пахш кунед.' )

RџSЂРё фармонҳо = ['оғоз'] баробар ба True start_command даъват карда мешавад. Мазмуни паём ба он ҷо меравад. Баъдан, шумо бояд функсияи ирсолро амалӣ кунед_хабар дар робита ба паёми мушаххас.

Қадами 5: Эҷоди /help Дастури фармон

Фармони /help метавонад ҳамчун тугма амалӣ карда шавад. Бо пахш кардани он корбар ба аккаунти Telegram-и таҳиягар ворид мешавад. Ба тугма ном диҳед, ба монанди "Аз таҳиягар пурсед". Параметри reply_markup-ро, ки корбарро ба истинод равона мекунад, барои усули send_message таъин кунед. Биёед дар код параметреро, ки клавиатураро эҷод мекунад (InlineKeyboardMarkup) нависед. Шумо танҳо як тугма лозим аст (InlineKeyboardButton).

Рамзи ниҳоии коркардкунандаи фармон чунин аст:

@bot.message_handler(commands=['help']) 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) Бот хатти дохилиро дастгирӣ мекунад. Навъи @ дар ҳама чат ва ҳарфҳои аввали асъор.', reply_markup=клавиатура )

Амали код дар чати Telegram:

Боти Telegram дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

Қадами 6: Иловаи коркардкунандаи фармони /exchange

Ин қадам барои нишон додани тугмаҳо бо аломатҳои асъори дастрас дар чат лозим аст. Клавиатураи экран бо имконоти худ ба шумо кӯмак мекунад, ки хатогиҳоро пешгирӣ кунед. PrivatBank маълумотро дар бораи рубл, доллар ва евро пешниҳод мекунад. Опсияи InlineKeyboardButton чунин кор мекунад:

  1. Истифодабаранда тугмаи бо нишони дилхоҳро пахш мекунад.
  2. getUpdates занги бозпас мегирад (CallbackQuery).
  3. Чӣ тавр идора кардани пахшкунии клавиатура маълум мешавад - маълумот дар бораи тугмаи пахшшуда интиқол дода мешавад.

/рамзи коркарди мубодила:

@bot.message_handler(фармонҳо=['мубодила']) def exchange_command(паём): клавиатура = telebot.types.InlineKeyboardMarkup() keyboard.row(telebot.types.InlineKeyboardButton('USD', callback_data='даст-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:

Боти Telegram дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

Қадами 7: Навиштани коркардкунанда барои тугмаҳои дарунсохташудаи клавиатура

Бастаи pyTelegramBot Api дорои функсияи ороишгари @bot.callback_query_handler мебошад. Ин ҷузъ барои тарҷумаи занги бозгашт ба функсия тарҳрезӣ шудааст - API зангро боз мекунад ва аз нав эҷод мекунад. Чунин навишта шудааст:

@bot.callback_query_handler (функ = занги ламбда: Дуруст) def iq_callback(пурсиш): маълумот = query.data, агар data.startswith('get-'): get_ex_callback(пурсиш)

Биёед усули get_ex_callback-ро низ нависем:

def get_ex_callback(queery): 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, 'навиштан') ex = pb.get_exchange(кодиси собиқ) bot.send_message(message.chat.id, serialize_ex(собиқ), reply_markup=get_update_keyboard ), parse_mode='HTML')

Дар ҳоле ки чатбот натиҷаи дархостро аз бонк мегирад API, мехмон навиштачоти «чидани паём»-ро мебинад. Чунин ба назар мерасад, ки шахси воқеӣ ҷавоб медиҳад. Барои дар экран намоиш додани чунин нишондиҳанда ба шумо лозим меояд, ки сатрҳои ҳолати вурудро илова кунед. Баъдан, мо get_exchange -ро истифода мебарем - бо ёрии он, барнома нишонаи асъорро (рубль, евро ё доллар) мегирад. send_message усулҳои иловагиро истифода мебарад: serialize_ex асъорро ба формати дигар табдил медиҳад ва get_update_keyboard тугмаҳои нармафзорро насб мекунад, ки маълумотро навсозӣ мекунанд ва маълумоти бозори асъорро ба чатҳои дигар мефиристанд.

Биёед кодро барои get_update_keyboard нависед. Ду тугмаро бояд зикр кард - t ва e барои намуд ва мубодила мебошанд. Элементи switch_inline_query барои тугмаи Share лозим аст, то корбар метавонад аз чанд чат интихоб кунад. Меҳмон метавонад интихоб кунад, ки қурби ҷории доллар, рубл ё евроро ба кӣ фиристад.

def get_update_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 ('Share', switch_inline_query=ex['ccy']) ) баргардонидани клавиатура

Баъзан шумо бояд бубинед, ки қурби асъор дар як муддати кӯтоҳ чӣ қадар тағйир ёфтааст. Биёед ду усулро барои тугмаи Навсозӣ нависед, то корбарон курсҳоро дар муқоиса бубинанд.

Фарқи байни қурбҳо тавассути параметри diff ба сериализатор интиқол дода мешавад.

Усулҳои муқарраршуда танҳо пас аз навсозии маълумот кор мекунанд, онҳо ба намоиши аввалини курс таъсир намерасонанд.

def serialize_ex (ex_json, фарқият = Ҳеҷ): натиҷа = '' + 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' else: result += 'nSell: ' + ex_json['sale'] + 'n' натиҷаро бармегардонад def serialize_exchange_diff(фарқ): натиҷа = '' агар фарқият > 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( 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 дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

Қадами 8: Татбиқи дастгоҳи тугмаи навсозӣ

Биёед коди коркарди амалҳоро бо тугмаи Навсозӣ нависед ва ба он қисми iq_callback_method -ро илова кунед. Вақте ки ҷузъҳои барнома бо параметри get оғоз мешаванд, шумо бояд get_ex_callback нависед. Дар дигар ҳолатҳо, мо JSON-ро таҳлил мекунем ва кӯшиш мекунем, ки калиди t-ро гирем.

@bot.callback_query_handler(функ=занг lambda: True) def iq_callback(query): data = query.data if data.startswith('get-'): get_ex_callback(query) дигар: кӯшиш кунед: if json.loads(data)[ 't'] == 'u': edit_message_callback(queery) ба истиснои ValueError: гузариш

Агар 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(queery): data = json.loads(query.data)['e'] exchange_now = pb.get_exchange(data['c']) матн = serialize_ex(exchange_now, get_exchange_diff(get_ex_from_iq_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'sage e-line. : 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(охирин, ҳозир): бозгашт { 'sale_diff': шино ("%.6f" % (шино(ҳоло['фурӯш'])) - шино (охирин['фурӯш']))), 'buy_diff': шино ("%.6f" % (шино кардан(ҳоло['харидани']) - шинокунанда(охирин['харидани']))) }

Охирин, get_edited_signature, вақти охирини навсозии курсро нишон медиҳад.

def get_edited_signature(): бозгашт 'Навсозӣ ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME + ')'

Дар натиҷа, паёми навшуда аз бот бо қурби мӯътадил чунин ба назар мерасад:

Боти Telegram дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

Вақте ки курс тағир меёбад, фарқияти байни арзишҳо дар паём аз сабаби параметрҳои муқарраршуда нишон дода мешаванд.

Боти Telegram дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

Қадами 9: Амалисозии режими воридшуда

Реҷаи дарунсохт барои зуд фиристодани маълумот аз барнома ба ҳар чат лозим аст - акнун ба шумо лозим нест, ки ботро ба сӯҳбат ҳамчун иштирокчӣ илова кунед. Вақте ки корбари Telegram номи ботро бо аломати @ дар пеши он ворид мекунад, имконоти табдил бояд дар болои хати вуруд пайдо шаванд. Агар шумо яке аз ҷузъҳоро пахш кунед, бот ба сӯҳбат бо натиҷаҳо ва тугмаҳои навсозӣ ва ирсоли маълумот паём мефиристад. Номи ирсолкунанда дорои сарлавҳаи "тавассути ".

InlineQuery тавассути китобхона ба query_text интиқол дода мешавад. Рамз функсияи answer_line-ро барои дарёфти натиҷаҳои ҷустуҷӯ ҳамчун массиви маълумот ва унсури inline_query_id истифода мебарад. Мо get_exchanges-ро истифода мебарем, то бот дар асоси дархост якчанд асъорро пайдо кунад.

@bot.inline_handler(func=query 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(мубодилаҳо): натиҷа = [] барои exc дар мубодила: result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextMessaget ( serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Табдил ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 ) ) натиҷаи бозгашт

Ҳоло, агар шумо нависед @ ва фосила дар сатр, натиҷаҳои ҷустуҷӯ дар экран пайдо мешаванд - имконоти табдил додан ба се асъори дастрас.

Боти Telegram дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

Истифодабарандагон метавонанд бо ворид кардани асъори дилхоҳ натиҷаҳоро филтр кунанд.

Пас аз пахш кардани асъори дилхоҳ аз рӯйхат, чат ҳамон паёмеро мегирад, ки корбарони бот мегиранд. Шумо инчунин метавонед тугмаи Навсозиро истифода баред. Тасвири зер паёми навшудаи тавассути бот фиристодашударо нишон медиҳад:

Боти Telegram дар Python. Дастури мукаммал барои навиштани бот бо қурби асъор аз сифр

хулоса

Акнун шумо медонед, ки чӣ тавр барои Telegram бот эҷод кунед. Шумо метавонед ба барномаи худ асбобҳои муфидро илова кунед: тугмаҳо барои навсозӣ ва фиристодани натиҷа ба корбарони дигари мессенҷер ва режими дарунсохт, ки ба шумо имкон медиҳад, ки функсияҳои бот берун аз сӯҳбат бо он истифода баред. Дар асоси ин дастур, шумо метавонед ягон боти оддиро бо дигар вазифаҳо эҷод кунед - на танҳо боти, ки қурби асъорро нишон медиҳад. Натарсед, ки бо китобхонаҳо, APIҳо ва кодҳо озмоиш кунед, то як ёвари автоматикунонидашуда эҷод кунед, ки бо муштариён дар Telegram сӯҳбат кунад ва робитаи шахсони манфиатдорро бо ширкат мустаҳкам кунад.

1 Comment

  1. Фантастика нашр

Дин ва мазҳаб