บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

บอทในโทรเลขเป็นโปรแกรมที่ช่วยสร้างการติดต่อกับผู้ชมหรือลดความซับซ้อนของการดำเนินการที่ต้องทำด้วยตนเองก่อนหน้านี้ โปรแกรมเหล่านี้เขียนขึ้นโดยเฉพาะสำหรับแพลตฟอร์ม Messenger บอททำงานในลักษณะนี้: ผู้ใช้ส่งคำสั่งผ่านบรรทัดอินพุต และระบบจะตอบกลับด้วยข้อความหรือข้อความโต้ตอบ บางครั้งโปรแกรมก็เลียนแบบการกระทำของบุคคลจริง บอทดังกล่าวเป็นแรงบันดาลใจให้เกิดความไว้วางใจจากลูกค้ามากขึ้น

มีระบบช่วยเหลือผู้ใช้อัตโนมัติหลายประเภท บอทบางตัวเพียงแค่สื่อสารกับลูกค้า ส่วนบางตัวก็ให้ข้อมูลเป็นประจำ เป็นไปไม่ได้ที่จะแบ่งโปรแกรมออกเป็นประเภทต่าง ๆ อย่างชัดเจน – นักพัฒนามักจะรวมฟังก์ชั่นหลายอย่างไว้ในบอทเดียว

คุณสามารถเขียนบอทอย่างง่ายสำหรับโทรเลขด้วยองค์ประกอบแบบโต้ตอบในรูปแบบของปุ่มบนหน้าจอได้ใน 9 ขั้นตอน ดูรายละเอียดแต่ละข้อและตอบคำถามสองสามข้อ:

  • วิธีเริ่มบอท
  • วิธีลงทะเบียนคีย์บอร์ดในตัวจากปุ่มเดียวหรือหลายปุ่ม
  • วิธีตั้งโปรแกรมปุ่มสำหรับฟังก์ชั่นที่ต้องการ
  • โหมดอินไลน์คืออะไรและจะตั้งค่าให้บอทที่มีอยู่ได้อย่างไร

ขั้นตอนที่ 0: พื้นฐานทางทฤษฎีเกี่ยวกับ Telegram bots API

เครื่องมือหลักที่ใช้ในการสร้างบอทโทรเลขคือ 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{ ตกลง: จริง ผลลัพธ์: { id: 231757398, first_name: "Exchange Rate Bot" ชื่อผู้ใช้: "exchangetestbot" } }

จะได้ผลลัพธ์ถ้า ok เท่ากับ จริง. มิฉะนั้นระบบจะแสดงข้อผิดพลาด

มีสองวิธีในการรับข้อความที่กำหนดเองในบอท ทั้งสองวิธีมีประสิทธิภาพ แต่เหมาะสมในบางกรณี ในการรับข้อความ คุณสามารถเขียนคำขอด้วยตนเองด้วยวิธี getUpdates - โปรแกรมจะแสดงอาร์เรย์ข้อมูลอัปเดตบนหน้าจอ ต้องส่งคำขอเป็นประจำ หลังจากวิเคราะห์แต่ละอาร์เรย์แล้ว การส่งซ้ำ ออฟเซ็ตเป็นพารามิเตอร์ที่กำหนดจำนวนเร็กคอร์ดที่ข้ามก่อนที่จะโหลดผลลัพธ์ใหม่เพื่อหลีกเลี่ยงไม่ให้ออบเจ็กต์ที่ตรวจสอบปรากฏขึ้นอีกครั้ง ประโยชน์ของเมธอด getUpdates จะถูกนำมาใช้หาก:

  • ไม่มีวิธีกำหนดค่า HTTPS
  • ใช้ภาษาสคริปต์ที่ซับซ้อน
  • เซิร์ฟเวอร์บอทเปลี่ยนแปลงเป็นครั้งคราว
  • บอทเต็มไปด้วยผู้ใช้

วิธีที่สองที่สามารถเขียนเพื่อรับข้อความของผู้ใช้คือ setWebhook ใช้ครั้งเดียว ไม่จำเป็นต้องส่งคำขอใหม่อย่างต่อเนื่อง เว็บฮุคส่งข้อมูลอัปเดตไปยัง URL ที่ระบุ วิธีนี้ต้องใช้ใบรับรอง SSL Webhook จะมีประโยชน์ในกรณีเหล่านี้:

  • ใช้ภาษาโปรแกรมเว็บ
  • บอทไม่ได้โอเวอร์โหลด มีผู้ใช้ไม่มากนัก
  • เซิร์ฟเวอร์ไม่เปลี่ยน โปรแกรมยังคงอยู่บนเซิร์ฟเวอร์เดิมเป็นเวลานาน

