Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

Bots hauv Telegram yog cov kev pab cuam uas pab tsim kev sib cuag nrog cov neeg tuaj saib lossis ua kom yooj yim cov kev ua uas yav tas los yuav tsum tau ua manually. Cov kev pab cuam no tau sau tshwj xeeb rau tus tub txib platform. Bots ua haujlwm li no: tus neeg siv xa cov lus txib los ntawm kab nkag, thiab lub kaw lus teb nrog cov ntawv nyeem lossis cov lus sib tham. Qee lub sij hawm qhov kev zov me nyuam txawm coj tus cwj pwm ntawm tus neeg tiag tiag - xws li bot txhawb kev ntseeg siab ntawm cov neeg siv khoom.

Muaj ntau ntau hom tshuab rau kev pab tsis siv neeg rau cov neeg siv. Qee cov bots tsuas yog sib txuas lus nrog cov neeg siv khoom, lwm tus muab cov ntaub ntawv tsis tu ncua. Nws yog tsis yooj yim sua kom meej meej faib cov kev pab cuam rau hauv hom - developers feem ntau muab ob peb functions nyob rau hauv ib tug bot.

Koj tuaj yeem sau ib qho yooj yim bot rau Telegram nrog cov ntsiab lus sib tham hauv daim ntawv ntawm cov khawm on-screen hauv 9 kauj ruam. Cia peb saib ntawm lawv txhua tus kom meej thiab teb ob peb nqe lus nug:

  • yuav ua li cas pib ib tug bot;
  • yuav ua li cas rau npe ib lub keyboard built-in los ntawm ib lossis ntau lub nyees khawm;
  • yuav ua li cas rau program cov nyees khawm rau cov haujlwm uas xav tau;
  • dab tsi yog hom inline thiab yuav teeb tsa li cas rau tus bot uas twb muaj lawm.

Kauj ruam 0: theoretical keeb kwm yav dhau txog Telegram bots API

Cov cuab yeej tseem ceeb siv los tsim Telegram bots yog HTML Application Programming Interface, lossis HTML API. Lub ntsiab lus no lees txais cov neeg tuaj xyuas thov thiab xa cov lus teb rau hauv daim ntawv ntawm cov ntaub ntawv. Cov qauv tsim npaj ua kom yooj yim rau kev ua haujlwm ntawm qhov program. Txhawm rau sau bot rau Telegram, koj yuav tsum siv email chaw nyob: https://api.telegram.org/bot/METHOD_NAME

Rau kev ua haujlwm kom raug ntawm bot, kuj xav tau ib lub token - ua ke ntawm cov cim uas tiv thaiv qhov kev pab cuam thiab qhib kev nkag mus rau nws rau cov neeg tsim khoom ntseeg siab. Txhua tus token yog qhov tshwj xeeb. Cov hlua yog muab rau bot thaum tsim. Cov txheej txheem tuaj yeem sib txawv: getUpdates, getChat thiab lwm yam. Qhov kev xaiv ntawm txoj kev nyob ntawm seb qhov algorithm cov neeg tsim khoom xav tau los ntawm bot. Token piv txwv:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Bots siv GET thiab POST thov. Cov txheej txheem tsis feem ntau yuav tsum tau ntxiv - piv txwv li, thaum txoj kev sendMessage yuav tsum xa tus ID sib tham thiab qee cov ntawv. Cov kev ua kom zoo tuaj yeem dhau los ua cov lus nug URL siv daim ntawv thov / x-www-form-urlencoded lossis ntawm daim ntawv thov-json. Cov txheej txheem no tsis haum rau rub tawm cov ntaub ntawv. UTF-8 encoding kuj yuav tsum tau. Los ntawm kev xa daim ntawv thov mus rau API, koj tuaj yeem tau txais cov txiaj ntsig hauv JSON hom. Ua tib zoo saib ntawm qhov kev pab cuam cov lus teb rau kev muab cov ntaub ntawv los ntawm getME txoj kev:

Tau txais https://api.telegram.org/bot/getMe{ ok: true, result: { id: 231757398, first_name: "Exchange Rate Bot", username: "exchangetestbot" } }

