دکمه های صفحه کلید در ربات تلگرام با استفاده از پایتون
موسسه پایا پروژه به عنوان متصدی انجام پروژه های پایتون وظیفه ی خود می داند که در راستای آموزش نرم افزار پایتون گام های موثری را بردارد. با توجه به اینکه یک دوره آموزشی پایتون مستلزم تمرین و تلاش بسیار است. اما این موسسه تلاش می کند سهم کوچکی در جهت یادگیری شما داشته باشد.
یکی از راه های متداول تعامل ما با ربات تلگرام استفاده از دکمه های صفحه کلید است. این دکمهها روشی راحت و بصری برای وارد کردن دادهها و انجام اقدامات خاص در ربات میدهند. بدون دکمه های صفحه کلید، ما باید به صورت دستی مشابه یک پروژه پایتون دستورات یا پاسخ ها را تایپ کنیم، که ممکن است زمان بر باشد و ممکن است منجر به خطا شود.
دکمههای صفحهکلید همچنین به ما اجازه میدهند تا تجربه کاربرپسندتر و جذابتری را برای کاربرانشان فراهم کنیم. رباتها با ارائه گزینههای واضح و سازماندهیشده به کاربران، میتوانند کاربران را در جریانهای کاری پیچیده راهنمایی کنند یا به آنها کمک کنند تا به سرعت به اطلاعات یا عملکرد مورد نیاز خود دسترسی پیدا کنند.
در این مقاله قصد داریم نحوه ساخت دکمه های صفحه کلید در پایتون را با کمک فریم ورک Aiogram ببینیم .
فریم ورک آیوگرام در انجام پروژه پایتون
Aiogram یک چارچوب ناهمزمان منبع باز در انجام پروژه پایتون است که از asyncio و aiohttp برای ساخت ربات های تلگرام استفاده می کند. این یک رابط کاربر پسند برای TelegramBotApi فراهم می کند که توسعه ربات را آسان تر و سریعتر می کند. با کمک آیوگرام، ما میتوانیم به راحتی انواع مختلفی از قابلیتهای ربات، از جمله ارسال و دریافت پیام، مدیریت تعاملات کاربر با دکمههای صفحهکلید، رسیدگی به پرس و جوهای درون خطی و موارد دیگر را پیادهسازی کنیم.
با استفاده از دستورات زیر در ترمینال می توانید آیوگرام را نصب کنید:
By using pip#
pip install -U aiogram
By using pipenv#
pipenv install aiogram
انواع دکمه های کیبورد در ربات تلگرام
دو نوع دکمه صفحه کلید وجود دارد که می توانیم از آنها برای فعال کردن کاربران برای تعامل با ربات استفاده کنیم. آنها به شرح زیر است:
- ReplyKeyboardButton: این نوع دکمه صفحه کلید برای ارائه مجموعه ای از گزینه های از پیش تعریف شده به کاربر در صفحه کلید پاسخ استفاده می شود. هنگامی که کاربر روی دکمه ای کلیک می کند، متن برچسب زده شده به عنوان پیام به ربات تلگرام ارسال می شود. این یک راه ساده و آسان برای تعامل بین کاربر و ربات تلگرام ارائه می دهد.
- InlinekeyboardButton: این نوع صفحه کلید نشان دهنده یک دکمه از یک صفحه کلید درون خطی است. این دکمه ها برای ارائه مجموعه ای از گزینه ها برای انتخاب کاربران در صفحه کلید درون خطی برای انجام یک کار خاص استفاده می شوند. با کلیک بر روی دکمه، ربات یک تماس پاسخ دریافت می کند.
مراحل دریافت توکن ربات تلگرام
بیایید نحوه تنظیم و دریافت توکن API برای ربات تلگرام را ببینیم.
- با تایپ @BotFather در نوار جستجو، ربات BotFather را جستجو کنید .
- روی آن کلیک کنید تا چت با BotFather باز شود. سپس، روی دکمه “شروع” کلیک کنید تا با BotFather تعامل کنید.
- برای ایجاد یک ربات جدید، دستور “/newbot” را وارد کنید . سپس ربات BotFather شما را در فرآیند ایجاد ربات، از جمله دادن نام و نام کاربری به ربات خود راهنمایی می کند.
توجه: نام کاربری باید همیشه منحصر به فرد باشد و با “bot” ختم شود .
- توکن بالا نشان داده شده در تصویر قرار است به عنوان ربات توکن و کلید دسترسی به API تلگرام استفاده شود. مطمئن شوید که توکن را کپی کرده و ایمن نگه دارید.
توجه : حداقل نسخه پایتون مورد نیاز برای استفاده از آیوگرام پایتون 3.7 یا بالاتر است.
با اجرای دستور زیر در ترمینال یا خط فرمان می توانید نسخه پایتون نصب شده روی سیستم خود را بررسی کنید:
دکمه InlineKeyboard در ربات تلگرام با استفاده از پایتون
بیایید ببینیم چگونه می توانیم دکمه صفحه کلید درون خطی را در ربات تلگرام ایجاد کنیم.
1. وارد کردن کتابخانه های مورد نیاز
در این مرحله کتابخانه های مورد نیاز در پروژه پایتون برای ساخت InlineKeyboardButton را با استفاده از کتابخانه aiogram وارد می کنیم.
- ربات: این کلاس یک ربات تلگرام را نشان می دهد و به شما امکان ارسال پیام، عکس، فیلم، اسناد و انواع دیگر محتوا را برای کاربران تلگرام می دهد.
- Dispatcher: این کلاس بخش مرکزی کتابخانه aiogram است و پیام های دریافتی و به روز رسانی های کاربران تلگرام را مدیریت می کند.
- executor: این ماژول شامل توابعی است که ربات را اجرا می کند و به روز رسانی های دریافتی از تلگرام را مدیریت می کند.
- Types: این ماژول شامل تمامی انواع مورد استفاده در کتابخانه آیوگرام مانند Message، User، Chat و CallbackQuery می باشد.
- InlineKeyboardMarkup: این کلاس برای ایجاد کیبوردهای درون خطی در تلگرام استفاده می شود.
- InlineKeyboardButton: این کلاس نشان دهنده یک دکمه در یک صفحه کلید درون خطی است.
2. توکنی را که از BotFather دریافت کرده اید در نقل قول قرار دهید
در این مرحله یک آبجکت Bot ایجاد می کنیم و توکن ربات به دست آمده از BotFather را ارسال می کنیم. ما قبلا در مورد چگونگی دریافت این توکن ربات صحبت کرده ایم.
bot = Bot(token=”)
3. مقداردهی اولیه شی دیسپاچر
در این مرحله شی Dispatcher را با آبجکت Bot که در مرحله قبل ایجاد کردیم مقداردهی اولیه می کنیم. شی Dispatcher مسئول پردازش به روز رسانی های دریافتی و اتصال آنها به کنترل کننده های مناسب است.
dp = Dispatcher(bot)
4. تعریف و اضافه کردن دکمه ها
در این مرحله، دو شیء InlineKeyboardButton به نامهای button1 و button2 را تعریف کرده و به یک شیء InlineKeyboardMarkup به نام keyboard_inline اضافه میکنیم . ویژگی متن هر دکمه برچسب نمایش داده شده روی دکمه را تنظیم می کند و ویژگی callback_data داده ای است که ربات با فشار دادن دکمه دریافت می کند.
button1 = InlineKeyboardButton(text=”button1″, callback_data=”In_First_button”)
button2 = InlineKeyboardButton(text=”button2″, callback_data=”In_Second_button”)
keyboard_inline = InlineKeyboardMarkup().add(button1, button2)
5.کنترل کننده پیام برای دستور “/start”.
در این مرحله، با استفاده از دکوراتور message_handler یک handler پیام تعریف می کنیم. هر زمان که کاربر دستور “/start” را برای ربات ارسال کند، این کنترلر فراخوانی می شود. تابع چک پیامی را با متن “hi! چطوری» و صفحه کلید درون خطی را که در مرحله قبل تعریف کردیم با استفاده از پارامتر reply_markup وصل می کند .
dp.message_handler(commands=[‘start’])@
:async def check(message: types.Message)
await message.reply(“hi! how are you”, reply_markup=keyboard_inline)
6.کنترل کننده درخواست پاسخ به تماس برای دکمه های صفحه کلید درون خطی
در این مرحله از انجام پروژه پایتون با استفاده از دکوراتور callback_query_handler یک callback query handler تعریف می کنیم. هر زمان که کاربر روی یکی از خطوط درونی کلیک کند، این کنترلر فراخوانی می شود.
dp.callback_query_handler(text=[“In_First_button”, “In_Second_button”])@
:async def check_button(call: types.CallbackQuery)
:”if call.data == “In_First_button
await call.message.answer(“Hi! This is the first inline keyboard button”.)
:”if call.data == “In_Second_button
await call.message.answer(“Hi! This is the second inline keyboard button”.)
()await call.answer
7. بات را راه اندازی کنید
در این مرحله ربات را با استفاده از روش start_polling ماژول executor راه اندازی می کنیم. این روش یک حلقه بی نهایت راه اندازی می کند که به روزرسانی های دریافتی از تلگرام گوش می دهد و آنها را برای پردازش به شی Dispatcher ارسال می کند. ربات تا زمانی که برنامه را به صورت دستی خاتمه ندهیم به کار خود ادامه می دهد.
executor.start_polling(dp)
خروجی:

منابع:
