Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

Bots ni Telegram jẹ awọn eto ti o ṣe iranlọwọ lati fi idi olubasọrọ mulẹ pẹlu awọn olugbo tabi rọrun awọn iṣe ti o ni lati ṣe pẹlu ọwọ tẹlẹ. Awọn eto wọnyi ni a kọ ni pataki fun pẹpẹ ojiṣẹ. Bots ṣiṣẹ ni ọna yii: olumulo nfi aṣẹ ranṣẹ nipasẹ laini titẹ sii, ati pe eto naa dahun pẹlu ọrọ tabi ifiranṣẹ ibanisọrọ. Nigbakugba eto naa paapaa ṣe afarawe awọn iṣe ti eniyan gidi kan - iru bot kan nfa igbẹkẹle diẹ sii laarin awọn alabara.

Awọn oriṣi awọn ọna ṣiṣe lọpọlọpọ wa fun iranlọwọ laifọwọyi si awọn olumulo. Diẹ ninu awọn bot kan kan ibasọrọ pẹlu awọn alabara, awọn miiran pese alaye nigbagbogbo. Ko ṣee ṣe lati pin awọn eto ni kedere si awọn oriṣi – awọn olupilẹṣẹ nigbagbogbo darapọ awọn iṣẹ pupọ ni bot kan.

O le kọ bot ti o rọrun fun Telegram pẹlu awọn eroja ibaraenisepo ni irisi awọn bọtini iboju ni awọn igbesẹ 9. Jẹ ki a wo ọkọọkan wọn ni awọn alaye ki o dahun awọn ibeere diẹ:

  • bawo ni a ṣe le bẹrẹ bot;
  • Bii o ṣe le forukọsilẹ bọtini itẹwe ti a ṣe sinu ọkan tabi diẹ sii awọn bọtini;
  • Bii o ṣe le ṣe eto awọn bọtini fun awọn iṣẹ ti o fẹ;
  • Kini ipo inline ati bii o ṣe le ṣeto rẹ fun bot ti o wa tẹlẹ.

Igbesẹ 0: ipilẹ imọ-jinlẹ nipa API bots Telegram

Ohun elo akọkọ ti a lo lati ṣẹda awọn bot Telegram ni Atọka Eto Ohun elo HTML, tabi HTML API. Ẹya yii gba awọn ibeere alejo ati firanṣẹ awọn idahun ni irisi alaye. Awọn apẹrẹ ti a ti ṣetan ṣe simplify iṣẹ lori eto naa. Lati kọ bot kan fun Telegram, o nilo lati lo adirẹsi imeeli yii: https://api.telegram.org/bot/METHOD_NAME

Fun iṣẹ ṣiṣe ti o tọ ti bot, aami kan tun nilo - apapo awọn ohun kikọ ti o daabobo eto naa ati ṣi iraye si si awọn olupilẹṣẹ ti o ni igbẹkẹle. Kọọkan àmi jẹ oto. Okun ti wa ni sọtọ si bot lori ẹda. Awọn ọna le yatọ: getUpdates, getChat ati awọn miiran. Yiyan ọna da lori kini algorithm ti awọn olupilẹṣẹ n reti lati bot. Àpẹrẹ àmi:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Bots lo GET ati awọn ibeere POST. Awọn paramita ọna nigbagbogbo ni lati ni afikun – fun apẹẹrẹ, nigbati ọna fifiranṣẹ yẹ lati fi id iwiregbe ranṣẹ ati ọrọ diẹ. Awọn paramita fun isọdọtun ọna le ṣee kọja bi okun ibeere URL nipa lilo ohun elo/x-www-form-urlencoded tabi nipasẹ ohun elo-json. Awọn ọna wọnyi ko dara fun igbasilẹ awọn faili. UTF-8 fifi koodu si tun nilo. Nipa fifiranṣẹ ibeere kan si API, o le gba abajade ni ọna kika JSON. Wo idahun ti eto naa si gbigba alaye pada nipasẹ ọna getME:

