پنج شنبه, 07 ارديبهشت 1402 04:44

آموزش ساخت ربات تلگرامی به زبان پایتون با یک مثال ساده!

امروز میخوام به شما بگم چطوری با زبان برنامه نویسی پایتون یک ربات تلگرامی بسازید که درصورت اجرای دستور بروزرسانی، یک عدد را از یک فایل متنی خوانده و به کاربر نشان بده.

شما برای ساختن ربات تلگرامی می‌توانید از کتابخانه‌ی پایتون python-telegram-bot (من توی این مثال از نسخه 13.7 استفاده کردم) استفاده کنید. برای خواندن یک عدد از یک فایل متنی، می‌توانید از تابع readline() استفاده کنید. در ادامه کدی را برای شما نوشتم که یک ربات تلگرامی ساده را پیاده‌سازی کرده و در صورت دریافت دستور /update، یک عدد را از یک فایل متنی خوانده و به کاربر نمایش می‌دهد:


import telegram

# توکن ربات تلگرامی خود را وارد کنید
TOKEN = 'YOUR_TOKEN_HERE'

# نام فایل متنی که می‌خواهید از آن عدد خوانده شود
FILE_NAME = 'numbers.txt'

# ساخت یک شیء از کلاس `telegram.Bot` با استفاده از توکن خود
bot = telegram.Bot(token=TOKEN)

# تابعی برای خواندن عدد از فایل متنی
def read_number():
    with open(FILE_NAME, 'r') as f:
        number = int(f.readline())
    return number

# تابعی برای پاسخ به دستور `/update`
def update_handler(update, context):
    # خواندن عدد از فایل متنی
    number = read_number()
    # ارسال عدد به کاربر
    context.bot.send_message(chat_id=update.effective_chat.id, text=f"The number is {number}")

# ساخت یک شیء از کلاس `telegram.ext.CommandHandler` برای دستور `/update`
update_command_handler = telegram.ext.CommandHandler('update', update_handler)

# ساخت یک شیء از کلاس `telegram.ext.Updater` و اضافه کردن دستور `/update` به آن
updater = telegram.ext.Updater(token=TOKEN, use_context=True)
updater.dispatcher.add_handler(update_command_handler)

# شروع دسترسی به پیام‌های جدید
updater.start_polling()

در این کد، توکن ربات تلگرامی شما در متغیر TOKEN قرار داده شده است و نام فایل متنی که شامل عدد مورد نظر است، در متغیر FILE_NAME قرار دارد. همچنین، در تابع read_number()، عدد مورد نظر از فایل متنی خوانده شده و با استفاده از تابع send_message()، عدد به کاربر ارسال می‌شود. در نهایت، با استفاده از تابع start_polling()، شما می‌توانید شروع به دریافت و پاسخ به پیام‌های جدید کنید.

 

خب، حالا میخوام دستورات بعد از کامنت "# ساخت یک شیء از کلاس telegram.ext.CommandHandler برای دستور /update" رو خط به خط براتون توضیح بدم:

در بخش زیر، ما یک شیء از کلاس telegram.ext.CommandHandler برای دستور /update ایجاد می‌کنیم:

# ساخت یک شیء از کلاس `telegram.ext.CommandHandler` برای دستور `/update`
update_command_handler = telegram.ext.CommandHandler('update', update_handler)

در این کد، telegram.ext.CommandHandler یک کلاس است که برای ایجاد یک دستگیره (handler) برای یک دستور در تلگرام استفاده می‌شود. این کلاس دو پارامتر می‌گیرد: نام دستور و تابع مورد نظر برای پاسخ به این دستور.

در مورد ما، ما یک دستگیره با نام update_command_handler برای دستور /update ایجاد می‌کنیم و تابع update_handler را برای پاسخ به این دستور استفاده می‌کنیم.

سپس، ما یک شیء از کلاس telegram.ext.Updater ایجاد می‌کنیم و دستگیره update_command_handler را به آن اضافه می‌کنیم. این کلاس برای برقراری ارتباط با سرور تلگرام استفاده می‌شود و پیام‌های جدید را دریافت می‌کند.

# ساخت یک شیء از کلاس `telegram.ext.Updater` و اضافه کردن دستور `/update` به آن
updater = telegram.ext.Updater(token=TOKEN, use_context=True)
updater.dispatcher.add_handler(update_command_handler)

در کد بالا، ما یک شیء از کلاس telegram.ext.Updater با استفاده از توکن ربات تلگرامی خود ایجاد می‌کنیم. همچنین، با استفاده از تابع add_handler()، دستگیره update_command_handler را به دیسپچر updater.dispatcher اضافه می‌کنیم. دیسپچر، مسئول مدیریت دستگیره‌ها و پاسخ‌های تلگرامی در برنامه شما است.

در نهایت، با استفاده از تابع start_polling()، ما شروع به دریافت و پاسخ به پیام‌های جدید می‌کنیم.

# شروع دسترسی به پیام‌های جدید
updater.start_polling()

با اجرای این کد، ربات شما آماده پاسخگویی به دستور /update است و در صورت دریافت این دستور، عدد موجود در فایل numbers.txt را به کاربر نمایش می‌دهد.

 
 

دیدگاه شما