Telegram բոտը Python-ում. Զրո փոխարժեքներով բոտ գրելու ամբողջական ուղեցույց

Telegram-ում բոտերը ծրագրեր են, որոնք օգնում են կապ հաստատել լսարանի հետ կամ պարզեցնել գործողությունները, որոնք նախկինում պետք է կատարվեին ձեռքով: Այս ծրագրերը գրված են հատուկ մեսենջեր հարթակի համար։ Բոտերն աշխատում են այսպես՝ օգտատերը մուտքագրման տողով հրաման է ուղարկում, իսկ համակարգը պատասխանում է տեքստային կամ ինտերակտիվ հաղորդագրությամբ։ Երբեմն ծրագիրը նույնիսկ ընդօրինակում է իրական մարդու գործողությունները. նման բոտն ավելի մեծ վստահություն է ներշնչում հաճախորդների շրջանում:

Օգտագործողների ավտոմատ աջակցության համակարգերի մի քանի տեսակներ կան: Որոշ բոտեր պարզապես շփվում են հաճախորդների հետ, մյուսները պարբերաբար տեղեկատվություն են տրամադրում։ Անհնար է հստակորեն բաժանել ծրագրերը տեսակների. մշակողները հաճախ համատեղում են մի քանի գործառույթ մեկ բոտում:

Դուք կարող եք գրել պարզ բոտ Telegram-ի համար՝ ինտերակտիվ տարրերով էկրանի կոճակների տեսքով 9 քայլով։ Եկեք մանրամասն նայենք դրանցից յուրաքանչյուրին և պատասխանենք մի քանի հարցի.

  • ինչպես սկսել բոտ;
  • ինչպես գրանցել ներկառուցված ստեղնաշար մեկ կամ մի քանի կոճակներից;
  • ինչպես ծրագրավորել կոճակները ցանկալի գործառույթների համար;
  • ինչ է ներկառուցված ռեժիմը և ինչպես կարգավորել այն գոյություն ունեցող բոտի համար:

Քայլ 0. տեսական նախապատմություն Telegram bots API-ի մասին

Telegram բոտերի ստեղծման համար օգտագործվող հիմնական գործիքը HTML Application Programming Interface կամ 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{ ok: ճշմարիտ, արդյունք. { id: 231757398, first_name: «Exchange Rate Bot», օգտվողի անունը. «exchangetestbot» } }

Արդյունքը կստացվի, եթե ok հավասար է ճիշտ. Հակառակ դեպքում համակարգը ցույց կտա սխալ:

Բոտերում հատուկ հաղորդագրություններ ստանալու երկու եղանակ կա. Երկու մեթոդներն էլ արդյունավետ են, բայց հարմար են տարբեր դեպքերում։ Հաղորդագրություններ ստանալու համար կարող եք ձեռքով հարցում գրել getUpdates մեթոդով. ծրագիրը էկրանին կցուցադրի Թարմացնել տվյալների զանգվածը: Հարցումները պետք է պարբերաբար ուղարկվեն, յուրաքանչյուր զանգված վերլուծելուց հետո ուղարկումը կրկնվում է։ Օֆսեթը պարամետր է, որը որոշում է բաց թողնված գրառումների քանակը նոր արդյունք բեռնելուց առաջ՝ ստուգված օբյեկտների նորից հայտնվելուց խուսափելու համար: GetUpdates մեթոդի առավելությունները կգործեն, եթե՝

  • HTTPS-ը կարգավորելու միջոց չկա.
  • օգտագործվում են բարդ սցենարային լեզուներ.
  • բոտի սերվերը ժամանակ առ ժամանակ փոխվում է.
  • բոտը բեռնված է օգտատերերով:

Երկրորդ մեթոդը, որը կարելի է գրել օգտվողի հաղորդագրություններ ստանալու համար, setWebhook-ն է: Այն օգտագործվում է մեկ անգամ, կարիք չկա անընդհատ նոր հարցումներ ուղարկել։ Webhook-ը տվյալների թարմացումներ է ուղարկում նշված URL-ին: Այս մեթոդը պահանջում է SSL վկայագիր: Webhook-ը օգտակար կլինի հետևյալ դեպքերում.

  • օգտագործվում են վեբ ծրագրավորման լեզուներ;
  • բոտը ծանրաբեռնված չէ, շատ օգտվողներ չկան.
  • սերվերը չի փոխվում, ծրագիրը երկար ժամանակ մնում է նույն սերվերի վրա։

Հետագա հրահանգներում մենք կօգտագործենք getUpdates-ը:

@BotFather Telegram ծառայությունը նախատեսված է չաթի բոտեր ստեղծելու համար։ Հիմնական կարգավորումները սահմանվում են նաև այս համակարգի միջոցով. BotFather-ը կօգնի ձեզ նկարագրություն կազմել, տեղադրել պրոֆիլի լուսանկար, ավելացնել աջակցության գործիքներ: Գրադարաններ՝ Telegram բոտերի համար HTML հարցումների հավաքածուներ, հասանելի են ինտերնետում, դրանք բավականին շատ են: Օրինակ ծրագիրը ստեղծելիս օգտագործվել է 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(): if ccy_key == exc['ccy']: return exc return False def get_exchanges(ccy_pattern): արդյունք = [] ccy_pattern = re.escape(ccy_pattern) + '.*' exc in load_exchange(): եթե re.match(ccy_pattern, exc['ccy'], re.IGNORECASE) չէ None. result.append(exc) վերադարձնում է արդյունքը

Ծրագիրը կարող է տալ հետևյալ պատասխանը նշված հարցումներին.

[ { ccy:"USD", base_ccy:"UAH", buy:"25.90000", sale:"26.25000" }, {ccy:"EUR", base_ccy:"UAH", գնել:"29.10000", վաճառք:"29.85000 " }, { ccy:"RUR", base_ccy:"UAH", buy:"0.37800", sale:"0.41800" }, { ccy:"BTC", base_ccy:"USD", գնել:"11220.0384", վաճառք: "12401.0950" } ]

Քայլ 2. Ստեղծեք Telegram Bot @BotFather-ի հետ

Կարող եք ստեղծել հաղորդագրություններ ստանալու և դրանց պատասխանելու ծրագիր՝ օգտագործելով @BotFather ծառայությունը։ Գնացեք նրա Telegram-ի էջ և մուտքագրեք /newbot հրամանը։ Չաթում կհայտնվեն հրահանգներ, որոնց համաձայն նախ պետք է գրել բոտի անունը, իսկ հետո՝ հասցեն։ Երբ բոտի հաշիվը ստեղծվի, էկրանին կհայտնվի ողջույնի հաղորդագրություն, որը պարունակում է նշան: Հետագա կազմաձևման համար օգտագործեք հետևյալ հրամանները.

  • /setdescription – նկարագրություն;
  • /setabouttext – տեղեկատվություն նոր բոտի մասին;
  • /setuserpic – պրոֆիլի լուսանկար;
  • /setinline – inline ռեժիմ;
  • /setcommands – հրամանների նկարագրություն:

Կազմաձևման վերջին քայլում մենք նկարագրում ենք /help և /exchange: Երբ բոլոր քայլերն ավարտված են, ժամանակն է անցնել կոդավորմանը:

Քայլ 3. Բոտի կարգավորում և գործարկում

Եկեք ստեղծենք config.py ֆայլ: Դրանում դուք պետք է նշեք եզակի բոտի կոդը և ժամային գոտին, որտեղ ծրագիրը կգտնի տեղեկատվություն:

ՏՈԿԵՆ = '' # փոխարինել ձեր բոտի նշանովTIMEZONE = «Եվրոպա/Կիև» TIMEZONE_COMMON_NAME = «Կիև»

Այնուհետև մենք ստեղծում ենք մեկ այլ ֆայլ՝ նախկինում գրված pb.py-ի, գրադարանների և այլ անհրաժեշտ բաղադրիչների ներմուծմամբ։ Բացակայող գրադարանները տեղադրվում են փաթեթի կառավարման համակարգից (pip):

ներմուծում telebotimport configimport pbimport datetimeimport pytzimport jsonimport հետագծում 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 Command Handler-ը

Եթե ​​նախորդ բոլոր քայլերը ճիշտ են կատարվում, ապա բոտը սկսել է աշխատել։ Ծրագիրը պարբերաբար հարցումներ է առաջացնում, քանի որ այն օգտագործում է getUpdates մեթոդը: None_stop տարրով տողից առաջ մեզ անհրաժեշտ է կոդ, որը մշակում է /start հրամանը.

@bot.message_handler(commands=['start']) def start_command(հաղորդագրություն): bot.send_message( message.chat.id, 'Greetings! Ես կարող եմ ձեզ ցույց տալ փոխարժեքները.n' + 'Փոխարժեքները ստանալու համար սեղմեք / exchange.n' + 'Օգնություն ստանալու համար սեղմեք /help' )

RџSЂRё հրամաններ=['սկիզբ'] հավասար է True-ին start_command-ը կոչվում է: Հաղորդագրության բովանդակությունը գնում է այնտեղ: Հաջորդը, դուք պետք է իրականացնեք ուղարկելու գործառույթը_հաղորդագրություն որոշակի հաղորդագրության հետ կապված:

Քայլ 5. Ստեղծեք /help Command Handler

