পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

টেলিগ্রামে বটগুলি হল এমন প্রোগ্রাম যা দর্শকদের সাথে যোগাযোগ স্থাপন করতে বা ক্রিয়াগুলিকে সরল করতে সাহায্য করে যা আগে ম্যানুয়ালি করতে হত৷ এই প্রোগ্রামগুলি মেসেঞ্জার প্ল্যাটফর্মের জন্য বিশেষভাবে লেখা হয়। বটগুলি এইভাবে কাজ করে: ব্যবহারকারী ইনপুট লাইনের মাধ্যমে একটি কমান্ড পাঠায় এবং সিস্টেমটি একটি পাঠ্য বা ইন্টারেক্টিভ বার্তার সাথে প্রতিক্রিয়া জানায়। কখনও কখনও প্রোগ্রাম এমনকি একটি বাস্তব ব্যক্তির কর্ম অনুকরণ করে – এই ধরনের একটি বট গ্রাহকদের মধ্যে আরও বিশ্বাস অনুপ্রাণিত করে।

ব্যবহারকারীদের স্বয়ংক্রিয় সহায়তার জন্য বিভিন্ন ধরণের সিস্টেম রয়েছে। কিছু বট শুধুমাত্র গ্রাহকদের সাথে যোগাযোগ করে, অন্যরা নিয়মিত তথ্য প্রদান করে। প্রোগ্রামগুলিকে স্পষ্টভাবে প্রকারে ভাগ করা অসম্ভব - বিকাশকারীরা প্রায়শই একটি বটে বিভিন্ন ফাংশন একত্রিত করে।

আপনি 9টি ধাপে অন-স্ক্রিন বোতাম আকারে ইন্টারেক্টিভ উপাদান সহ টেলিগ্রামের জন্য একটি সাধারণ বট লিখতে পারেন। আসুন তাদের প্রতিটিকে বিস্তারিতভাবে দেখি এবং কয়েকটি প্রশ্নের উত্তর দিই:

  • কিভাবে একটি বট শুরু করতে হয়;
  • এক বা একাধিক বোতাম থেকে একটি অন্তর্নির্মিত কীবোর্ড কীভাবে নিবন্ধন করবেন;
  • পছন্দসই ফাংশনগুলির জন্য বোতামগুলি কীভাবে প্রোগ্রাম করবেন;
  • ইনলাইন মোড কী এবং বিদ্যমান বটের জন্য এটি কীভাবে সেট আপ করবেন।

ধাপ 0: টেলিগ্রাম বট API সম্পর্কে তাত্ত্বিক পটভূমি

টেলিগ্রাম বট তৈরি করতে ব্যবহৃত প্রধান টুল হল HTML অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস, বা HTML API। এই উপাদান দর্শকদের অনুরোধ গ্রহণ করে এবং তথ্য আকারে প্রতিক্রিয়া পাঠায়। রেডিমেড ডিজাইন প্রোগ্রামের কাজকে সহজ করে। টেলিগ্রামের জন্য একটি বট লিখতে, আপনাকে এই ইমেল ঠিকানাটি ব্যবহার করতে হবে: https://api.telegram.org/bot/METHOD_NAME

বটটির সঠিক কার্যকারিতার জন্য, একটি টোকেনও প্রয়োজন - অক্ষরের সংমিশ্রণ যা প্রোগ্রামটিকে সুরক্ষিত করে এবং বিশ্বস্ত বিকাশকারীদের কাছে এটির অ্যাক্সেস খুলে দেয়। প্রতিটি টোকেন অনন্য। স্ট্রিং তৈরির পরে বটকে বরাদ্দ করা হয়। পদ্ধতি ভিন্ন হতে পারে: getUpdates, getChat এবং অন্যান্য। বিকাশকারীরা বট থেকে কী অ্যালগরিদম আশা করে তার উপর পদ্ধতির পছন্দ নির্ভর করে। টোকেন উদাহরণ:

123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