ในคำแนะนำเพิ่มเติม เราจะใช้ getUpdates

บริการ @BotFather Telegram ออกแบบมาเพื่อสร้างแชทบอท การตั้งค่าพื้นฐานยังถูกตั้งค่าผ่านระบบนี้ – BotFather จะช่วยคุณสร้างคำอธิบาย ใส่รูปโปรไฟล์ เพิ่มเครื่องมือสนับสนุน Libraries – ชุดคำขอ HTML สำหรับ Telegram bots – มีให้บริการบนอินเทอร์เน็ต ซึ่งมีอยู่ค่อนข้างมาก เมื่อสร้างโปรแกรมตัวอย่าง จะใช้ 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(): return 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): result = [] 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 Bot ด้วย @BotFather

คุณสามารถสร้างโปรแกรมสำหรับรับข้อความและตอบกลับโดยใช้บริการ @BotFather ไปที่หน้าโทรเลขของเขาและป้อนคำสั่ง /newbot คำแนะนำจะปรากฏในการแชท โดยคุณจะต้องจดชื่อบ็อตก่อน แล้วตามด้วยที่อยู่ เมื่อสร้างบัญชีบอทแล้ว ข้อความต้อนรับที่มีโทเค็นจะปรากฏขึ้นบนหน้าจอ สำหรับการกำหนดค่าเพิ่มเติม ให้ใช้คำสั่งเหล่านี้:

  • /setdescription – คำอธิบาย;
  • /setabouttext – ข้อมูลเกี่ยวกับบอทใหม่
  • /setuserpic – รูปโปรไฟล์;
  • /setinline – โหมดอินไลน์;
  • /setcommands – คำอธิบายของคำสั่ง

ในขั้นตอนการกำหนดค่าสุดท้าย เราจะอธิบาย /help และ /exchange เมื่อเสร็จสิ้นขั้นตอนทั้งหมด ก็ถึงเวลาเข้าสู่การเข้ารหัส

ขั้นตอนที่ 3: การตั้งค่าและเปิดใช้ Bot

มาสร้างไฟล์ config.py กัน ในนั้นคุณต้องระบุรหัสบอทที่ไม่ซ้ำกันและเขตเวลาที่โปรแกรมจะค้นหาข้อมูล

โทเค็น = '' # แทนที่ด้วยโทเค็นของบอท TIMEZONE = 'Europe/Kiev' TIMEZONE_COMMON_NAME = 'Kiev'

ต่อไป เราสร้างไฟล์อื่นด้วยการนำเข้า 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(commands=['start']) def start_command(message): bot.send_message( message.chat.id, 'สวัสดี! ฉันสามารถแสดงอัตราแลกเปลี่ยนให้คุณเห็นได้ n' + 'หากต้องการรับอัตราแลกเปลี่ยน กด / exchange.n' + 'หากต้องการความช่วยเหลือ กด /help.' )

รือ คำสั่ง=['เริ่ม'] เท่ากับทรู start_command ถูกเรียก เนื้อหาของข้อความไปที่นั่น ถัดไป คุณต้องใช้ฟังก์ชันส่ง_ข้อความ เกี่ยวกับข้อความเฉพาะ

ขั้นตอนที่ 5: สร้าง /help Command Handler

คำสั่ง /help สามารถใช้เป็นปุ่มได้ เมื่อคลิกที่มัน ผู้ใช้จะถูกนำไปที่บัญชี Telegram ของผู้พัฒนา ตั้งชื่อปุ่ม เช่น "ถามผู้พัฒนา" ตั้งค่าพารามิเตอร์ reply_markup ซึ่งเปลี่ยนเส้นทางผู้ใช้ไปยังลิงก์สำหรับเมธอด send_message มาเขียนโค้ดพารามิเตอร์ที่สร้างคีย์บอร์ด (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) คลิก "อัปเดต" เพื่อรับข้อมูลปัจจุบันเกี่ยวกับคำขอ ' + 'บอทจะแสดงความแตกต่างระหว่างอัตราแลกเปลี่ยนก่อนหน้าและปัจจุบันด้วย' + '5) บอทรองรับอินไลน์ พิมพ์ @ ในการแชทและตัวอักษรตัวแรกของสกุลเงิน', reply_markup=keyboard )

การกระทำรหัสในการแชททางโทรเลข:

บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

ขั้นตอนที่ 6: การเพิ่ม /exchange Command Handler

