۹. مدیریت اعضا و پیامها در ربات تلگرام با پایتون

مقدمه
یکی از نیازهای پرکاربرد در رباتهای تلگرام، توانایی شناخت و مدیریت اعضا، پیامها و کنترل دسترسی آنهاست. شاید بخواهید به برخی کاربران امکانات ویژه بدهید یا پیامی را حذف و ویرایش کنید. این موارد هم در رباتهای شخصی و هم رباتهای گروهی کاملاً رایج است.
در این فصل، مدیریت پیامها و کاربران را با مثال و بهزبان ساده بررسی میکنیم.
۱- دریافت اطلاعات کاربر
هر بار که کاربری با ربات شما تعامل میکند، شیء update اطلاعات زیادی درباره کاربر دارد، ازجمله:
- نام کاربری
- شناسه عددی (user id)
- وضعیت ادمین یا عادی
این اطلاعات در دسترس شما قرار دارد و میتوانید برای کنترل دسترسی یا ثبت فعالیتها استفاده کنید.
مثال ساده دریافت اطلاعات کاربر
def user_info(update, context):
user = update.effective_user
message = (
f"سلام {user.first_name}!\n"
f"یوزرنیم شما: @{user.username}\n"
f"آیدی عددی شما: {user.id}"
)
update.message.reply_text(message)
۲- دریافت لیست اعضا (در گروهها)
در رباتهای گروهی میتوانید بفهمید چه کسی پیام میدهد و حتی لیست ادمینها را هم واکشی کنید (توجه: با محدودیت API تلگرام فقط لیست کامل اعضا قابل دریافت نیست، ولی امکان مشاهده وضعیت ادمین و دریافت بعضی اطلاعات فراهم است).
نمونه کد: لیست ادمینهای گروه
def get_admins(update, context):
chat = update.effective_chat
admins = context.bot.get_chat_administrators(chat.id)
admin_list = [f"{admin.user.full_name} (@{admin.user.username})" for admin in admins]
msg = "ادمینهای این گروه:\n" + '\n'.join(admin_list)
update.message.reply_text(msg)
۳- حذف و ویرایش پیام
- حذف پیام: گاهی ربات باید بعضی پیامها را پاک کند (مثلاً پیام ورود کاربران یا تبلیغات)
- ویرایش پیام: احتمال دارد پیامی ارسال شده و بخواهید محتوای آن را آپدیت (بروزرسانی) کنید (مثلاً هنگام استفاده از دکمههای شیشهای)
نمونه کد: حذف پیام توسط ربات
def delete_my_message(update, context):
context.bot.delete_message(
chat_id=update.message.chat_id,
message_id=update.message.message_id
)
نمونه کد: ویرایش پیام ارسالشده توسط ربات
def edit_my_message(update, context):
# فرض: پیامی با دکمه قبلاً ارسال شده
query = update.callback_query
query.edit_message_text("پیام ویرایش شد ✅")
۴- کنترل دسترسی کاربران (مثال ساده مدیر و کاربر عادی)
گاهی میخواهید فقط ادمینها یا کاربران خاصی به برخی امکانات دسترسی داشته باشند. کافی است در ابتدای هرفانکشن وضعیت کاربر را بررسی کنید:
def admin_only(update, context):
admins = [admin.user.id for admin in context.bot.get_chat_administrators(update.effective_chat.id)]
if update.effective_user.id not in admins:
update.message.reply_text("فقط مدیران به این بخش دسترسی دارند.")
return
update.message.reply_text("خوش آمدید مدیر عزیز!")
نکات پایانی و جمعبندی
- همیشه قبل از عملیات حساس، سطح دسترسی کاربر را چک کنید.
- اطلاعات کاربری را میتوانید برای ساخت سیستمعضویت، پیام خوشآمدگویی ویژه یا ارائه امکانات شخصی استفاده کنید.
- برای حذف و ویرایش پیامها، مطمئن باشید ربات شما دسترسی ادمین کافی در گروه را دارد.
- سعی کنید امکانات مدیریتی را فقط به کاربران مجاز نمایش دهید.