বটগুলি GET এবং POST অনুরোধগুলি ব্যবহার করে৷ পদ্ধতির পরামিতিগুলিকে প্রায়শই পরিপূরক করতে হয় - উদাহরণস্বরূপ, যখন sendMessage পদ্ধতিতে চ্যাট আইডি এবং কিছু পাঠ্য পাঠানোর কথা। পদ্ধতি পরিমার্জনের জন্য পরামিতি একটি URL ক্যোয়ারী স্ট্রিং হিসাবে অ্যাপ্লিকেশন/x-www-form-urlencoded ব্যবহার করে বা application-json এর মাধ্যমে পাস করা যেতে পারে। এই পদ্ধতিগুলি ফাইল ডাউনলোড করার জন্য উপযুক্ত নয়। UTF-8 এনকোডিংও প্রয়োজন। API এ একটি অনুরোধ পাঠিয়ে, আপনি JSON ফর্ম্যাটে ফলাফল পেতে পারেন। GetME পদ্ধতির মাধ্যমে তথ্য পুনরুদ্ধার করার জন্য প্রোগ্রামের প্রতিক্রিয়া দেখুন:

https://api.telegram.org/bot পান/getMe{ ঠিক আছে: সত্য, ফলাফল: { আইডি: 231757398, প্রথম_নাম: "এক্সচেঞ্জ রেট বট", ব্যবহারকারীর নাম: "এক্সচেঞ্জেস্টবট" } }

হলে ফল পাওয়া যাবে ok সমান সত্য. অন্যথায়, সিস্টেম একটি ত্রুটি নির্দেশ করবে।

বটগুলিতে কাস্টম বার্তা পাওয়ার দুটি উপায় রয়েছে। উভয় পদ্ধতি কার্যকর, কিন্তু বিভিন্ন ক্ষেত্রে উপযুক্ত। বার্তাগুলি পেতে, আপনি getUpdates পদ্ধতিতে ম্যানুয়ালি একটি অনুরোধ লিখতে পারেন – প্রোগ্রামটি পর্দায় আপডেট ডেটা অ্যারে প্রদর্শন করবে। অনুরোধগুলি অবশ্যই নিয়মিত পাঠাতে হবে, প্রতিটি অ্যারে বিশ্লেষণ করার পরে, পাঠানোর পুনরাবৃত্তি হয়। অফসেট হল একটি পরামিতি যা চেক করা বস্তুর পুনরায় উপস্থিতি এড়াতে একটি নতুন ফলাফল লোড করার আগে এড়িয়ে যাওয়া রেকর্ডের সংখ্যা নির্ধারণ করে। getUpdates পদ্ধতির সুবিধাগুলি কার্যকর হবে যদি:

  • HTTPS কনফিগার করার কোন উপায় নেই;
  • জটিল স্ক্রিপ্টিং ভাষা ব্যবহার করা হয়;
  • বট সার্ভার সময়ে সময়ে পরিবর্তিত হয়;
  • বট ব্যবহারকারীদের সঙ্গে লোড করা হয়.

দ্বিতীয় পদ্ধতি যা ব্যবহারকারীর বার্তাগুলি গ্রহণ করার জন্য লেখা যেতে পারে সেটি হল সেটওয়েবহুক। এটি একবার ব্যবহার করা হয়, ক্রমাগত নতুন অনুরোধ পাঠাতে হবে না। ওয়েবহুক নির্দিষ্ট URL-এ ডেটা আপডেট পাঠায়। এই পদ্ধতির জন্য একটি SSL শংসাপত্র প্রয়োজন৷ ওয়েবহুক এই ক্ষেত্রে দরকারী হবে:

  • ওয়েব প্রোগ্রামিং ভাষা ব্যবহার করা হয়;
  • বট ওভারলোড হয় না, খুব বেশি ব্যবহারকারী নেই;
  • সার্ভার পরিবর্তন হয় না, প্রোগ্রামটি একই সার্ভারে দীর্ঘ সময়ের জন্য থাকে।

পরবর্তী নির্দেশাবলীতে, আমরা getUpdates ব্যবহার করব।

@BotFather টেলিগ্রাম পরিষেবাটি চ্যাট বট তৈরি করার জন্য ডিজাইন করা হয়েছে। এই সিস্টেমের মাধ্যমে বেসিক সেটিংসও সেট করা আছে - বটফাদার আপনাকে একটি বিবরণ তৈরি করতে, একটি প্রোফাইল ফটো রাখতে, সহায়তা সরঞ্জাম যোগ করতে সহায়তা করবে। লাইব্রেরি - টেলিগ্রাম বটগুলির জন্য এইচটিএমএল অনুরোধের সেট - ইন্টারনেটে উপলব্ধ, সেগুলির মধ্যে অনেকগুলি রয়েছে৷ উদাহরণ প্রোগ্রাম তৈরি করার সময়, 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 in load_exchange(): if ccy_key == exc['ccy']: exc ফেরত False 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", buy:"25.90000", sale:"26.25000" }, { ccy:"EUR", base_ccy:"UAH", কিনুন:"29.10000", বিক্রয়:"29.85000 " }, { ccy:"RUR", base_ccy:"UAH", buy:"0.37800", sale:"0.41800" }, { ccy:"BTC", base_ccy:"USD", কিনুন:"11220.0384", বিক্রয়: "12401.0950" } ]

ধাপ 2: @BotFather দিয়ে একটি টেলিগ্রাম বট তৈরি করুন

আপনি @BotFather পরিষেবা ব্যবহার করে বার্তা গ্রহণ এবং তাদের প্রতিক্রিয়া জানাতে একটি প্রোগ্রাম তৈরি করতে পারেন। তার টেলিগ্রাম পৃষ্ঠায় যান এবং /newbot কমান্ড লিখুন। নির্দেশাবলী চ্যাটে উপস্থিত হবে, যা অনুসারে আপনাকে প্রথমে বটের নাম এবং তারপরে এর ঠিকানা লিখতে হবে। বট অ্যাকাউন্ট তৈরি হয়ে গেলে, একটি টোকেন সম্বলিত একটি স্বাগত বার্তা স্ক্রিনে উপস্থিত হবে। আরও কনফিগারেশনের জন্য, এই কমান্ডগুলি ব্যবহার করুন:

  • /সেট বর্ণনা - বর্ণনা;
  • /setabouttext - নতুন বট সম্পর্কে তথ্য;
  • /setuserpic – প্রোফাইল ফটো;
  • /সেটিনলাইন - ইনলাইন মোড;
  • /setcommands - কমান্ডের বিবরণ।

শেষ কনফিগারেশন ধাপে, আমরা /help এবং /exchange বর্ণনা করি। যখন সমস্ত পদক্ষেপগুলি সম্পন্ন করা হয়, তখন কোডিংয়ে এগিয়ে যাওয়ার সময়।

ধাপ 3: বট সেট আপ এবং চালু করা

একটি config.py ফাইল তৈরি করা যাক। এটিতে, আপনাকে অনন্য বট কোড এবং প্রোগ্রামটি যে সময় অঞ্চলে তথ্য খুঁজে পাবে তা নির্দিষ্ট করতে হবে।

টোকেন = '' # আপনার বটের টোকেন দিয়ে প্রতিস্থাপন করুনTIMEZONE = 'ইউরোপ/কিয়েভ' TIMEZONE_COMMON_NAME = 'কিয়েভ'

এর পরে, আমরা পূর্বে লিখিত pb.py, লাইব্রেরি এবং অন্যান্য প্রয়োজনীয় উপাদানগুলি আমদানি করে আরেকটি ফাইল তৈরি করি। অনুপস্থিত লাইব্রেরিগুলি প্যাকেজ ম্যানেজমেন্ট সিস্টেম (পিপ) ​​থেকে ইনস্টল করা হয়।

টেলিবোটিমপোর্ট কনফিগার আমদানি করুন pbimport datetime import pytzimport jsonimport ট্রেসব্যাক 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(বার্তা): bot.send_message( message.chat.id, 'শুভেচ্ছা! আমি আপনাকে এক্সচেঞ্জ রেট দেখাতে পারি. n' + 'এক্সচেঞ্জ রেট পেতে / টিপুন exchange.n' + 'সহায়তা পেতে /help চাপুন।')

RџСўРё আদেশ=['শুরু'] সত্যের সমান start_command বলা হয়। বার্তার বিষয়বস্তু সেখানে যায়। এর পরে, আপনাকে প্রেরণ ফাংশনটি বাস্তবায়ন করতে হবে_বার্তা একটি নির্দিষ্ট বার্তার সাথে সম্পর্কিত।

ধাপ 5: একটি /help কমান্ড হ্যান্ডলার তৈরি করুন

/help কমান্ডটি একটি বোতাম হিসাবে প্রয়োগ করা যেতে পারে। এটিতে ক্লিক করার মাধ্যমে, ব্যবহারকারীকে ডেভেলপারের টেলিগ্রাম অ্যাকাউন্টে নিয়ে যাওয়া হবে। বোতামটিকে একটি নাম দিন, যেমন "বিকাশকারীকে জিজ্ঞাসা করুন"৷ উত্তর_মার্কআপ প্যারামিটার সেট করুন, যা ব্যবহারকারীকে send_message পদ্ধতির জন্য একটি লিঙ্কে পুনঃনির্দেশ করে। কোডে প্যারামিটারটি লিখি যা কীবোর্ড (ইনলাইনকিবোর্ডমার্কআপ) তৈরি করে। আপনার শুধুমাত্র একটি বোতাম প্রয়োজন (ইনলাইন কীবোর্ড বোতাম)।

চূড়ান্ত কমান্ড হ্যান্ডলার কোড এই মত দেখায়:

@bot.message_handler(commands=['help']) def help_command(বার্তা): কীবোর্ড = 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 )

টেলিগ্রাম চ্যাটে কোড অ্যাকশন:

পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

ধাপ 6: /এক্সচেঞ্জ কমান্ড হ্যান্ডলার যোগ করা

চ্যাটে উপলব্ধ মুদ্রার প্রতীক সহ বোতামগুলি প্রদর্শন করার জন্য এই পদক্ষেপটি প্রয়োজন৷ অপশন সহ একটি অন-স্ক্রীন কীবোর্ড আপনাকে ভুল এড়াতে সাহায্য করবে। PrivatBank রুবেল, ডলার এবং ইউরো সম্পর্কে তথ্য প্রদান করে। InlineKeyboardButton বিকল্পটি এভাবে কাজ করে:

  1. ব্যবহারকারী পছন্দসই পদবী সহ বোতামে ক্লিক করেন।
  2. getUpdates একটি কলব্যাক (CallbackQuery) পায়।
  3. কীবোর্ড টিপে কীভাবে পরিচালনা করতে হয় তা জানা হয়ে যায় – চাপা বোতাম সম্পর্কে তথ্য প্রেরণ করা হয়।

/এক্সচেঞ্জ হ্যান্ডলার কোড:

@bot.message_handler(commands=['exchange']) def exchange_command(বার্তা): কীবোর্ড = telebot.types.InlineKeyboardMarkup() keyboard.row( telebot.types.InlineKeyboardButton('USD', callback_data='get-USD') ) কীবোর্ড.রো .id, 'পছন্দের মুদ্রায় ক্লিক করুন:', reply_markup=keyboard )

টেলিগ্রামে কোডের ফলাফল:

পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

ধাপ 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(query): 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, 'typing') ex = pb.get_exchange(ex_code) bot.send_message( message.chat.id, serialize_ex(ex), reply_markup=get_exdate_key ), parse_mode='HTML' )

যখন চ্যাটবট ব্যাংক থেকে অনুরোধের ফলাফল পায় এপিআই, দর্শক শিলালিপি দেখেন "একটি বার্তা টাইপ করা"৷ মনে হচ্ছে একজন সত্যিকারের মানুষ উত্তর দিচ্ছে। স্ক্রিনে এই ধরনের একটি সূচক প্রদর্শন করতে, আপনাকে ইনপুট স্ট্যাটাস লাইন যোগ করতে হবে। এর পরে, আমরা get_exchange ব্যবহার করব - এর সাহায্যে, প্রোগ্রামটি মুদ্রা উপাধি (রুবেল, ইউরো বা ডলার) পাবে। send_message অতিরিক্ত পদ্ধতি ব্যবহার করে: serialize_ex মুদ্রাকে অন্য ফরম্যাটে রূপান্তর করে, এবং get_update_keyboard সফটকি সেট আপ করে যা তথ্য আপডেট করে এবং মুদ্রা বাজারের ডেটা অন্যান্য চ্যাটে পাঠায়।

