Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Telegram дахь роботууд нь үзэгчидтэй холбоо тогтоох эсвэл өмнө нь гараар хийх ёстой байсан үйлдлүүдийг хялбарчлахад тусалдаг програмууд юм. Эдгээр программуудыг мессенжерийн платформд тусгайлан бичсэн болно. Ботууд ийм байдлаар ажилладаг: хэрэглэгч оролтын шугамаар тушаал илгээдэг бөгөөд систем нь текст эсвэл интерактив мессежээр хариу өгдөг. Заримдаа програм нь жинхэнэ хүний ​​үйлдлийг дуурайдаг - ийм робот нь үйлчлүүлэгчдэд илүү их итгэлийг төрүүлдэг.

Хэрэглэгчдэд автоматаар туслах хэд хэдэн төрлийн систем байдаг. Зарим роботууд зөвхөн үйлчлүүлэгчидтэй харилцдаг бол зарим нь байнга мэдээлэл өгдөг. Хөтөлбөрийг төрөл болгон тодорхой хуваах боломжгүй байдаг - хөгжүүлэгчид ихэвчлэн хэд хэдэн функцийг нэг роботт нэгтгэдэг.

Та Telegram-д зориулсан энгийн ботыг 9 алхамаар дэлгэцэн дээрх товчлуур хэлбэрээр интерактив элементүүдээр бичиж болно. Тэд тус бүрийг нарийвчлан авч үзээд хэдэн асуултанд хариулъя:

  • роботыг хэрхэн эхлүүлэх;
  • нэг буюу хэд хэдэн товчлуураас суулгасан гарыг хэрхэн бүртгэх;
  • хүссэн функцүүдийн товчлууруудыг хэрхэн програмчлах;
  • Inline горим гэж юу вэ, одоо байгаа ботод хэрхэн тохируулах талаар.

Алхам 0: Telegram роботуудын API-ийн тухай онолын мэдээлэл

Telegram роботуудыг үүсгэхэд ашигладаг гол хэрэгсэл нь HTML Application Programming Interface буюу HTML API юм. Энэ элемент нь зочдын хүсэлтийг хүлээн авч, мэдээллийн хэлбэрээр хариу илгээдэг. Бэлэн загвар нь програм дээрх ажлыг хялбаршуулдаг. Telegram дээр бот бичихийн тулд та энэ имэйл хаягийг ашиглах хэрэгтэй: https://api.telegram.org/bot/METHOD_NAME

Ботыг зөв ажиллуулахын тулд програмыг хамгаалж, итгэмжлэгдсэн хөгжүүлэгчдэд хандах боломжийг олгодог тэмдэгтүүдийн хослол шаардлагатай. Токен бүр өвөрмөц байдаг. Мөрийг үүсгэсний дараа bot-д оноодог. Арга нь өөр байж болно: getUpdates, getChat болон бусад. Аргын сонголт нь хөгжүүлэгчид роботоос ямар алгоритм хүлээж байгаагаас хамаарна. Токен жишээ:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

Ботууд GET болон POST хүсэлтийг ашигладаг. Аргын параметрүүдийг ихэвчлэн нэмж оруулах шаардлагатай байдаг - жишээлбэл, sendMessage арга нь чатын ID болон зарим текстийг илгээх ёстой үед. Аргын сайжруулалтын параметрүүдийг application/x-www-form-urlencoded эсвэл application-json ашиглан URL асуулгын мөр болгон дамжуулж болно. Эдгээр аргууд нь файл татаж авахад тохиромжгүй. UTF-8 кодчилол бас шаардлагатай. API руу хүсэлт илгээснээр та үр дүнг JSON форматаар авах боломжтой. getME аргаар мэдээлэл авахын тулд програмын хариуг харна уу.

https://api.telegram.org/bot АВАХ/getMe{ зүгээр: үнэн, үр дүн: { id: 231757398, first_name: "Exchange Rate Bot", хэрэглэгчийн нэр: "exchangetestbot" } }

Хэрэв үр дүн гарна ok тэнцүү байна үнэн. Үгүй бол систем алдааг зааж өгнө.