Gba https://api.telegram.org/bot/getMe{ ok: ooto, esi: { id: 231757398, first_name: "Exchange Rate Bot", orukọ olumulo: "exchangetestbot"}}

Abajade yoo gba ti o ba ti ok dogba otitọ. Bibẹẹkọ, eto naa yoo tọka aṣiṣe kan.

Awọn ọna meji lo wa lati gba awọn ifiranṣẹ aṣa ni awọn bot. Awọn ọna mejeeji jẹ doko, ṣugbọn o dara ni awọn ọran oriṣiriṣi. Lati gba awọn ifiranṣẹ, o le kọ ibeere pẹlu ọwọ pẹlu ọna getUpdates - eto naa yoo ṣe afihan data imudojuiwọn lori iboju. Awọn ibeere gbọdọ wa ni fifiranṣẹ ni deede, lẹhin ṣiṣe ayẹwo akojọpọ kọọkan, fifiranṣẹ jẹ tun. Aiṣedeede jẹ paramita ti o pinnu nọmba awọn igbasilẹ ti o fo ṣaaju ikojọpọ abajade tuntun lati yago fun ifarahan awọn nkan ti a ṣayẹwo. Awọn anfani ti ọna getUpdates yoo wa sinu ere ti:

  • ko si ọna lati tunto HTTPS;
  • Awọn ede kikọ idiju ni a lo;
  • olupin bot yipada lati igba de igba;
  • bot ti kojọpọ pẹlu awọn olumulo.

Ọna keji ti o le kọ lati gba awọn ifiranṣẹ olumulo ni setWebhook. O ti lo ni ẹẹkan, ko si iwulo lati firanṣẹ awọn ibeere tuntun nigbagbogbo. Awọn webhook rán awọn imudojuiwọn data si awọn pàtó URL. Ọna yii nilo ijẹrisi SSL kan. Webhook yoo wulo ni awọn ọran wọnyi:

  • Awọn ede siseto wẹẹbu ni a lo;
  • bot ko ni apọju, ko si ọpọlọpọ awọn olumulo;
  • olupin naa ko yipada, eto naa wa lori olupin kanna fun igba pipẹ.

Ni awọn ilana siwaju, a yoo lo getUpdates.

Iṣẹ @BotFather Telegram jẹ apẹrẹ lati ṣẹda awọn bot iwiregbe. Awọn eto ipilẹ tun ṣeto nipasẹ eto yii - BotFather yoo ran ọ lọwọ lati ṣe apejuwe kan, fi aworan profaili kan, ṣafikun awọn irinṣẹ atilẹyin. Awọn ile-ikawe - awọn eto awọn ibeere HTML fun awọn bot Telegram – wa lori Intanẹẹti, ọpọlọpọ wọn wa. Nigbati o ba ṣẹda eto apẹẹrẹ, pyTelegramBotApi ti lo.

Igbesẹ 1: Ṣiṣe Awọn ibeere Oṣuwọn paṣipaarọ

Ni akọkọ o nilo lati kọ koodu ti o ṣe awọn ibeere. A yoo lo nigba kikọ PrivatBank API, ni isalẹ ni ọna asopọ si rẹ: https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5. O nilo lati lo awọn ọna wọnyi ninu koodu rẹ:

  • load_exchange - wa awọn oṣuwọn paṣipaarọ ati ṣafihan alaye kooduopo;
  • get_exchange - ṣafihan data nipa owo kan pato;
  • get_exchanges - ṣe afihan atokọ ti awọn owo nina ni ibamu si apẹẹrẹ.

Bi abajade, koodu inu faili pb.py dabi eyi:

gbe wọle awọn ibeere agbewọle wọle json URL = 'https://api.privatbank.ua/p24api/pubinfo?json&exchange&coursid=5' def load_exchange(): pada json.loads(requests.get(URL).text) def get_exchange(ccy_key) ): fun exc ni load_exchange (): ti o ba ti ccy_key == exc ['ccy']: pada exc pada Eke def get_exchanges (ccy_pattern): esi = [] ccy_pattern = re.escape (ccy_pattern) + '.*' fun exc in load_exchange (): ti o ba ti re.match (ccy_pattern, exc ['ccy'], re.IGNORECASE) ni ko Kò: result.append (exc) esi ipadabọ

Eto naa le funni ni esi atẹle si awọn ibeere ti a sọ pato:

[{ccy:"USD", base_ccy:"UAH", ra:"25.90000", sale:"26.25000"}, {ccy:"EUR", base_ccy:"UAH", ra:"29.10000", sale:"29.85000 " }, {ccy:"RUR", base_ccy:"UAH", ra:"0.37800", sale:"0.41800"}, {ccy:"BTC", base_ccy:"USD", ra:"11220.0384", sale: "12401.0950"}]

Igbesẹ 2: Ṣẹda Telegram Bot pẹlu @BotBaba

O le ṣẹda eto kan fun gbigba awọn ifiranṣẹ ati idahun si wọn nipa lilo iṣẹ @BotFather. Lọ si oju-iwe Telegram rẹ ki o tẹ aṣẹ / newbot sii. Awọn ilana yoo han ninu iwiregbe, ni ibamu si eyiti o nilo lati kọ orukọ bot silẹ ni akọkọ, lẹhinna adirẹsi rẹ. Nigbati akọọlẹ bot ba ṣẹda, ifiranṣẹ itẹwọgba ti o ni ami kan yoo han loju iboju. Fun iṣeto diẹ sii, lo awọn aṣẹ wọnyi:

  • /setdescription - apejuwe;
  • /setabouttext - alaye nipa bot tuntun;
  • /setuserpic – Fọto profaili;
  • /setinline – ipo inline;
  • /setcommands - apejuwe ti awọn aṣẹ.

Ni igbesẹ iṣeto ti o kẹhin, a ṣe apejuwe / iranlọwọ ati / paṣipaarọ. Nigbati gbogbo awọn igbesẹ ba ti pari, o to akoko lati lọ siwaju si ifaminsi.

Igbesẹ 3: Ṣiṣeto ati Ifilọlẹ Bot

Jẹ ki a ṣẹda faili config.py kan. Ninu rẹ, o nilo lati pato koodu bot alailẹgbẹ ati agbegbe aago ninu eyiti eto naa yoo wa alaye.

Àmi ='' # ropo pẹlu àmi bot rẹTIMEZONE = 'Europe/Kiev' TIMEZONE_COMMON_NAME = 'Kiev'

Nigbamii ti, a ṣẹda faili miiran pẹlu agbewọle ti pb.py ti a kọ tẹlẹ, awọn ile-ikawe ati awọn paati pataki miiran. Awọn ile ikawe ti o padanu ti wa ni fifi sori ẹrọ lati eto iṣakoso package (pip).

gbe telebotimport configimport pbimport datetimeimport pytzimport jsonimport itopasepadà P_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = config.TIMEZONE_COMMON_NAME

Jẹ ki a lo akoonu pyTelegramBotApi lati ṣẹda bot kan. A firanṣẹ ami ti o gba ni lilo koodu atẹle:

bot = telebot.TeleBot(config.TOKEN) bot.polling(none_stop=Otitọ)

Paramita none_stop ṣe idaniloju pe awọn ibeere ni a firanṣẹ nigbagbogbo. Išišẹ ti paramita kii yoo ni ipa nipasẹ awọn aṣiṣe ọna.

Igbesẹ 4: Kọ / bẹrẹ Olumudani aṣẹ