get_update_keyboard এর জন্য কোড লিখি। দুটি বোতাম উল্লেখ করা দরকার - t এবং e টাইপ এবং বিনিময়ের জন্য দাঁড়ায়। শেয়ার বোতামের জন্য switch_inline_query আইটেমটি প্রয়োজন যাতে ব্যবহারকারী বিভিন্ন চ্যাট থেকে বেছে নিতে পারেন। দর্শনার্থী ডলার, রুবেল বা ইউরোর বর্তমান বিনিময় হার কাকে পাঠাবেন তা চয়ন করতে সক্ষম হবেন।

def get_update_keyboard(ex): 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'])) রিটার্ন কীবোর্ড

কখনও কখনও আপনাকে দেখতে হবে অল্প সময়ের মধ্যে বিনিময় হার কত পরিবর্তিত হয়েছে। আসুন আপডেট বোতামের জন্য দুটি পদ্ধতি লিখি যাতে ব্যবহারকারীরা তুলনামূলকভাবে কোর্স দেখতে পারেন।

বিনিময় হারের মধ্যে পার্থক্য ডিফ প্যারামিটারের মাধ্যমে সিরিয়ালাইজারে প্রেরণ করা হয়।

নির্ধারিত পদ্ধতিগুলি ডেটা আপডেট করার পরেই কাজ করে, তারা কোর্সের প্রথম প্রদর্শনকে প্রভাবিত করবে না।

def serialize_ex(ex_json, diff=None): ফলাফল = '' + ex_json['base_ccy'] + ' -> ' + ex_json['ccy'] + ':nn' + 'Buy: ' + 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): ফলাফল = '' যদি পার্থক্য > 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( পার্থক্য)[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 নির্বাচন করলে কি হবে তা এখানে:

পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

ধাপ 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: try: if json.loads(data)[ 't'] == 'u': edit_message_callback(query) ValueError ছাড়া: পাস

যদি 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() যদি query.message: bot.edit_message_text( পাঠ্য, query.message.chat.id, query.message.message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='if_message HTML's-line el_message) : bot.edit_message_text( পাঠ্য, inline_message_id=query.inline_message_id, reply_markup=get_update_keyboard(exchange_now), parse_mode='HTML' )

আসুন JSON পার্স করার জন্য get_ex_from_iq_data পদ্ধতি লিখি:

def get_ex_from_iq_data(exc_json): ফেরত দিন { 'buy': exc_json['b'], 'sale': exc_json['s'] }

আপনার আরও কয়েকটি পদ্ধতির প্রয়োজন হবে: উদাহরণস্বরূপ, get_exchange_diff, যা মুদ্রার মূল্য সম্পর্কে পুরানো এবং নতুন তথ্য পড়ে এবং পার্থক্য প্রদর্শন করে।

def get_exchange_diff(শেষ, এখন): ফেরত { 'sale_diff': float("%.6f" % (float(now['sale'])) - float(last['sale']))), 'buy_diff': float ("%.6f" % (float(এখন['buy']) - float(last['buy'])))) }

শেষটি, get_edited_signature, কোর্সটি শেষবার আপডেট করার সময় দেখায়।

def get_edited_signature(): ফেরত 'আপডেট করা হয়েছে ' + str(datetime.datetime.now(P_TIMEZONE).strftime('%H:%M:%S')) + ' (' + TIMEZONE_COMMON_NAME + ')'

ফলস্বরূপ, একটি স্থিতিশীল বিনিময় হার সহ বট থেকে আপডেট হওয়া বার্তাটি এইরকম দেখাচ্ছে:

পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

যখন কোর্স পরিবর্তিত হয়, নির্ধারিত পরামিতিগুলির কারণে মানগুলির মধ্যে পার্থক্যগুলি বার্তায় প্রদর্শিত হয়।

পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

ধাপ 9: এমবেডেড মোড বাস্তবায়ন