Ботуудад захиалгат мессеж авах хоёр арга бий. Хоёр арга хоёулаа үр дүнтэй боловч өөр өөр тохиолдолд тохиромжтой. Мессеж авахын тулд та getUpdates аргаар хүсэлтээ гараар бичиж болно - програм нь дэлгэцэн дээр Update өгөгдлийн массивыг харуулах болно. Хүсэлтийг тогтмол илгээх ёстой бөгөөд массив бүрийг шинжилсний дараа илгээлт давтагдана. Офсет нь шалгагдсан объектууд дахин гарч ирэхээс зайлсхийхийн тулд шинэ үр дүнг ачаалахаас өмнө алгассан бичлэгийн тоог тодорхойлдог параметр юм. GetUpdates аргын ашиг тус дараах тохиолдолд хэрэгжинэ.

  • HTTPS-г тохируулах арга байхгүй;
  • нарийн төвөгтэй скрипт хэлүүдийг ашигладаг;
  • bot сервер үе үе өөрчлөгддөг;
  • bot нь хэрэглэгчдэд ачаалагдсан байна.

Хэрэглэгчийн мессежийг хүлээн авахын тулд бичиж болох хоёр дахь арга бол setWebhook юм. Энэ нь нэг удаа ашиглагддаг, байнга шинэ хүсэлт илгээх шаардлагагүй. Webhook нь заасан URL руу өгөгдлийн шинэчлэлтийг илгээдэг. Энэ арга нь SSL сертификат шаарддаг. Webhook нь дараах тохиолдолд хэрэг болно:

  • вэб програмчлалын хэлүүдийг ашигладаг;
  • bot хэт ачаалалгүй, хэт олон хэрэглэгч байхгүй;
  • сервер өөрчлөгдөхгүй, програм нь нэг сервер дээр удаан хугацаагаар үлддэг.

Цаашдын зааварт бид 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) ): load_exchange() дахь exc-д: хэрэв 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: @BotFather ашиглан Telegram Bot үүсгэ

Та @BotFather үйлчилгээг ашиглан мессеж хүлээн авах, хариу бичих программ үүсгэж болно. Түүний Telegram хуудас руу ороод /newbot командыг оруулна уу. Чат дээр заавар гарч ирэх бөгөөд үүний дагуу та эхлээд ботын нэрийг, дараа нь хаягийг нь бичих хэрэгтэй. Бот акаунт үүсгэгдсэн үед токен агуулсан мэндчилгээний мессеж дэлгэц дээр гарч ирнэ. Нэмэлт тохиргоог хийхийн тулд дараах тушаалуудыг ашиглана уу:

  • /setdescription – тайлбар;
  • /setabouttext – шинэ роботын талаарх мэдээлэл;
  • /setuserpic – профайл зураг;
  • /setinline – шугаман горим;
  • / setcommands – командуудын тайлбар.

Сүүлчийн тохиргооны алхам дээр бид /тусламж ба /солилцоог тайлбарлана. Бүх алхамууд дууссаны дараа кодчилол руу шилжих цаг болжээ.

Алхам 3: Ботыг тохируулах, эхлүүлэх

config.py файл үүсгэцгээе. Үүн дээр та өвөрмөц ботын код болон програмын мэдээллийг олох цагийн бүсийг зааж өгөх хэрэгтэй.

TOKEN = '' # өөрийн роботын токеноор солино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=Үнэн)

none_stop параметр нь хүсэлтийг байнга илгээдэг. Аргын алдаа нь параметрийн үйл ажиллагаанд нөлөөлөхгүй.

Алхам 4: /start командын зохицуулагчийг бичнэ үү

Хэрэв өмнөх бүх алхмуудыг зөв хийсэн бол 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ё тушаалууд=['эхлэх'] Үнэнтэй тэнцүү эхлүүлэх_командыг дуудна. Мессежийн агуулга тэнд очно. Дараа нь та илгээх функцийг хэрэгжүүлэх хэрэгтэй_Захиа тодорхой мессежтэй холбоотой.

Алхам 5: /help Command Handler үүсгэнэ үү

/help командыг товчлуур хэлбэрээр хийж болно. Үүн дээр дарснаар хэрэглэгч хөгжүүлэгчийн Telegram данс руу орох болно. "Хөгжүүлэгчээс асуу" гэх мэт товчлуур дээр нэр өгнө үү. Хэрэглэгчийг холбоос руу дахин чиглүүлдэг reply_markup параметрийг илгээх_мессеж аргын хувьд тохируулна уу. Гар (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) Хүсэлтийн талаарх одоогийн мэдээллийг авахын тулд "Шинэчлэх" дээр дарна уу. ' + 'Бот нь өмнөх болон одоогийн ханшийн зөрүүг мөн харуулах болно.n' + '5) Бот нь шугамыг дэмждэг. @ гэж бичнэ үү дурын чат болон мөнгөн тэмдэгтийн эхний үсэг.', reply_markup=keyboard )

Telegram чат дахь үйлдлийн код:

Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Алхам 6: /exchange Command Handler нэмэх

