Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

ٽيليگرام ۾ بوٽس پروگرام آهن جيڪي سامعين سان رابطو قائم ڪرڻ يا عمل کي آسان ڪرڻ ۾ مدد ڪن ٿيون جيڪي اڳ ۾ دستي طور تي ٿيڻ گهرجن. اهي پروگرام خاص طور تي ميسينجر پليٽ فارم لاءِ لکيل آهن. بوٽ هن طريقي سان ڪم ڪن ٿا: صارف ان پٽ لائن ذريعي هڪ حڪم موڪلي ٿو، ۽ سسٽم هڪ ٽيڪسٽ يا انٽرويو پيغام سان جواب ڏئي ٿو. ڪڏهن ڪڏهن پروگرام هڪ حقيقي شخص جي عملن کي به نقل ڪري ٿو - اهڙي بوٽ گراهڪن جي وچ ۾ وڌيڪ اعتماد کي متاثر ڪري ٿو.

صارفين لاء خودڪار مدد لاء سسٽم جا ڪيترائي قسم آهن. ڪجهه بوٽ صرف گراهڪن سان رابطو ڪن ٿا، ٻيا باقاعده معلومات مهيا ڪن ٿا. پروگرامن کي واضح طور تي قسمن ۾ ورهائڻ ناممڪن آهي - ڊولپر اڪثر ڪري هڪ بوٽ ۾ ڪيترن ئي افعال کي گڏ ڪن ٿا.

توھان 9 مرحلن ۾ آن-اسڪرين بٽڻن جي صورت ۾ انٽرايڪٽو عناصر سان ٽيليگرام لاءِ ھڪڙو سادو بوٽ لکي سگھو ٿا. اچو ته انهن مان هر هڪ کي تفصيل سان ڏسو ۽ ڪجهه سوالن جا جواب ڏيو:

  • هڪ بوٽ ڪيئن شروع ڪجي؛
  • هڪ يا وڌيڪ بٽڻن مان بلٽ ان ڪيبورڊ ڪيئن رجسٽر ڪجي؛
  • گهربل ڪمن لاءِ بٽڻن کي ڪيئن پروگرام ڪجي؛
  • ان لائن موڊ ڇا آهي ۽ موجوده بوٽ لاءِ ان کي ڪيئن سيٽ ڪجي.

قدم 0: نظرياتي پس منظر بابت ٽيليگرام بوٽس API

ٽيليگرام بوٽس ٺاهڻ لاءِ استعمال ٿيندڙ مکيه اوزار HTML ايپليڪيشن پروگرامنگ انٽرفيس، يا HTML API آهي. هي عنصر دورو ڪندڙ درخواستن کي قبول ڪري ٿو ۽ معلومات جي صورت ۾ جواب موڪلي ٿو. تيار ڪيل ڊيزائن پروگرام تي ڪم کي آسان بڻائي ٿو. ٽيليگرام لاءِ بوٽ لکڻ لاءِ، توھان کي ھي اي ميل پتو استعمال ڪرڻ جي ضرورت آھي: 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 طريقي سان هڪ درخواست لکي سگهو ٿا - پروگرام اسڪرين تي تازه ڪاري ڊيٽا صف ڏيکاريندو. درخواستون باقاعدي موڪلڻ گهرجن، هر صف جو تجزيو ڪرڻ کان پوءِ، موڪلڻ بار بار ڪيو ويندو. Offset ھڪڙو پيٽرولر آھي جيڪو ھڪڙي نئين نتيجن کي لوڊ ڪرڻ کان اڳ ڇڏيل رڪارڊ جي تعداد کي طئي ڪري ٿو ته چڪاس ڪيل شين جي ٻيهر ظاهر ٿيڻ کان بچڻ لاء. GetUpdates طريقن جا فائدا راند ۾ ايندا جيڪڏهن:

  • HTTPS ترتيب ڏيڻ جو ڪو طريقو ناهي؛
  • پيچيده اسڪرپٽنگ ٻوليون استعمال ڪيون وينديون آهن؛
  • بوٽ سرور وقت بوقت تبديل ٿيندو آهي؛
  • بوٽ استعمال ڪندڙن سان ڀريل آهي.