Ti gbogbo awọn igbesẹ ti tẹlẹ ba ṣe ni deede, bot ti bẹrẹ ṣiṣẹ. Eto naa n pese awọn ibeere nigbagbogbo nitori pe o nlo ọna getUpdates. Ṣaaju laini pẹlu nkan none_stop, a nilo koodu nkan kan ti o ṣe ilana aṣẹ / bẹrẹ:

@bot.message_handler(commands=['bẹrẹ']) def start_command(ifiranṣẹ): bot.send_message( message.chat.id, 'Ẹ kí! Mo le fi ọ han awọn oṣuwọn paṣipaarọ.n' + 'Lati gba awọn oṣuwọn paṣipaarọ tẹ / exchange.n' + 'Lati gba iranlọwọ tẹ /iranlọwọ.')

RџSЂRё aṣẹ=['ibẹrẹ'] dogba si Otitọ start_command ni a npe ni. Awọn akoonu ti ifiranṣẹ lọ nibẹ. Nigbamii, o nilo lati ṣe iṣẹ fifiranṣẹ_ifiranṣẹ ni ibatan si ifiranṣẹ kan pato.

Igbesẹ 5: Ṣẹda Olutọju Aṣẹ / Iranlọwọ

Aṣẹ / iranlọwọ le ṣe imuse bi bọtini kan. Nipa tite lori rẹ, olumulo yoo mu lọ si akọọlẹ Telegram ti olupilẹṣẹ. Fun bọtini naa ni orukọ kan, gẹgẹbi “Beere lọwọ Olùgbéejáde”. Ṣeto paramita reply_markup, eyiti o da olumulo pada si ọna asopọ, fun ọna send_message. Jẹ ki a kọ sinu koodu paramita ti o ṣẹda keyboard (InlineKeyboardMarkup). O nilo bọtini kan nikan (InlineKeyboardButton).

Koodu olutọju pipaṣẹ ikẹhin dabi eyi:

@bot.message_handler (awọn pipaṣẹ=['iranlọwọ']) defi help_command(ifiranṣẹ): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.add( telebot.types.InlineKeyboardButton('Beere fun Olùgbéejáde', url='ваша ссылка на профиль' ) ) bot.send_message( message.chat.id, '1) Lati gba atokọ ti awọn owo nina to wa tẹ /exchange.n' + '2) Tẹ owo ti o nifẹ si.n' + '3) Iwọ yoo gba ifiranṣẹ ti o ni alaye ti o ni alaye nipa orisun ati awọn owo nina ibi-afẹde, '+' awọn oṣuwọn rira ati awọn oṣuwọn tita.n' + '4) Tẹ “Imudojuiwọn” lati gba alaye lọwọlọwọ nipa ibeere naa. ' + 'Bot naa yoo tun ṣe afihan iyatọ laarin iṣaaju ati awọn oṣuwọn paṣipaarọ lọwọlọwọ.n' + '5) Bot naa ṣe atilẹyin inline. Tẹ @ ni eyikeyi iwiregbe ati awọn lẹta akọkọ ti owo kan.', reply_markup=keyboard )

Iṣe koodu ni iwiregbe Telegram:

Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

Igbesẹ 6: Fifi /paṣipaarọ Aṣẹ Handler

Igbese yii nilo lati ṣafihan awọn bọtini pẹlu awọn aami ti awọn owo nina ti o wa ninu iwiregbe. Bọtini iboju pẹlu awọn aṣayan yoo ran ọ lọwọ lati yago fun awọn aṣiṣe. PrivatBank pese alaye lori ruble, dola ati Euro. Aṣayan InlineKeyboardButton ṣiṣẹ bi eleyi:

  1. Olumulo naa tẹ bọtini naa pẹlu orukọ ti o fẹ.
  2. getUpdates gba ipe pada (CallbackQuery).
  3. O di mimọ bi o ṣe le mu titẹ bọtini itẹwe - alaye nipa bọtini titẹ ti wa ni gbigbe.

/ koodu olutọju paṣipaarọ:

@bot.message_handler (awọn pipaṣẹ = ['paṣipaarọ']) defi exchange_command(ifiranṣẹ): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('USD', callback_data='gba-USD') ) keyboard.row .id, 'Tẹ owo ti o fẹ:', reply_markup=keyboard )

Abajade koodu ni Telegram:

Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

Igbesẹ 7: Kikọ olutọju kan fun awọn bọtini itẹwe ti a ṣe sinu

Apo pyTelegramBot Api ni @bot.callback_query_handler iṣẹ ọṣọ. Ẹya paati yii jẹ apẹrẹ lati tumọ ipe pada sinu iṣẹ kan – API ṣii ati tun-ṣe ipe naa. O ti wa ni sipeli bi yi:

@bot.callback_query_handler(func=ipe lambda:Otitọ) def iq_callback(ibeere): data = query.data if data.startswith('get-'): get_ex_callback(ibeere)

Jẹ ki a tun kọ ọna get_ex_callback:

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

Ọna iwulo miiran wa – answer_callback_query. O ṣe iranlọwọ lati yọ fifuye kuro laarin titẹ bọtini ati fifi abajade han loju iboju. O le fi ifiranṣẹ ranṣẹ si send_exchange_query nipa gbigbe koodu owo diẹ ati Ifiranṣẹ. Jẹ ki a kọ send_exchange_result:

def send_exchange_result(ifiranṣẹ, ex_code): bot.send_chat_action(message.chat.id, 'titẹ') ex = pb.get_exchange(ex_code) bot.send_message( message.chat.id, serialize_ex(ex), reply_markup=get_update_keyboard(ex_code) ), parse_mode='HTML')

Lakoko ti chatbot gba abajade ti ibeere lati ile ifowo pamo API, alejo wo akọle "titẹ ifiranṣẹ kan". O dabi ẹni pe eniyan gidi kan dahun. Lati fi iru itọka bẹẹ han loju iboju, iwọ yoo nilo lati fi awọn laini ipo titẹ sii kun. Nigbamii ti, a yoo lo get_exchange - pẹlu iranlọwọ rẹ, eto naa yoo gba orukọ owo (rubles, yuroopu tabi awọn dọla). send_message nlo awọn ọna afikun: serialize_ex ṣe iyipada owo naa si ọna kika miiran, ati get_update_keyboard ṣeto awọn bọtini asọ ti o ṣe imudojuiwọn alaye ati firanṣẹ data ọja owo si awọn ibaraẹnisọrọ miiran.

Jẹ ki a kọ koodu naa fun get_update_keyboard. Awọn bọtini meji nilo lati darukọ - t ati e duro fun iru ati paṣipaarọ. Ohun kan switch_inline_query fun bọtini Pin ni a nilo ki olumulo le yan lati awọn iwiregbe pupọ. Alejo naa yoo ni anfani lati yan ẹniti yoo firanṣẹ oṣuwọn paṣipaarọ lọwọlọwọ ti dola, ruble tabi Euro.

def get_update_keyboard(fun apẹẹrẹ): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('Update', callback_data=json.dumps({'t':'u','e': {' b': ex['ra'], 's': ex['tita'], 'c': ex['ccy']}}).ropo('', '')), telebot.types.InlineKeyboardButton ('Pin', switch_inline_query=ex['ccy']) ) padabọọlu keyboard

Nigba miiran o nilo lati wo iye oṣuwọn paṣipaarọ ti yipada ni igba diẹ. Jẹ ki a kọ awọn ọna meji fun bọtini imudojuiwọn ki awọn olumulo le rii awọn iṣẹ ikẹkọ ni lafiwe.

Iyatọ laarin awọn oṣuwọn paṣipaarọ ti kọja si serializer nipasẹ paramita iyatọ.

Awọn ọna ti a fun ni aṣẹ ṣiṣẹ nikan lẹhin imudojuiwọn data, wọn kii yoo ni ipa lori ifihan akọkọ ti ẹkọ naa.