ขั้นตอนนี้จำเป็นสำหรับการแสดงปุ่มที่มีสัญลักษณ์ของสกุลเงินที่มีอยู่ในแชท แป้นพิมพ์บนหน้าจอพร้อมตัวเลือกต่างๆ จะช่วยคุณหลีกเลี่ยงข้อผิดพลาด PrivatBank ให้ข้อมูลเกี่ยวกับรูเบิล ดอลลาร์ และยูโร ตัวเลือก InlineKeyboardButton ทำงานดังนี้:

  1. ผู้ใช้คลิกที่ปุ่มที่มีการกำหนดที่ต้องการ
  2. getUpdates ได้รับการโทรกลับ (CallbackQuery)
  3. เป็นที่ทราบกันดีถึงวิธีจัดการกับการกดแป้นพิมพ์ – ข้อมูลเกี่ยวกับปุ่มที่ถูกกดจะถูกส่งต่อ

/ รหัสตัวจัดการการแลกเปลี่ยน:

@bot.message_handler(commands=['exchange']) def exchange_command(ข้อความ): 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=keyboard )

ผลลัพธ์ของรหัสในโทรเลข:

บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

ขั้นตอนที่ 7: การเขียนตัวจัดการสำหรับปุ่มคีย์บอร์ดในตัว

แพ็คเกจ pyTelegramBot Api มีฟังก์ชันมัณฑนากร @bot.callback_query_handler คอมโพเนนต์นี้ออกแบบมาเพื่อแปลการเรียกกลับเป็นฟังก์ชัน โดย API จะแกะและสร้างการเรียกใหม่ มันสะกดแบบนี้:

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

มาเขียนเมธอด get_ex_callback กัน:

def get_ex_callback(query): 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, 'typing') ex = pb.get_exchange(ex_code) bot.send_message ( message.chat.id, serialize_ex (เช่น) ตอบกลับ ) 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 (เช่น): แป้นพิมพ์ = 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 ('แชร์', switch_inline_query=ex['ccy']) ) ส่งคืนแป้นพิมพ์

บางครั้งคุณจำเป็นต้องดูว่าอัตราแลกเปลี่ยนเปลี่ยนแปลงไปมากเพียงใดในช่วงเวลาสั้นๆ มาเขียนสองวิธีสำหรับปุ่มอัปเดตเพื่อให้ผู้ใช้สามารถดูหลักสูตรในการเปรียบเทียบได้

ความแตกต่างระหว่างอัตราแลกเปลี่ยนจะถูกส่งไปยังเครื่องซีเรียลไลเซอร์ผ่านพารามิเตอร์ diff

วิธีการที่กำหนดจะทำงานหลังจากอัปเดตข้อมูลแล้วเท่านั้น จะไม่ส่งผลต่อการแสดงครั้งแรกของหลักสูตร

def serialize_ex(ex_json, diff=None): ผลลัพธ์ = '' + 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' อื่น: ผลลัพธ์ += 'nSell: ' + ex_json['sale'] + 'n' ส่งคืนผลลัพธ์ def serialize_exchange_diff(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: ผลลัพธ์ = '(' + 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">)' ส่งคืนผลลัพธ์

ลองนึกภาพว่าผู้เข้าชมต้องการทราบอัตราแลกเปลี่ยนเงินดอลลาร์ นี่คือสิ่งที่จะเกิดขึ้นหากคุณเลือก USD ในข้อความ:

บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

ขั้นตอนที่ 8: การใช้ตัวจัดการปุ่มอัปเดต

มาเขียนโค้ดสำหรับจัดการการดำเนินการด้วยปุ่มอัปเดตและเพิ่มส่วน iq_callback_method ลงไป เมื่อรายการโปรแกรมเริ่มต้นด้วยพารามิเตอร์ get คุณต้องเขียน get_ex_callback ในสถานการณ์อื่นๆ เราแยกวิเคราะห์ JSON และพยายามรับคีย์ 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: ลอง: if json.loads(data)[ 't'] == 'u': edit_message_callback(query) ยกเว้น ValueError: pass

ถ้า t เท่ากับ u คุณจะต้องเขียนโปรแกรมสำหรับเมธอด edit_message_callback มาแบ่งกระบวนการนี้ทีละขั้นตอน:

  1. กำลังดาวน์โหลดข้อมูลล่าสุดเกี่ยวกับสถานะของตลาดสกุลเงิน (exchange_now = pb.get_exchange(data['c'])
  1. การเขียนข้อความใหม่ผ่าน serializer กับ diff
  2. การเพิ่มลายเซ็น (get_edited_signature)

หากข้อความเริ่มต้นไม่เปลี่ยนแปลง ให้เรียกเมธอด 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=get_update_keyboard(exchange_now), parse_mode='HTML' ) elif query.inline_message_ : 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): return { 'buy': exc_json['b'], 'sale': exc_json['s'] }