ٻيو طريقو جيڪو صارف جي پيغامن کي حاصل ڪرڻ لاءِ لکي سگهجي ٿو اهو آهي setWebhook. اهو هڪ ڀيرو استعمال ڪيو ويندو آهي، مسلسل نئين درخواستون موڪلڻ جي ڪا ضرورت ناهي. ويب هوڪ موڪلي ٿو ڊيٽا اپڊيٽ کي مخصوص URL ڏانهن. اهو طريقو هڪ SSL سرٽيفڪيٽ جي ضرورت آهي. Webhook انهن حالتن ۾ مفيد ٿيندو:

  • ويب پروگرامنگ ٻوليون استعمال ڪيون وينديون آهن؛
  • بوٽ اوورلوڊ ٿيل نه آهي، اتي تمام گهڻا استعمال ڪندڙ نه آهن؛
  • سرور تبديل نٿو ڪري، پروگرام هڪ ڊگهي وقت تائين ساڳئي سرور تي رهي ٿو.

وڌيڪ هدايتن ۾، اسان استعمال ڪنداسين getUpdates.

@BotFather ٽيليگرام سروس چيٽ بوٽ ٺاهڻ لاءِ ٺهيل آهي. بنيادي سيٽنگون پڻ هن سسٽم ذريعي سيٽ ڪيون ويون آهن - BotFather توهان کي وضاحت ڪرڻ، پروفائل فوٽو لڳائڻ، سپورٽ اوزار شامل ڪرڻ ۾ مدد ڪندو. لائبريريون - ٽيليگرام بوٽس لاءِ 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 ۾ 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 سان ٽيليگرام بوٽ ٺاهيو

توهان پيغام حاصل ڪرڻ ۽ انهن جو جواب ڏيڻ لاءِ هڪ پروگرام ٺاهي سگهو ٿا @BotFather سروس استعمال ڪندي. هن جي ٽيليگرام صفحي ڏانهن وڃو ۽ داخل ڪريو / newbot حڪم. چيٽ ۾ هدايتون ظاهر ٿينديون، جنهن جي مطابق توهان کي پهريان بوٽ جو نالو لکڻو پوندو، ۽ پوءِ ان جو پتو. جڏهن بوٽ اڪائونٽ ٺاهي وئي آهي، هڪ خوش آمديد پيغام جنهن ۾ هڪ ٽوڪن شامل آهي اسڪرين تي ظاهر ٿيندو. وڌيڪ ٺاھ جوڙ لاء، ھي حڪم استعمال ڪريو:

  • /set description- وضاحت؛
  • /setabouttext - نئين بوٽ بابت ڄاڻ؛
  • /setuserpic - پروفائل فوٽو؛
  • /setinline - ان لائن موڊ؛
  • /setcommands - حڪمن جي وضاحت.

آخري ٺاھ جوڙ واري مرحلي تي، اسان بيان ڪريون ٿا /مدد ۽ /متبادل. جڏهن سڀئي مرحلا مڪمل ڪيا ويا آهن، اهو وقت آهي ڪوڊنگ ڏانهن منتقل ڪرڻ جو.

قدم 3: بوٽ کي سيٽ ڪرڻ ۽ لانچ ڪرڻ

اچو ته هڪ config.py فائل ٺاهي. ان ۾، توھان کي مخصوص ڪرڻ جي ضرورت آھي منفرد بوٽ ڪوڊ ۽ ٽائم زون جنھن ۾ پروگرام معلومات ملندي.

ٽوڪن = '' # پنھنجي بوٽ جي ٽوڪن سان مٽايوTIMEZONE = 'يورپ/ڪيف' TIMEZONE_COMMON_NAME = 'ڪيف'

اڳيون، اسان اڳ ۾ لکيل pb.py، لائبريرين ۽ ٻين ضروري حصن جي درآمد سان هڪ ٻي فائل ٺاهيندا آهيون. غائب لائبريريون پيڪيج مينيجمينٽ سسٽم (پائپ) مان نصب ٿيل آهن.

درآمد ڪريو telebotimport config import pbimport datetime import pytzimport jsonimport traceback P_TIMEZONE = pytz.timezone(config.TIMEZONE) TIMEZONE_COMMON_NAME = ترتيب.TIMEZONE_COMMON_NAME

اچو ته pyTelegramBotApi جو مواد استعمال ڪريون بوٽ ٺاهڻ لاءِ. اسان هيٺ ڏنل ڪوڊ استعمال ڪندي وصول ٿيل ٽوڪن موڪليندا آهيون:

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

none_stop پيٽرولر کي يقيني بڻائي ٿو ته درخواستون مسلسل موڪليا وڃن. پيٽرولر جو آپريشن طريقي جي غلطين کان متاثر نه ٿيندو.

مرحلا 4: لکو /شروع ڪمانڊ هينڊلر

جيڪڏهن سڀئي پوئين قدم صحيح طريقي سان ڪيا ويا آهن، بوٽ ڪم ڪرڻ شروع ڪيو آهي. پروگرام باقاعده طور تي درخواستون ٺاهي ٿو ڇاڪاڻ ته اهو استعمال ڪري ٿو getUpdates طريقو. none_stop عنصر سان لائن کان اڳ، اسان کي ڪوڊ جو ھڪڙو ٽڪرو گھرجي جيڪو عمل ڪري ٿو /start حڪم:

@bot.message_handler(commands=['start']) def start_command(message): bot.send_message(message.chat.id, 'Greetings! مان توهان کي ڏيکاري سگهان ٿو exchange rates.n' + 'تبادلي جي شرح حاصل ڪرڻ لاءِ / exchange.n' + 'مدد حاصل ڪرڻ لاءِ /help کي دٻايو.')

رџ حڪم = ['شروع'] سچ جي برابر start_command سڏيو ويندو آهي. پيغام جو مواد اتي وڃي ٿو. اڳيون، توهان کي موڪلڻ واري فنڪشن کي لاڳو ڪرڻ جي ضرورت آهي_پيغام هڪ خاص پيغام جي حوالي سان.

مرحلا 5: ٺاھيو / مدد ڪمانڊ ھينڊلر

/help حڪم کي بٽڻ طور لاڳو ڪري سگھجي ٿو. ان تي ڪلڪ ڪندي، صارف کي ڊولپر جي ٽيليگرام اڪائونٽ تي ورتو ويندو. بٽڻ کي نالو ڏيو، جهڙوڪ "ڊولپر کان پڇو". سيٽ ڪريو جواب_مارڪ اپ پيٽرولر، جيڪو صارف کي موڪلي ٿو ھڪڙي لنڪ ڏانھن، موڪليو_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) درخواست جي حوالي سان موجوده معلومات حاصل ڪرڻ لاء "تازه ڪاري" تي ڪلڪ ڪريو. ' +'بوٽ پڻ ڏيکاريندو پوئين ۽ موجوده مٽاسٽا جي شرحن جي وچ ۾ فرق.n' + '5) بوٽ ان لائن کي سپورٽ ڪري ٿو. قسم @ ڪنهن به چيٽ ۾ ۽ ڪرنسي جي پهرين اکرن ۾.', reply_markup=keyboard )

ٽيليگرام چيٽ ۾ ڪوڊ ايڪشن:

Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

قدم 6: شامل ڪرڻ / ايڪسچينج ڪمانڊ هينڊلر

ھن قدم کي چيٽ ۾ موجود ڪرنسي جي نشانين سان بٽڻ ڏيکارڻ جي ضرورت آھي. اختيارن سان گڏ هڪ آن اسڪرين ڪيبورڊ توهان جي غلطين کان بچڻ ۾ مدد ڪندي. PrivatBank روبل، ڊالر ۽ يورو تي معلومات مهيا ڪري ٿي. InlineKeyboardButton آپشن هن طرح ڪم ڪري ٿو:

  1. استعمال ڪندڙ بٽڻ تي ڪلڪ ڪري مطلوب نامزدگي سان.
  2. getUpdates هڪ ڪال بڪ وصول ڪري ٿي (CallbackQuery).
  3. اهو معلوم ٿئي ٿو ته ڪيبورڊ کي دٻائڻ کي ڪيئن سنڀالجي - دٻائڻ واري بٽڻ بابت معلومات منتقل ڪئي وئي آهي.

/exchange handler ڪوڊ:

@bot.message_handler(commands=['exchange']) def exchange_command(پيغام): keyboard = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('USD', callback_data='get-USD') ڪي بورڊ .id، 'پسند جي ڪرنسي تي ڪلڪ ڪريو:', reply_markup=keyboard )

ٽيليگرام ۾ ڪوڊ جو نتيجو:

Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

مرحلا 7: بلٽ ان ڪيبورڊ بٽڻن لاءِ هينڊلر لکڻ

pyTelegramBot Api پيڪيج تي مشتمل آهي @bot.callback_query_handler سينگار فنڪشن. ھي جزو ٺاھيو ويو آھي ڪال بڪ کي ھڪڙي فنڪشن ۾ ترجمو ڪرڻ لاءِ - API ڪال کي ختم ڪري ٿو ۽ ٻيهر ٺاھي ٿو. اهو هن طرح لکيل آهي:

@bot.callback_query_handler(func=lambda ڪال: True) def iq_callback(query): data = query.data if 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:])

ھڪڙو ٻيو مفيد طريقو آھي - 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(ex)، reply_markup=get_exdate_keyboard ) parse_mode='HTML' )