Qhov tshwm sim yuav tau yog tias ok sib npaug muaj tseeb. Txwv tsis pub, lub kaw lus yuav qhia qhov yuam kev.

Muaj ob txoj hauv kev kom tau txais cov lus kev cai hauv bots. Ob txoj kev siv tau zoo, tab sis tsim nyog nyob rau hauv qhov sib txawv. Kom tau txais cov lus, koj tuaj yeem sau ntawv thov nrog tus txheej txheem getUpdates - qhov kev zov me nyuam yuav tso tawm cov ntaub ntawv hloov tshiab ntawm qhov screen. Kev thov yuav tsum tau xa tsis tu ncua, tom qab tshuaj xyuas txhua array, xa rov qab. Offset yog ib qho kev ntsuas uas txiav txim siab tus naj npawb ntawm cov ntaub ntawv hla dhau ua ntej thauj cov txiaj ntsig tshiab kom tsis txhob rov tshwm sim ntawm cov khoom kuaj xyuas. Cov txiaj ntsig ntawm getUpdates txoj kev yuav los ua si yog tias:

  • tsis muaj txoj hauv kev los teeb tsa HTTPS;
  • complex scripting languages ​​yog siv;
  • tus neeg rau zaub mov bot hloov qee lub sijhawm;
  • bot yog loaded nrog cov neeg siv.

Txoj kev thib ob uas tuaj yeem sau tau kom tau txais cov neeg siv cov lus yog setWebhook. Nws yog siv ib zaug, tsis tas yuav xa cov lus thov tshiab. Lub webhook xa cov ntaub ntawv hloov tshiab mus rau qhov teev URL. Txoj kev no yuav tsum muaj daim ntawv pov thawj SSL. Webhook yuav muaj txiaj ntsig zoo hauv cov xwm txheej no:

  • web programming lus siv;
  • lub bot tsis overloaded, tsis muaj ntau tus neeg siv;
  • tus neeg rau zaub mov tsis hloov, qhov kev zov me nyuam tseem nyob rau tib lub server rau lub sijhawm ntev.

Hauv cov lus qhia ntxiv, peb yuav siv getUpdates.

Qhov kev pabcuam @BotFather Telegram yog tsim los tsim kev sib tham bots. Cov chaw tseem ceeb kuj tau teeb tsa los ntawm cov kab ke no - BotFather yuav pab koj ua cov lus piav qhia, tso duab profile, ntxiv cov cuab yeej txhawb nqa. Cov tsev qiv ntawv - cov txheej txheem ntawm HTML thov rau Telegram bots - muaj nyob hauv Is Taws Nem, muaj ntau ntawm lawv. Thaum tsim cov qauv kev pab cuam, pyTelegramBotApi tau siv.

Kauj Ruam 1: Ua raws li Kev Thov Txiaj Ntsig

Ua ntej koj yuav tsum sau cov cai uas ua cov lus nug. Peb yuav siv thaum sau PrivatBank API, hauv qab no yog qhov txuas rau nws: https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5. Koj yuav tsum siv cov txheej txheem no hauv koj cov cai:

  • load_exchange - pom cov nqi pauv thiab qhia cov ntaub ntawv encoded;
  • get_exchange - qhia cov ntaub ntawv hais txog ib qho txiaj ntsig tshwj xeeb;
  • get_exchanges - qhia cov npe ntawm cov txiaj ntsig raws li tus qauv.

Yog li ntawd, cov cai hauv cov ntaub ntawv pb.py zoo li no:

import re import thov import json URL = 'https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5' def load_exchange(): rov json.loads(requests.get(URL).text) def get_exchange(ccy_key ): rau exc hauv load_exchange(): yog ccy_key == exc['ccy']: xa exc rov False def get_exchanges(ccy_pattern): result = [] ccy_pattern = re.escape(ccy_pattern) + '.*' rau exc hauv load_exchange(): yog re.match(ccy_pattern, exc['ccy'], re.IGNORECASE) tsis yog Tsis muaj: result.append(exc) rov tshwm sim

Qhov kev zov me nyuam tuaj yeem muab cov lus teb hauv qab no rau cov lus thov tshwj xeeb:

[ { 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", buy:"0.37800", sale:"0.41800" }, {ccy:"BTC", base_ccy:"USD", buy:"11220.0384", sale: "12401.0950" }]

Kauj ruam 2: Tsim Telegram Bot nrog @BotFather

Koj tuaj yeem tsim ib qho kev pab cuam kom tau txais cov lus thiab teb rau lawv siv @BotFather kev pabcuam. Mus rau nws nplooj ntawv Telegram thiab nkag mus rau /newbot hais kom ua. Cov lus qhia yuav tshwm sim hauv kev sib tham, raws li qhov koj yuav tsum tau sau npe ntawm bot ua ntej, thiab tom qab ntawd nws qhov chaw nyob. Thaum tsim tus account bot, cov lus txais tos uas muaj lub token yuav tshwm sim ntawm qhov screen. Rau kev teeb tsa ntxiv, siv cov lus txib no:

  • /setdescription – piav qhia;
  • /setabouttext - cov ntaub ntawv hais txog bot tshiab;
  • /setuserpic - daim duab profile;
  • /setinline – inline hom;
  • /setcommands - piav qhia ntawm cov lus txib.

Nyob rau theem kawg configuration, peb piav qhia txog / pab thiab / pauv. Thaum tag nrho cov kauj ruam tau ua tiav, nws yog lub sij hawm mus rau coding.

Kauj ruam 3: Teeb tsa thiab qhib lub bot

Cia peb tsim cov ntaub ntawv config.py. Nyob rau hauv nws, koj yuav tsum tau qhia kom meej lub cim bot code thiab lub sij hawm cheeb tsam nyob rau hauv uas qhov kev pab cuam yuav nrhiav tau cov ntaub ntawv.

TOKEN = '' # hloov nrog koj bot's tokenTIMEZONE = 'Tebchaws Europe/Kiev' TIMEZONE_COMMON_NAME = 'Kiev'

Tom ntej no, peb tsim lwm cov ntaub ntawv nrog cov ntshuam ntawm cov ntawv sau yav dhau los pb.py, cov tsev qiv ntawv thiab lwm yam khoom tsim nyog. Cov tsev qiv ntawv uas ploj lawm yog ntsia los ntawm lub pob tswj qhov system (pip).

import telebotimport configimport pbimport datetimeimport pytzimport jsonimport traceback P_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = config.TIMEZONE_COMMON_NAME

Cia peb siv cov ntsiab lus ntawm pyTelegramBotApi los tsim bot. Peb xa tus txais token siv cov cai hauv qab no:

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

Qhov none_stop parameter xyuas kom meej tias kev thov raug xa mus tas li. Kev ua haujlwm ntawm qhov parameter yuav tsis cuam tshuam los ntawm kev ua yuam kev.

Kauj ruam 4: Sau qhov /start Command Handler

Yog tias tag nrho cov kauj ruam dhau los ua tiav lawm, bot tau pib ua haujlwm. Qhov kev pab cuam tsim kev thov tsis tu ncua vim nws siv txoj kev getUpdates. Ua ntej txoj kab nrog cov ntsiab lus none_stop, peb xav tau ib daim ntawm cov cai uas ua rau / pib hais kom ua:

@bot.message_handler(commands=['start']) def start_command(message): bot.send_message(message.chat.id, 'Nyob zoo! Kuv tuaj yeem qhia koj cov nqi sib pauv.n' + 'Kom tau txais cov nqi sib pauv xovxwm / exchange.n' + 'Kom tau txais kev pab nias / pab.')

RџSЂRё commands = ['start'] sib npaug rau qhov tseeb start_command hu ua. Cov ntsiab lus ntawm cov lus mus rau ntawd. Tom ntej no, koj yuav tsum tau siv qhov kev xa tawm_ lus nyob rau hauv hais txog ib qho lus.

Kauj ruam 5: Tsim ib tug / pab hais kom ua Handler

Cov lus txib / pab tuaj yeem ua raws li lub pob. Los ntawm txhaj rau nws, tus neeg siv yuav raug coj mus rau tus tsim tawm tus account Telegram. Muab lub pob lub npe, xws li "Nug tus tsim tawm". Teem lub reply_markup parameter, uas redirects tus neeg siv mus rau ib tug txuas, rau tus send_message txoj kev. Wb sau rau hauv cov cai qhov parameter uas tsim cov keyboard (InlineKeyboardMarkup). Koj tsuas xav tau ib lub pob (InlineKeyboardButton).

Qhov kawg command handler code zoo li no:

@bot.message_handler(commands=['help']) def help_command(message): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.add( telebot.types.InlineKeyboardButton( 'Nug tus tsim tawm', url='ваша ссылка на профиль' ) ) bot.send_message(message.chat.id, '1) Kom tau txais ib daim ntawv teev cov nyiaj muaj txiaj ntsig nias /exchange.n' + '2) Nyem rau ntawm cov txiaj ntsig koj nyiam.n' + '3) Koj yuav tau txais cov lus uas muaj cov ntaub ntawv hais txog lub hauv paus thiab lub hom phiaj cov txiaj ntsig, ' + ' tus nqi yuav thiab muag tus nqi.n' + '4) Nyem "Hloov tshiab" kom tau txais cov ntaub ntawv tam sim no hais txog qhov kev thov. ' + 'Tus bot tseem yuav qhia qhov sib txawv ntawm yav dhau los thiab tam sim no pauv tus nqi.n' + '5) Lub bot txhawb inline. Hom @ nyob rau hauv ib qho kev sib tham thiab thawj tsab ntawv ntawm ib tug txiaj.', reply_markup=keyboard )

Code ua hauv Telegram tham:

Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

Kauj Ruam 6: Ntxiv qhov / sib pauv Command Handler

Cov kauj ruam no yog xav tau los tso saib cov nyees khawm nrog cov cim ntawm cov nyiaj muaj nyob hauv kev sib tham. Ib qho on-screen keyboard nrog cov kev xaiv yuav pab koj kom tsis txhob yuam kev. PrivatBank muab cov ntaub ntawv ntawm ruble, duas thiab euro. Qhov kev xaiv InlineKeyboardButton ua haujlwm zoo li no:

  1. Tus neeg siv nyem rau ntawm lub pob nrog qhov xav tau xaiv.
  2. getUpdates tau txais kev hu rov qab (CallbackQuery).
  3. Nws paub tias yuav ua li cas thiaj li tuav cov nias lub keyboard - cov ntaub ntawv hais txog lub khawm nias yog kis.

/ pauv 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, 'Nyem rau qhov txiaj ntsig ntawm kev xaiv:', reply_markup=keyboard )

Qhov tshwm sim ntawm tus lej hauv Telegram:

Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

Kauj ruam 7: Sau tus handler rau lub built-in keyboard khawm

Lub pyTelegramBot Api pob muaj cov haujlwm @bot.callback_query_handler decorator function. Cov khoom siv no yog tsim los txhais cov kev hu rov qab rau hauv kev ua haujlwm - API unwraps thiab rov tsim kev hu. Nws yog spelled li no:

@bot.callback_query_handler(func=lambda call: Tseeb) def iq_callback(query): data = query.data if data.startswith('get-'): get_ex_callback(query)

Wb kuj sau txoj kev get_ex_callback:

def get_ex_callback(query): bot.answer_callback_query(query.id) send_exchange_result(query.message, query.data[4:])

Muaj lwm txoj hauv kev - answer_callback_query. Nws pab tshem tawm cov load ntawm nias lub khawm thiab tso tawm cov txiaj ntsig ntawm qhov screen. Koj tuaj yeem xa cov lus xa mus rau send_exchange_query los ntawm kev hla qee qhov txiaj ntsig thiab Message. Wb sau 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_keyboard(ex), ), parse_mode = 'HTML' )