def serialize_ex(ex_json, diff=Kò sí): àbájáde = ''+ ex_json['base_ccy'] + ' ->' + ex_json['ccy'] + ':n' ' + serialize_exchange_diff(diff['sale_diff']) + 'n' omiran: esi += 'nTa:' + ex_json['sale'] + 'n' esi ipadabọ def serialize_exchange_diff(diff): esi = ''ti o ba jẹ iyatọ > 0: abajade = '(' + 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">) esi ipadabọ

Fojuinu pe alejo naa fẹ lati mọ oṣuwọn paṣipaarọ dola. Eyi ni ohun ti o ṣẹlẹ ti o ba yan USD ninu ifiranṣẹ naa:

Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

Igbesẹ 8: Ṣiṣe Imudani Bọtini Imudojuiwọn

Jẹ ki a kọ koodu naa fun mimu awọn iṣe pẹlu bọtini imudojuiwọn ki o ṣafikun apakan iq_callback_method si rẹ. Nigbati awọn ohun elo ba bẹrẹ pẹlu paramita gba, o gbọdọ kọ get_ex_callback. Ni awọn ipo miiran, a ṣe itupalẹ JSON ati gbiyanju lati gba bọtini t.

@bot.callback_query_handler(func=ipe lambda:Otitọ) def iq_callback(ibeere): data = query.data if data.startswith('get-'): get_ex_callback(ibeere) miran: gbiyanju: ti json.loads(data)[ 't'] == 'u': edit_message_callback(ibeere) ayafi ValueError: kọja

Ti o ba dọgba si rẹ, iwọ yoo nilo lati kọ eto kan fun ọna edit_message_callback. Jẹ ki a fọ ​​ilana yii ni igbese nipa igbese:

  1. Ṣiṣe igbasilẹ alaye imudojuiwọn nipa ipo ti ọja owo (exchange_now = pb.get_exchange(data['c']).
  1. Kikọ ifiranṣẹ titun nipasẹ a serializer pẹlu iyato.
  2. Fifi ibuwọlu kan (get_edited_signature).

Ti ifiranṣẹ akọkọ ko ba yipada, pe ọna edit_message_text.

def edit_message_callback(ìbéèrè): data = json.loads (query.data) ['e'] exchange_now = pb.get_exchange (data['c']) ọrọ = serialize_ex (exchange_now, get_exchange_diff( get_ex_from_iq_data(data), exchange_now) ) + 'n' + get_edited_signature() ti ìbéèrè.message: bot.edit_message_text(ọrọ, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now),parse_mode='HTML')_elifmesageinline_idline. : bot.edit_message_text(ọrọ, inline_message_id=query.inline_message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML')

Jẹ ki a kọ ọna get_ex_from_iq_data lati ṣe itupalẹ JSON:

def get_ex_from_iq_data(exc_json): pada {'ra': exc_json['b'], 'tita': exc_json['s']}

Iwọ yoo nilo awọn ọna diẹ sii: fun apẹẹrẹ, get_exchange_diff, eyiti o ka alaye atijọ ati tuntun nipa idiyele awọn owo nina ati ṣafihan iyatọ naa.

def get_exchange_diff(kẹhin, ni bayi): pada {'sale_diff': leefofo ("%.6f"% (foofo(bayi['tita']) - leefofo(kẹhin['tita']))), 'buy_diff': leefofo loju omi ("% 6f" % (foofo(bayi['ra']) - leefofo(kẹhin['ra']))))}

Eyi ti o kẹhin, get_edited_signature, fihan akoko ikẹkọ naa ti ni imudojuiwọn kẹhin.

def get_edited_signature(): pada 'Ti ṣe imudojuiwọn '+ str (datetime.datetime. now(P_TIMEZONE).strfime('%H:%M:%S')) + '('+ TIMEZONE_COMMON_NAME +')'

Bi abajade, ifiranṣẹ imudojuiwọn lati bot pẹlu oṣuwọn paṣipaarọ iduroṣinṣin dabi eyi:

Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

Nigbati ẹkọ naa ba yipada, awọn iyatọ laarin awọn iye ti han ninu ifiranṣẹ nitori awọn aye ti a fun ni aṣẹ.

Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

Igbesẹ 9: Iṣaṣe Ipo Iṣabọ

Ipo ti a ṣe sinu rẹ nilo lati firanṣẹ alaye ni kiakia lati inu eto si iwiregbe eyikeyi - ni bayi o ko nilo lati ṣafikun bot kan si ibaraẹnisọrọ bi alabaṣe kan. Nigbati olumulo Telegram ba tẹ orukọ bot kan pẹlu ami @ kan ni iwaju rẹ, awọn aṣayan iyipada yẹ ki o han loke laini titẹ sii. Ti o ba tẹ ọkan ninu awọn ohun kan, bot yoo fi ifiranṣẹ ranṣẹ si ibaraẹnisọrọ pẹlu awọn esi ati awọn bọtini fun imudojuiwọn ati fifiranṣẹ data. Orukọ olufiranṣẹ yoo ni akọle “nipasẹ ".

InlineQuery ti kọja si query_text nipasẹ ile-ikawe naa. Koodu naa nlo iṣẹ idahun_laini lati gba awọn abajade wiwa pada bi titobi data ati inline_query_id ano. A lo get_exchanges ki bot wa ọpọlọpọ awọn owo nina lori ibeere.

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

A ṣe ọpọlọpọ data lati gba_iq_articles lati le da awọn nkan pada lati InlineQueryResultArticle nipasẹ ọna yii.

def get_iq_articles(paṣipaarọ): esi = [] fun exc ni awọn paṣipaarọ: 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), apejuwe='Iyipada' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 ) ) esi pada

