شما برای ساختن ربات تلگرامی میتوانید از کتابخانهی پایتون 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()