/help հրամանը կարող է իրականացվել որպես կոճակ: Սեղմելով դրա վրա՝ օգտատերը կտեղափոխվի ծրագրավորողի Telegram հաշիվ։ Կոճակին տվեք անուն, օրինակ՝ «Հարցրեք մշակողին»: Սահմանեք reply_markup պարամետրը, որը վերահղում է օգտվողին դեպի հղում, send_message մեթոդի համար: Կոդում գրենք ստեղնաշարը ստեղծող պարամետրը (InlineKeyboardMarkup): Ձեզ անհրաժեշտ է ընդամենը մեկ կոճակ (InlineKeyboardButton):

Հրամանների մշակման վերջնական կոդը հետևյալն է.

@bot.message_handler(հրամաններ=['օգնություն']) 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=keyboard )

Կոդի գործողություն Telegram չաթում.

Telegram բոտը Python-ում. Զրո փոխարժեքներով բոտ գրելու ամբողջական ուղեցույց

Քայլ 6. /exchange Command Handler-ի ավելացում

Այս քայլն անհրաժեշտ է զրուցարանում առկա արժույթների խորհրդանիշներով կոճակներ ցուցադրելու համար: Ընտրանքներով էկրանի ստեղնաշարը կօգնի ձեզ խուսափել սխալներից: PrivatBank-ը տեղեկատվություն է տրամադրում ռուբլու, դոլարի և եվրոյի վերաբերյալ: InlineKeyboardButton տարբերակը աշխատում է այսպես.

  1. Օգտագործողը սեղմում է ցանկալի նշումով կոճակը:
  2. getUpdates-ը ստանում է հետ կանչ (CallbackQuery):
  3. Հայտնի է դառնում, թե ինչպես վարվել ստեղնաշարի վրա՝ սեղմված կոճակի մասին տեղեկություն է փոխանցվում:

/փոխանակման կարգավորիչի կոդը.

@bot.message_handler(հրամաններ=['փոխանակում']) def exchange_command(հաղորդագրություն). ստեղնաշար = 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 բոտը Python-ում. Զրո փոխարժեքներով բոտ գրելու ամբողջական ուղեցույց

Քայլ 7. Ներկառուցված ստեղնաշարի կոճակների համար կարգավորիչ գրելը

pyTelegramBot Api փաթեթը պարունակում է @bot.callback_query_handler decorator ֆունկցիան: Այս բաղադրիչը նախատեսված է հետադարձ զանգը ֆունկցիայի վերածելու համար. API-ն բացում և նորից ստեղծում է զանգը: Այն գրված է այսպես.

@bot.callback_query_handler(func=lambda զանգ. True) def iq_callback(հարցում): data = query.data if data.startswith('get-'): get_ex_callback (հարցում)

Գրենք նաև get_ex_callback մեթոդը.

def get_ex_callback(հարցում). 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_key ), parse_mode='HTML')

Մինչ չաթբոտը բանկից ստանում է հարցման արդյունքը API, այցելուն տեսնում է «հաղորդագրություն մուտքագրում» մակագրությունը։ Կարծես իրական մարդ է պատասխանում. Էկրանին նման ցուցիչ ցուցադրելու համար ձեզ հարկավոր է մուտքագրման կարգավիճակի գծեր ավելացնել: Հաջորդը, մենք կօգտագործենք get_exchange – նրա օգնությամբ ծրագիրը կստանա արժույթի նշում (ռուբլի, եվրո կամ դոլար): send_message-ն օգտագործում է լրացուցիչ մեթոդներ. serialize_ex-ը փոխակերպում է արժույթը այլ ձևաչափի, իսկ get_update_keyboard-ը տեղադրում է փափուկ ստեղներ, որոնք թարմացնում են տեղեկատվությունը և ուղարկում արժույթի շուկայի տվյալները այլ զրույցների:

Եկեք գրենք get_update_keyboard-ի կոդը։ Պետք է նշել երկու կոճակ՝ t և e-ն նշանակում է տեսակ և փոխանակում: Share կոճակի 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': նախկին ['գնել'], 's': նախկին ['վաճառք'], 'c': նախկին ['ccy'] } }).replace(' ', '') ), telebot.types.InlineKeyboardButton ('Share', switch_inline_query=ex['ccy']) ) վերադարձնել ստեղնաշար

Երբեմն պետք է տեսնել, թե որքան է փոխարժեքը փոխվել կարճ ժամանակում։ Եկեք Թարմացնել կոճակի համար գրենք երկու մեթոդ, որպեսզի օգտվողները կարողանան համեմատության մեջ տեսնել դասընթացները:

Փոխարժեքների միջև տարբերությունը փոխանցվում է սերիալիզատորին diff պարամետրի միջոցով:

Նշանակված մեթոդներն աշխատում են միայն տվյալների թարմացումից հետո, դրանք չեն ազդի դասընթացի առաջին ցուցադրման վրա։