Bayi, ti o ba kọ @ ati aaye kan ninu laini, awọn abajade wiwa yoo han loju iboju - awọn aṣayan fun iyipada si awọn owo nina mẹta ti o wa.

Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

Awọn olumulo le ṣe àlẹmọ awọn abajade nipa titẹ owo ti o fẹ.

Lẹhin titẹ lori owo ti o fẹ lati inu atokọ naa, iwiregbe gba ifiranṣẹ kanna ti awọn olumulo bot gba. O tun le lo bọtini imudojuiwọn. Aworan ti o wa ni isalẹ fihan ifiranṣẹ imudojuiwọn ti a firanṣẹ nipasẹ bot:

Telegram bot ni Python. Itọsọna pipe si kikọ bot pẹlu awọn oṣuwọn paṣipaarọ lati ibere

ipari

Bayi o mọ bi o ṣe le ṣẹda bot fun Telegram. O le ṣafikun awọn irinṣẹ to wulo si eto rẹ: awọn bọtini fun imudojuiwọn ati fifiranṣẹ abajade si awọn olumulo miiran ti ojiṣẹ ati ipo ti a ṣe sinu ti o fun ọ laaye lati lo awọn iṣẹ ti bot ni ita iwiregbe pẹlu rẹ. Da lori itọnisọna yii, o le ṣẹda eyikeyi bot ti o rọrun pẹlu awọn iṣẹ miiran - kii ṣe ọkan nikan ti yoo ṣafihan awọn oṣuwọn paṣipaarọ. Maṣe bẹru lati ṣe idanwo pẹlu awọn ile-ikawe, awọn API, ati koodu lati ṣẹda oluranlọwọ adaṣe adaṣe ti yoo iwiregbe pẹlu awọn alabara lori Telegram ati mu asopọ ti awọn eniyan ti o nifẹ si pẹlu ile-iṣẹ naa.

1 Comment

  1. Fantastica publicación

Fi a Reply