Энэ алхам нь чат дахь бэлэн мөнгөний тэмдэгт бүхий товчлууруудыг харуулахад шаардлагатай. Сонголтуудтай дэлгэцэн дээрх гар нь алдаанаас зайлсхийхэд тусална. PrivatBank нь рубль, доллар, еврогийн талаархи мэдээллийг өгдөг. InlineKeyboardButton сонголт дараах байдлаар ажиллана:

  1. Хэрэглэгч хүссэн тэмдэглэгээтэй товчлуур дээр дарна.
  2. getUpdates нь буцаан дуудлагыг хүлээн авдаг (CallbackQuery).
  3. Гар дээр дарахад хэрхэн ажиллах нь тодорхой болсон - дарагдсан товчлуурын талаархи мэдээллийг дамжуулдаг.

/ солилцох зохицуулагчийн код:

@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=гар )

Telegram дахь кодын үр дүн:

Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Алхам 7: Баригдсан гарын товчлууруудын зохицуулагчийг бичих

pyTelegramBot Api багц нь @bot.callback_query_handler чимэглэлийн функцийг агуулдаг. Энэ бүрэлдэхүүн хэсэг нь буцааж дуудлагыг функц болгон хөрвүүлэхэд зориулагдсан - API нь дуудлагыг задалж, дахин үүсгэдэг. Үүнийг ингэж бичсэн байна:

@bot.callback_query_handler(функ=ламбда дуудлага: Үнэн) def iq_callback(query): data = query.data бол data.startswith('get-'): get_ex_callback(query)

Мөн get_ex_callback аргыг бичье:

def get_ex_callback(асуулга): bot.answer_callback_query(query.id) send_exchange_result(query.message, query.data[4:])

Өөр нэг ашигтай арга бий - хариу_дуудлагын_асуулга. Энэ нь товчлуурыг дарж үр дүнг дэлгэцэн дээр харуулах хооронд ачааллыг арилгахад тусална. Та send_exchange_query руу валютын код болон мессежийг дамжуулж мессеж илгээх боломжтой. send_exchange_result гэж бичье:

def send_exchange_result(мессеж, ex_code): bot.send_chat_action(message.chat.id, 'бичэх') ex = pb.get_exchange(ex_code) bot.send_message(message.chat.id, serialize_ex(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 зүйл шаардлагатай тул хэрэглэгч хэд хэдэн чатаас сонгох боломжтой. Зочин доллар, рубль эсвэл еврогийн одоогийн ханшийг хэн рүү илгээхээ сонгох боломжтой болно.

def get_update_keyboard(ex): гар = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton( 'Update', 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']) ) буцах гар

Богино хугацаанд валютын ханш хэр их өөрчлөгдсөнийг харах хэрэгтэй болдог. Хэрэглэгчид курсуудыг харьцуулан үзэх боломжтой болгохын тулд Шинэчлэх товчлуурын хоёр аргыг бичье.

Валютын ханшийн зөрүүг diff параметрээр дамжуулан цуваажуулагч руу дамжуулдаг.

Тогтоосон аргууд нь өгөгдөл шинэчлэгдсэний дараа л ажилладаг бөгөөд курсын эхний дэлгэцэнд нөлөөлөхгүй.

def serialize_ex(ex_json, ялгаа=Үгүй): үр дүн = '' + 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' else: үр дүн += '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 ялгаа < 0: үр дүн = '(' + 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">)' буцах үр дүн

Зочин долларын ханшийг мэдэхийг хүссэн гээд бод доо. Хэрэв та зурваст ам.доллар сонговол юу болох вэ:

Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Алхам 8: Шинэчлэх товчлуур зохицуулагчийг хэрэгжүүлэх

Шинэчлэх товчийг ашиглан үйлдлүүдийг зохицуулах кодыг бичээд iq_callback_method хэсгийг нэмж оруулъя. Програмын зүйлүүд get параметрээр эхлэх үед та get_ex_callback гэж бичих ёстой. Бусад тохиолдолд бид JSON-г задлан t түлхүүрийг авахыг оролддог.

@bot.callback_query_handler(func=lambda дуудлага: Үнэн) def iq_callback(query): data = query.data if data.startswith('get-'): get_ex_callback(query) өөрөөр: оролдоно уу: 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. Гарын үсэг нэмэх (засварласан_гарын үсэг).

Хэрэв эхний мессеж өөрчлөгдөхгүй бол 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( text, query.message.chat.id, query.message.message_id, reply_markup=update_keyboard(exchange_now), parse_mode='HTML'message._line. : bot.edit_message_text( text, inline_message_id=query.inline_message_id, reply_markup=update_keyboard(exchange_now), parse_mode='HTML' )

JSON-г задлан шинжлэхийн тулд get_ex_from_iq_data аргыг бичье:

def get_ex_from_iq_data(exc_json): буцаах {'худалдан авах': exc_json['b'], 'sale': exc_json['s'] }

Танд өөр хэд хэдэн арга хэрэг болно: жишээлбэл, get_exchange_diff, валютын үнийн талаарх хуучин болон шинэ мэдээллийг уншиж, зөрүүг харуулдаг.

def get_exchange_diff(сүүлд, одоо): буцаах { 'sale_diff': хөвөх ("%.6f" % (хөвөгч(одоо['sale'])) - хөвөх (сүүлийн['sale']))), 'худалдаж авах_диff': хөвөх ("%.6f" % (хөвөгч(одоо['худалдаж авах'])) - хөвөх(сүүлийн['худалдан авах']))) }

Сүүлийнх нь get_edited_signature нь курс хамгийн сүүлд шинэчлэгдсэн цагийг харуулдаг.

def get_edited_signature(): буцах 'Шинэчлэгдсэн ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME + ')'

Үүний үр дүнд тогтвортой ханштай ботын шинэчилсэн мессеж дараах байдалтай байна.

Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Курс өөрчлөгдөх үед тогтоосон параметрүүдээс шалтгаалан утгуудын ялгаа нь мессеж дээр харагдана.

Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Алхам 9: суулгагдсан горимыг хэрэгжүүлэх

Суурилуулсан горим нь програмаас мэдээллийг ямар ч чат руу хурдан илгээхэд шаардлагатай - одоо та оролцогчийн хувьд харилцан ярианд бот нэмэх шаардлагагүй болно. Telegram хэрэглэгч өмнө нь @ тэмдэгтэй ботын нэрийг оруулах үед хөрвүүлэх сонголтууд оруулах мөрний дээр гарч ирнэ. Хэрэв та эдгээр зүйлсийн аль нэг дээр дарвал робот нь харилцан ярианд үр дүн, өгөгдлийг шинэчлэх, илгээх товчлуур бүхий мессеж илгээх болно. Илгээгчийн нэрэнд “wia ".

InlineQuery нь номын сангаар дамжуулан query_text руу дамждаг. Код нь хайлтын үр дүнг мэдээллийн массив болон inline_query_id элемент болгон авахын тулд answer_line функцийг ашигладаг. Бид get_exchanges-г ашигладаг бөгөөд ингэснээр бот хүсэлтийн дагуу хэд хэдэн валют олох болно.

@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)) )

Бид энэ аргаар InlineQueryResultArticle-аас объектуудыг буцаахын тулд get_iq_articles руу олон тооны өгөгдлийг дамжуулдаг.

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=update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 ) ) үр дүнг буцаана

Одоо, хэрэв та @ гэж бичвэл мөрөнд хоосон зай гарвал хайлтын үр дүн дэлгэцэн дээр гарч ирнэ – гурван бэлэн валют руу хөрвүүлэх сонголтууд.

Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Хэрэглэгчид хүссэн валютаа оруулан үр дүнг шүүж болно.

Жагсаалтаас хүссэн валют дээр товшсоны дараа чат нь ботын хэрэглэгчдийн хүлээн авсан мессежийг хүлээн авна. Та мөн шинэчлэх товчийг ашиглаж болно. Доорх зураг нь ботоор илгээсэн шинэчилсэн мессежийг харуулж байна:

Python хэл дээрх Telegram бот. Эхнээс нь валютын ханшаар бот бичих бүрэн гарын авлага

Дүгнэлт

Одоо та Telegram дээр хэрхэн робот үүсгэхээ мэддэг болсон. Та програмдаа хэрэгтэй хэрэгслүүдийг нэмж болно: үр дүнг шинэчлэх, мессенжерийн бусад хэрэглэгчдэд илгээх товчлуурууд болон ботын функцуудыг чатаас гадуур ашиглах боломжийг олгодог суурилуулсан горим. Энэхүү зааврын дагуу та зөвхөн валютын ханшийг харуулах бус бусад функц бүхий энгийн робот үүсгэж болно. Telegram дээр үйлчлүүлэгчидтэй чатлах, сонирхсон хүмүүсийн компанитай холболтыг бэхжүүлэх автомат туслахыг бий болгохын тулд номын сан, API, кодыг туршихаас бүү ай.

1 тайлбар

  1. Fantástica publicación

хариу үлдээх