def serialize_ex(ex_json, diff=Ոչ մեկը): արդյունք = '' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':nn' + 'Գնել՝ ' + ex_json['գնել'] եթե տարբերվում է՝ արդյունք += ' ' + serialize_exchange_diff(diff['buy_diff']) + 'n' + 'Վաճառել՝ ' + ex_json['sale'] + ' ' + serialize_exchange_diff(diff['sale_diff']) + 'n' other: 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( տարբերություն)[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">)' վերադարձի արդյունքը

Պատկերացրեք, որ այցելուն ցանկանում է իմանալ դոլարի փոխարժեքը։ Ահա թե ինչ է տեղի ունենում, եթե հաղորդագրության մեջ ընտրեք ԱՄՆ դոլար.

Telegram բոտը Python-ում. Զրո փոխարժեքներով բոտ գրելու ամբողջական ուղեցույց

Քայլ 8. Թարմացման կոճակի մշակման ներդրում

Եկեք Update կոճակով գրենք գործողությունների մշակման կոդը և դրան ավելացնենք iq_callback_method մասը։ Երբ ծրագրի տարրերը սկսվում են get պարամետրով, դուք պետք է գրեք get_ex_callback: Այլ իրավիճակներում մենք վերլուծում ենք JSON-ը և փորձում ենք ստանալ t բանալին:

@bot.callback_query_handler(func=lambda զանգ. True) def iq_callback(հարցում): data = query.data if data.startswith('get-'): get_ex_callback(հարցում) else: try: if json.loads(data)[ 't'] == 'u': edit_message_callback(հարցում) բացառությամբ 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(հարցում). data = json.loads(query.data)['e'] exchange_now = pb.get_exchange(տվյալներ['c']) text = serialize_ex(change_now, get_exchange_diff(get_ex_from_iq_ta(owta))_ + 'n' + get_edited_signature() if query.message. bot.edit_message_text( text, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_modeif='HTML_idline') : 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': float("%.6f" % (float(այժմ['sale']) - float(last['sale']))), 'buy_diff': float ("%.6f" % (float(այժմ['գնել']) - float(վերջին['գնել']))) }

Վերջինը՝ 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-ին: Որոնման արդյունքները որպես տվյալների զանգված և inline_query_id տարրը ստանալու համար կոդը օգտագործում է answer_line ֆունկցիան: Մենք օգտագործում ենք get_exchanges-ը, որպեսզի բոտը խնդրանքով գտնի մի քանի արժույթ:

@bot.inline_handler(func=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(exchanges): result = [] exc-ի համար փոխանակումներում. result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextnts ( serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1) ) վերադարձի արդյունքը

Հիմա, եթե գրեք @ և տողում բացատ, էկրանին կհայտնվեն որոնման արդյունքները՝ երեք հասանելի արժույթների փոխարկելու տարբերակներ:

Telegram բոտը Python-ում. Զրո փոխարժեքներով բոտ գրելու ամբողջական ուղեցույց

Օգտագործողները կարող են զտել արդյունքները՝ մուտքագրելով ցանկալի արժույթը:

Ցանկից ցանկալի արժույթի վրա սեղմելուց հետո չաթը ստանում է նույն հաղորդագրությունը, որը ստանում են բոտի օգտատերերը: Կարող եք նաև օգտագործել «Թարմացնել» կոճակը: Ստորև բերված պատկերը ցույց է տալիս բոտի միջոցով ուղարկված թարմացված հաղորդագրությունը.

Telegram բոտը Python-ում. Զրո փոխարժեքներով բոտ գրելու ամբողջական ուղեցույց

եզրափակում

Այժմ դուք գիտեք, թե ինչպես ստեղծել բոտ Telegram-ի համար: Դուք կարող եք ձեր ծրագրին ավելացնել օգտակար գործիքներ՝ կոճակներ թարմացնելու և արդյունքը մեսենջերի այլ օգտվողներին ուղարկելու համար և ներկառուցված ռեժիմ, որը թույլ է տալիս օգտագործել բոտի գործառույթները նրա հետ չաթից դուրս: Այս հրահանգի հիման վրա դուք կարող եք ստեղծել ցանկացած պարզ բոտ այլ գործառույթներով, ոչ միայն այն, որը ցույց կտա փոխարժեքները: Մի վախեցեք փորձարկել գրադարանների, API-ների և կոդերի հետ՝ ավտոմատացված օգնական ստեղծելու համար, որը կզրուցի հաճախորդների հետ Telegram-ում և կամրապնդի հետաքրքրված մարդկանց կապը ընկերության հետ:

Ինչպես 1

  1. Ֆանտաստիկ հրապարակում

Թողնել գրառում