Thaum lub chatbot tau txais cov txiaj ntsig ntawm kev thov los ntawm lub txhab nyiaj API, tus qhua pom cov ntawv sau "typing a message". Zoo li tus neeg tiag tiag teb. Txhawm rau tso cov ntawv qhia zoo li no rau ntawm qhov screen, koj yuav tsum tau ntxiv cov kab lus nkag. Tom ntej no, peb yuav siv get_exchange - nrog rau nws cov kev pab, qhov kev pab cuam yuav tau txais lub txiaj tsim (rubles, euros los yog duas). send_message siv txoj hauv kev ntxiv: serialize_ex hloov cov txiaj mus rau lwm hom ntawv, thiab get_update_keyboard teeb tsa softkeys uas hloov kho cov ntaub ntawv thiab xa cov ntaub ntawv lag luam txiaj rau lwm cov kev sib tham.

Wb sau tus lej rau get_update_keyboard. Ob lub nyees khawm yuav tsum tau hais txog - t thiab e sawv ntsug rau hom thiab pauv. Cov khoom switch_inline_query rau lub Share khawm yog xav tau kom tus neeg siv tuaj yeem xaiv los ntawm ntau qhov kev sib tham. Tus qhua yuav tuaj yeem xaiv leej twg xa tus nqi pauv tam sim no ntawm duas, ruble lossis euro.