جڏهن ته چيٽ بوٽ بينڪ کان درخواست جو نتيجو حاصل ڪري ٿو API، دورو ڪندڙ لکت ڏسي ٿو "پيغام ٽائپنگ". اهو لڳي ٿو ته هڪ حقيقي ماڻهو جواب ڏئي رهيو آهي. اسڪرين تي اهڙي اشاري کي ظاهر ڪرڻ لاء، توهان کي ان پٽ اسٽيٽس لائين شامل ڪرڻ جي ضرورت پوندي. اڳيون، اسان استعمال ڪنداسين get_exchange - ان جي مدد سان، پروگرام ڪرنسي جي نامزدگي حاصل ڪندو (روبل، يورو يا ڊالر). send_message اضافي طريقا استعمال ڪري ٿو: serialize_ex ڪرنسي کي ٻي شڪل ۾ بدلائي ٿو، ۽ get_update_keyboard سيٽ اپ ڪري ٿو سافٽ ڪيز جيڪي معلومات کي اپڊيٽ ڪن ٿا ۽ ڪرنسي مارڪيٽ ڊيٽا کي ٻين چيٽ ڏانهن موڪلي ٿو.

اچو ته get_update_keyboard لاءِ ڪوڊ لکون. ٻه بٽڻ جو ذڪر ڪرڻ جي ضرورت آهي - ٽائيپ ۽ ايڪسچينج لاء ٽي ۽ اي موقف. شيئر بٽڻ لاءِ 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': ex['خريد']، 's': ex['sale'], 'c': ex['ccy'] } }) .replace('',') ), telebot.types.InlineKeyboardButton ('Share', switch_inline_query=ex['ccy'])) ڪيبورڊ واپس ڪريو

ڪڏهن ڪڏهن توهان کي ڏسڻ جي ضرورت آهي ته ٿوري وقت ۾ بدلي جي شرح ڪيتري قدر تبديل ٿي وئي آهي. اچو ته Update بٽڻ لاءِ ٻه طريقا لکون ته جيئن صارفين مقابلي ۾ ڪورس ڏسي سگهن.

مٽا سٽا جي شرحن جي وچ ۾ فرق مختلف پيٽرولر ذريعي سيريلائزر ڏانهن منتقل ڪيو ويو آهي.

مقرر ڪيل طريقا صرف ڊيٽا کي اپڊيٽ ڪرڻ کان پوء ڪم ڪن ٿا، اهي ڪورس جي پهرين ڊسپلي کي متاثر نه ڪندا.

def serialize_ex(ex_json، diff=None): نتيجو = '' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':nn' + 'خريد ڪريو: ' + ex_json['buy'] if diff: result += '' + 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): result = '' if 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">)' ايلف ڊف < 0: نتيجو = '(' + 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">)' واپسي جو نتيجو

تصور ڪريو ته دورو ڪندڙ ڊالر جي بدلي جي شرح ڄاڻڻ چاهي ٿو. هتي آهي ڇا ٿيندو جيڪڏهن توهان پيغام ۾ USD چونڊيو ٿا:

Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

مرحلا 8: اپ ڊيٽ بٽڻ هينڊلر کي لاڳو ڪرڻ

اچو ته اپڊيٽ بٽڻ سان عملن کي سنڀالڻ لاءِ ڪوڊ لکون ۽ ان ۾ iq_callback_method حصو شامل ڪريو. جڏهن پروگرام جون شيون شروع ٿينديون حاصل پيٽرولر سان، توهان کي لکڻ گهرجي get_ex_callback. ٻين حالتن ۾، اسان JSON کي پارس ڪريون ٿا ۽ چاٻي حاصل ڪرڻ جي ڪوشش ڪريو.