คุณจะต้องใช้วิธีการเพิ่มเติมอีกสองสามวิธี เช่น get_exchange_diff ซึ่งจะอ่านข้อมูลเก่าและใหม่เกี่ยวกับต้นทุนของสกุลเงินและแสดงส่วนต่าง

def get_exchange_diff(สุดท้าย ตอนนี้): return { 'sale_diff': float("%.6f" % (float(now['sale']) - float(last['sale']))), 'buy_diff': float ("%.6f" % (float(ตอนนี้['buy']) - float(สุดท้าย['buy']))) }

รายการสุดท้าย get_edited_signature แสดงเวลาที่อัปเดตหลักสูตรครั้งล่าสุด

def get_edited_signature(): ส่งคืน 'อัปเดต ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME + ')'

ด้วยเหตุนี้ ข้อความที่อัปเดตจากบอทที่มีอัตราแลกเปลี่ยนคงที่จึงมีลักษณะดังนี้:

บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

เมื่อเปลี่ยนหลักสูตร ความแตกต่างระหว่างค่าต่างๆ จะแสดงในข้อความเนื่องจากพารามิเตอร์ที่กำหนด

บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

ขั้นตอนที่ 9: การใช้งานโหมดฝังตัว

โหมดในตัวจำเป็นสำหรับการส่งข้อมูลจากโปรแกรมไปยังแชทใดๆ อย่างรวดเร็ว – ตอนนี้คุณไม่จำเป็นต้องเพิ่มบอทในการสนทนาในฐานะผู้เข้าร่วม เมื่อผู้ใช้ Telegram ป้อนชื่อบอทด้วยเครื่องหมาย @ ข้างหน้า ตัวเลือกการแปลงควรปรากฏเหนือบรรทัดอินพุต หากคุณคลิกที่รายการใดรายการหนึ่ง บอทจะส่งข้อความไปยังการสนทนาพร้อมผลลัพธ์และปุ่มสำหรับอัปเดตและส่งข้อมูล ชื่อผู้ส่งจะมีคำบรรยายว่า “via "

InlineQuery ถูกส่งไปยัง query_text ผ่านไลบรารี รหัสใช้ฟังก์ชัน answer_line เพื่อดึงผลการค้นหาเป็นอาร์เรย์ของข้อมูลและองค์ประกอบ inline_query_id เราใช้ 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)) )

เราส่งผ่านอาร์เรย์ของข้อมูลไปยัง 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.InputTextMessageContent ( serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1 ) ) ส่งคืนผลลัพธ์

ตอนนี้ถ้าคุณเขียน @ และช่องว่างในบรรทัด ผลการค้นหาจะปรากฏบนหน้าจอ – ตัวเลือกสำหรับการแปลงเป็นสามสกุลเงินที่มีอยู่

บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

ผู้ใช้สามารถกรองผลลัพธ์โดยป้อนสกุลเงินที่ต้องการ

หลังจากคลิกที่สกุลเงินที่ต้องการจากรายการ แชทจะได้รับข้อความเดียวกับที่ผู้ใช้บอทได้รับ คุณยังสามารถใช้ปุ่มอัปเดต รูปภาพด้านล่างแสดงข้อความที่อัปเดตที่ส่งผ่านบอท:

บอทโทรเลขใน Python คู่มือฉบับสมบูรณ์สำหรับการเขียนบอทด้วยอัตราแลกเปลี่ยนตั้งแต่ต้น

สรุป

ตอนนี้คุณรู้วิธีสร้างบอทสำหรับโทรเลขแล้ว คุณสามารถเพิ่มเครื่องมือที่มีประโยชน์ให้กับโปรแกรมของคุณ: ปุ่มสำหรับอัปเดตและส่งผลไปยังผู้ใช้ Messenger คนอื่น ๆ และโหมดในตัวที่ช่วยให้คุณใช้ฟังก์ชั่นของบอทนอกแชทได้ ตามคำแนะนำนี้ คุณสามารถสร้างบอทแบบง่าย ๆ ที่มีฟังก์ชันอื่น ๆ ได้ ไม่ใช่แค่บอทที่จะแสดงอัตราแลกเปลี่ยนเท่านั้น อย่ากลัวที่จะทดลองกับไลบรารี, API และโค้ดเพื่อสร้างผู้ช่วยอัตโนมัติที่จะแชทกับลูกค้าบน Telegram และกระชับความสัมพันธ์ของผู้ที่สนใจกับบริษัท

1 แสดงความคิดเห็น

  1. การประชาสัมพันธ์ Fantástica

เขียนความเห็น