def get_update_keyboard(ex): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton( 'Hloov tshiab', callback_data=json.dumps({ 't': 'u', 'e': { ' b': ex['buy'], 's': ex['sale'], 'c': ex['ccy'] } }).replace(' ','') ), telebot.types.InlineKeyboardButton ('Qhia', switch_inline_query=ex['ccy']) ) rov qab keyboard

Qee lub sij hawm koj yuav tsum pom ntau npaum li cas tus nqi pauv hloov pauv hauv lub sijhawm luv luv. Cia peb sau ob txoj hauv kev rau lub pob Hloov tshiab kom cov neeg siv tuaj yeem pom cov chav kawm sib piv.

Qhov sib txawv ntawm cov nqi pauv tau dhau mus rau serializer ntawm qhov sib txawv parameter.

Cov txheej txheem tau sau tseg ua haujlwm tsuas yog tom qab cov ntaub ntawv hloov kho, lawv yuav tsis cuam tshuam rau thawj cov zaub ntawm chav kawm.

def serialize_ex(ex_json, diff=None): result = '' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':nn' + 'Buy: ' + ex_json['buy'] if diff: result += ' ' + 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 = 'yog diff> 0: result = '(' + 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">)' rov tshwm sim

Xav txog tias tus qhua xav paub txog tus nqi pauv nyiaj duas. Nov yog qhov tshwm sim yog tias koj xaiv USD hauv cov lus:

Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

Kauj Ruam 8: Ua raws li Cov Khawm Hloov Kho Tshiab

Cia peb sau cov cai rau kev ua haujlwm nrog lub pob hloov tshiab thiab ntxiv qhov iq_callback_method rau nws. Thaum cov khoom program pib nrog qhov tau txais parameter, koj yuav tsum sau get_ex_callback. Hauv lwm qhov xwm txheej, peb txheeb JSON thiab sim kom tau tus yuam sij 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: sim: yog json.loads(data)[ 't'] == 'u': edit_message_callback(query) tsuas yog ValueError: dhau

Yog tias t sib npaug koj, koj yuav tsum tau sau ib qho kev pab cuam rau edit_message_callback method. Cia peb rhuav tshem cov txheej txheem no ib kauj ruam:

  1. Rub tawm cov ntaub ntawv tshiab txog lub xeev ntawm lub lag luam txiaj (exchange_now = pb.get_exchange(data['c']).
  1. Sau cov lus tshiab los ntawm serializer nrog diff.
  2. Ntxiv kos npe (get_edited_signature).

Yog tias cov lus pib tsis hloov, hu rau edit_message_text method.

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() yog query.message: bot.edit_message_text(text, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML_message' ) : bot.edit_message_text(text, inline_message_id=query.inline_message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML' )

Wb sau tus get_ex_from_iq_data txoj kev los parse JSON:

def get_ex_from_iq_data(exc_json): rov { 'yuav': exc_json['b'], 'muag': exc_json['s'] }

Koj yuav xav tau ob peb txoj hauv kev ntxiv: piv txwv li, get_exchange_diff, uas nyeem cov ntaub ntawv qub thiab tshiab txog tus nqi ntawm cov nyiaj thiab qhia qhov txawv.

def get_exchange_diff(kawg, tam sim no): rov qab { 'sale_diff': float("%.6f" % (float(tam sim no['sale']) - float(kawg['sale'])), 'buy_diff': ntab ("%.6f" % (float(tam sim no['buy']) - float(kawg['buy']))) }

Qhov kawg, get_edited_signature, qhia lub sij hawm cov chav kawm tau hloov tshiab kawg.

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

Raws li qhov tshwm sim, cov lus tshiab los ntawm bot nrog tus nqi sib pauv ruaj khov zoo li no:

Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

Thaum cov chav kawm hloov pauv, qhov sib txawv ntawm qhov tseem ceeb tau tshwm sim hauv cov lus vim yog cov kev txwv tsis pub dhau.

Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

Kauj ruam 9: Embedded hom kev siv

Cov qauv tsim nyob rau hauv yuav tsum tau xa cov ntaub ntawv sai sai los ntawm qhov kev pab cuam mus rau ib qho kev sib tham - tam sim no koj tsis tas yuav ntxiv bot rau kev sib tham ua tus koom nrog. Thaum tus neeg siv Telegram nkag mus rau lub npe bot nrog rau @ kos npe rau pem hauv ntej ntawm nws, kev xaiv hloov pauv yuav tsum tshwm sim saum kab nkag. Yog tias koj nyem rau ntawm ib qho ntawm cov khoom, bot yuav xa lus rau kev sib tham nrog cov txiaj ntsig thiab cov nyees khawm rau kev hloov kho thiab xa cov ntaub ntawv. Tus xa lub npe yuav muaj cov kab lus "ntawm ".

InlineQuery raug xa mus rau query_text ntawm lub tsev qiv ntawv. Cov cai siv cov lus teb_line muaj nuj nqi los khaws cov txiaj ntsig tshawb fawb raws li cov ntaub ntawv array thiab cov ntsiab lus inline_query_id. Peb siv get_exchanges kom tus bot pom ntau lub txiaj ntsig ntawm kev thov.

@bot.inline_handler(func=lambda query: Tseeb) def query_text(inline_query): bot.answer_inline_query( inline_query.id, get_iq_articles(pb.get_exchanges(inline_query.query)))

Peb dhau ib qho array ntawm cov ntaub ntawv rau get_iq_articles thiaj li yuav rov qab cov khoom los ntawm InlineQueryResultArticle los ntawm txoj kev no.

def get_iq_articles(exchanges): result = [] for exc in exchanges: 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 ) rov tshwm sim

Tam sim no, yog tias koj sau @ thiab ib qho chaw hauv kab, cov txiaj ntsig tshawb nrhiav yuav tshwm sim ntawm qhov screen - cov kev xaiv rau kev hloov mus rau peb cov txiaj ntsig muaj.

Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

Cov neeg siv tuaj yeem lim cov txiaj ntsig los ntawm kev nkag mus rau cov txiaj ntsig xav tau.

Tom qab txhaj rau qhov xav tau txiaj ntsig los ntawm daim ntawv teev npe, kev sib tham tau txais tib cov lus uas cov neeg siv bot tau txais. Koj tuaj yeem siv lub pob hloov tshiab. Cov duab hauv qab no qhia cov lus tshiab xa los ntawm bot:

Telegram bot hauv Python. Daim ntawv qhia ua tiav rau kev sau ntawv bot nrog tus nqi pauv ntawm kos

xaus

Tam sim no koj paub yuav ua li cas los tsim ib tug bot rau Telegram. Koj tuaj yeem ntxiv cov cuab yeej muaj txiaj ntsig rau koj qhov kev zov me nyuam: cov nyees khawm rau kev hloov kho thiab xa cov txiaj ntsig mus rau lwm tus neeg siv ntawm tus neeg xa xov liaison thiab ib hom built-in uas tso cai rau koj siv cov haujlwm ntawm bot sab nraum kev sib tham nrog nws. Raws li cov lus qhia no, koj tuaj yeem tsim ib qho yooj yim bot nrog lwm cov haujlwm - tsis yog ib qho uas yuav qhia tus nqi pauv. Tsis txhob ntshai mus sim nrog cov tsev qiv ntawv, APIs, thiab cov cai los tsim ib tus kws pab cuam uas yuav tham nrog cov neeg siv khoom hauv Telegram thiab ntxiv dag zog rau kev sib txuas ntawm cov neeg nyiam nrog lub tuam txhab.

1 Saib

  1. Fantastica Publicación

Sau ntawv cia Ncua