@bot.callback_query_handler(func=lambda ڪال: 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 توهان جي برابر آهي، توهان کي هڪ پروگرام لکڻو پوندو edit_message_callback طريقي لاءِ. اچو ته هن عمل کي قدم سان ٽوڙيو:

  1. ڪرنسي مارڪيٽ جي حالت بابت تازه ترين معلومات ڊائون لوڊ ڪري رهيو آهي (exchange_now = pb.get_exchange(data['c']).
  1. ڊف سان سيريلائزر ذريعي نئون پيغام لکڻ.
  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() if query.message: bot.edit_message_text(text, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='if_message' HTML'sline ۾. : bot.edit_message_text(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(now['sale'])) - float(last['sale']))), 'buy_diff': float ("%.6f" % (فلوٽ(هاڻي['خريد']) - فلوٽ (آخري['خريد'])))) }

آخري هڪ، get_edited_signature، ڏيکاري ٿو ته ڪورس آخري ڀيرو اپڊيٽ ڪيو ويو هو.

def get_edited_signature(): واپسي 'اپڊيٽ ڪيو ويو ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME +')'

نتيجي طور، بوٽ مان اپڊيٽ ٿيل پيغام مستحڪم تبادلي جي شرح سان هن طرح نظر اچي ٿو:

Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

جڏهن ڪورس تبديل ٿئي ٿو، قدرن جي وچ ۾ فرق بيان ڪيل پيٽرولن جي ڪري پيغام ۾ ڏيکاريا ويندا آهن.

Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

قدم 9: ايمبيڊڊ موڊ لاڳو ڪرڻ

بلٽ ان موڊ جي ضرورت آهي جلدي معلومات کي ڪنهن به چيٽ ڏانهن پروگرام کان موڪلڻ لاءِ - هاڻي توهان کي گفتگو ۾ هڪ بوٽ شامل ڪرڻ جي ضرورت ناهي هڪ شرڪت ڪندڙ جي طور تي. جڏهن هڪ ٽيليگرام استعمال ڪندڙ هڪ بوٽ جو نالو داخل ڪري ٿو ان جي اڳيان @ نشاني سان، تبادلي جا اختيار ان پٽ لائن جي مٿان ظاهر ٿيڻ گهرجن. جيڪڏهن توهان هڪ آئٽم تي ڪلڪ ڪريو ٿا، ته بوٽ گفتگو کي پيغام موڪليندو نتيجن ۽ بٽڻ سان گڏ ڊيٽا کي اپڊيٽ ڪرڻ ۽ موڪلڻ لاء. موڪليندڙ جو نالو ڪيپشن تي مشتمل هوندو "ذريعي ".

InlineQuery لائبريري ذريعي query_text ڏانهن منتقل ڪيو ويو آهي. ڪوڊ ڊيٽا جي صف ۽ 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)))

اسان هن طريقي سان InlineQueryResultArticle مان شيون واپس ڪرڻ لاءِ get_iq_articles ڏانهن ڊيٽا جو هڪ سلسلو پاس ڪندا آهيون.

def get_iq_articles(exchanges): result = [] exc in exchanges: result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputTextemContent ( serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1)) واپسي جو نتيجو

هاڻي، جيڪڏهن توهان لکندا آهيو @ ۽ لڪير ۾ هڪ جڳهه، ڳولا جا نتيجا اسڪرين تي ظاهر ٿيندا - ٽن دستياب ڪرنسي ۾ تبديل ڪرڻ جا اختيار.

Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

صارفين مطلوب ڪرنسي داخل ڪندي نتيجن کي فلٽر ڪري سگھن ٿا.

لسٽ مان گهربل ڪرنسي تي ڪلڪ ڪرڻ کان پوء، چيٽ ساڳيو پيغام وصول ڪري ٿو جيڪو بوٽ استعمال ڪندڙن کي ملي ٿو. توھان پڻ استعمال ڪري سگھو ٿا تازه ڪاري بٽڻ. هيٺ ڏنل تصوير ڏيکاري ٿو تازه ڪاري پيغام بوٽ ذريعي موڪليو ويو:

Python ۾ ٽيليگرام بوٽ. شروع کان مٽاسٽا جي شرح سان هڪ بوٽ لکڻ لاءِ مڪمل گائيڊ

ٿڪل

هاڻي توهان ڄاڻو ٿا ته ٽيليگرام لاء هڪ بوٽ ڪيئن ٺاهيو. توھان پنھنجي پروگرام ۾ مفيد اوزار شامل ڪري سگھو ٿا: ميسينجر جي ٻين استعمال ڪندڙن کي نتيجن کي اپڊيٽ ڪرڻ ۽ موڪلڻ لاءِ بٽڻ ۽ ھڪ بلٽ ان موڊ جيڪو توھان کي اجازت ڏئي ٿو بوٽ جا افعال ان سان چيٽ کان ٻاھر استعمال ڪري سگھوٿا. ھن ھدايت جي بنياد تي، توھان ٺاھي سگھو ٿا ڪو سادو بوٽ ٻين ڪمن سان گڏ - نه رڳو اھو جيڪو ڏيکاريندو مٽا سٽا جي شرح. هڪ خودڪار اسسٽنٽ ٺاهڻ لاءِ لائبريرين، APIs ۽ ڪوڊ سان تجربا ڪرڻ کان نه ڊڄو جيڪو صارفين سان ٽيليگرام تي چيٽ ڪندو ۽ ڪمپني سان دلچسپي رکندڙ ماڻهن جو رابطو مضبوط ڪندو.

1 ڪمينٽ

  1. شاندار پبليڪيشن

جواب ڇڏي وڃو