প্রোগ্রাম থেকে যেকোনো চ্যাটে দ্রুত তথ্য পাঠাতে বিল্ট-ইন মোড প্রয়োজন – এখন আপনাকে অংশগ্রহণকারী হিসেবে কথোপকথনে একটি বট যোগ করার প্রয়োজন নেই। যখন একজন টেলিগ্রাম ব্যবহারকারী তার সামনে @ চিহ্ন সহ একটি বট নাম প্রবেশ করান, তখন ইনপুট লাইনের উপরে রূপান্তর বিকল্পগুলি উপস্থিত হওয়া উচিত। আপনি যদি আইটেমগুলির একটিতে ক্লিক করেন, বটটি ডেটা আপডেট এবং পাঠানোর জন্য ফলাফল এবং বোতাম সহ কথোপকথনে একটি বার্তা পাঠাবে। প্রেরকের নামের ক্যাপশন থাকবে “এর মাধ্যমে "।

InlineQuery লাইব্রেরির মাধ্যমে query_text এ পাঠানো হয়। কোডটি ডেটার অ্যারে এবং inline_query_id উপাদান হিসাবে অনুসন্ধান ফলাফল পুনরুদ্ধার করতে answer_line ফাংশন ব্যবহার করে। আমরা get_exchanges ব্যবহার করি যাতে বট অনুরোধে বিভিন্ন মুদ্রা খুঁজে পায়।

@bot.inline_handler(func=lambda ক্যোয়ারী: 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-এর জন্য: result.append( telebot.types.InlineQueryResultArticle( id=exc['ccy'], title=exc['ccy'], input_message_content=telebot.types.InputagesContent ( serialize_ex(exc), parse_mode='HTML' ), reply_markup=get_update_keyboard(exc), description='Convert ' + exc['base_ccy'] + ' -> ' + exc['ccy'], thumb_height=1)) ফেরত ফলাফল

এখন লিখলে @ এবং লাইনে একটি স্থান, অনুসন্ধানের ফলাফলগুলি স্ক্রিনে প্রদর্শিত হবে - তিনটি উপলব্ধ মুদ্রায় রূপান্তর করার বিকল্পগুলি।

পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

ব্যবহারকারীরা পছন্দসই মুদ্রা প্রবেশ করে ফলাফল ফিল্টার করতে পারেন।

তালিকা থেকে পছন্দসই মুদ্রায় ক্লিক করার পরে, চ্যাট একই বার্তা পায় যা বট ব্যবহারকারীরা পান। আপনি আপডেট বোতামটিও ব্যবহার করতে পারেন। নীচের ছবিটি বটের মাধ্যমে পাঠানো আপডেট করা বার্তা দেখায়:

পাইথনে টেলিগ্রাম বট। স্ক্র্যাচ থেকে বিনিময় হার সহ একটি বট লেখার জন্য একটি সম্পূর্ণ নির্দেশিকা

উপসংহার

এখন আপনি টেলিগ্রামের জন্য একটি বট তৈরি করতে জানেন। আপনি আপনার প্রোগ্রামে দরকারী টুল যোগ করতে পারেন: মেসেঞ্জারের অন্যান্য ব্যবহারকারীদের ফলাফল আপডেট এবং পাঠানোর জন্য বোতাম এবং একটি বিল্ট-ইন মোড যা আপনাকে এটির সাথে চ্যাটের বাইরে বটের ফাংশনগুলি ব্যবহার করতে দেয়। এই নির্দেশের উপর ভিত্তি করে, আপনি অন্যান্য ফাংশন সহ যেকোন সাধারণ বট তৈরি করতে পারেন - শুধুমাত্র একটি নয় যা বিনিময় হার দেখাবে। একটি স্বয়ংক্রিয় সহকারী তৈরি করতে লাইব্রেরি, API এবং কোড নিয়ে পরীক্ষা করতে ভয় পাবেন না যা টেলিগ্রামে গ্রাহকদের সাথে চ্যাট করবে এবং কোম্পানির সাথে আগ্রহী ব্যক্তিদের সংযোগকে শক্তিশালী করবে।

1 মন্তব্য

  1. ফ্যান্টাস্টিকা প্রকাশনা

নির্দেশিকা সমন্ধে মতামত দিন