در قسمت اول و قسمت دوم این سری، محافظت گروه در برابر اسپم و لینک رو دیدیم. اینبار سراغ چیزی میریم که کمتر بهش توجه میشه ولی تأثیرش زیاده: اولین تجربهی عضو جدید. عضوی که وارد گروه میشه و هیچ واکنشی نمیبینه، معمولاً یا ساکت میمونه یا سریع خارج میشه.
فهرست مطالب
- چرا خوشآمدگویی خودکار مهمه
- تشخیص عضو جدید در تلگرام
- کد کامل: خوشآمدگوی شخصیسازیشده
- محافظت پیشرفته: تأخیر در فعالسازی
- مدیریت خروج اعضا
- نکتهی مهم دربارهی روبیکا و بله
- اشتباهات رایج
- سوالات متداول
چرا خوشآمدگویی خودکار مهمه
یک پیام خوشآمد ساده، سه کار رو همزمان انجام میده: به عضو جدید نشون میده گروه فعاله، قوانین اصلی رو (بدون اینکه مجبور باشه بگرده) بهش میگه، و اولین قدم برای تعامل رو میسازه. علاوه بر این، همون لحظهی ورود، بهترین فرصت برای تشخیص حسابهای مشکوک یا حملات جمعیه — موضوعی که در بخش «محافظت پیشرفته» بهش میرسیم.
تشخیص عضو جدید در تلگرام
در تلگرام، وقتی کاربری به گروه اضافه میشه، آبجکت پیام یک فیلد استاندارد به اسم new_chat_members داره — لیستی از کاربرانی که تازه پیوستن. این فیلد بخش پایدار و مستند Bot API تلگرامه:
def handle_update(update):
message = update.get("message", {})
new_members = message.get("new_chat_members")
if new_members:
for member in new_members:
welcome_new_member(message["chat"]["id"], member)کد کامل: خوشآمدگوی شخصیسازیشده
import requests
BOT_TOKEN = "YOUR_TELEGRAM_TOKEN"
BASE_URL = f"https://api.telegram.org/bot{BOT_TOKEN}"
def welcome_new_member(chat_id, member):
name = member.get("first_name", "دوست عزیز")
text = (
f"سلام {name}! 👋 به گروه خوش اومدی.\n"
f"قبل از شروع، لطفاً قوانین گروه رو در پین بالای صفحه بخون."
)
requests.post(f"{BASE_URL}/sendMessage", data={
"chat_id": chat_id,
"text": text
})نکته: نام کاربر رو مستقیم از آبجکت member میگیریم — یعنی پیام واقعاً شخصیسازیشدهست، نه یک متن ثابت برای همه.
محافظت پیشرفته: تأخیر در فعالسازی
یک تکنیک رایج در گروههای بزرگ برای مقابله با حملات جمعی (چند ده اکانت جعلی که همزمان عضو میشن): محدودکردن موقت عضو جدید تا چند دقیقهی اول، تا زمانی که رفتارش نرمال به نظر برسه:
import time
new_member_join_time = {}
def track_new_member(user_id):
new_member_join_time[user_id] = time.time()
def is_still_restricted(user_id, restriction_minutes=5):
join_time = new_member_join_time.get(user_id)
if not join_time:
return False
return (time.time() - join_time) < (restriction_minutes * 60)این تابع رو میتونید در کنار منطق ضداسپمی که در قسمت دوم ساختیم ترکیب کنید — مثلاً برای اعضای تازهوارد، آستانهی ضداسپم رو سختگیرانهتر کنید.
مدیریت خروج اعضا
به همین شکل، تلگرام فیلد left_chat_member رو برای خروج عضو ارائه میده:
left_member = message.get("left_chat_member")
if left_member:
# میتونید آمار خروج رو ثبت کنید، یا فقط لاگ بگیرید
passنکتهی مهم دربارهی روبیکا و بله
منطق «شخصیسازی پیام» و «تأخیر در فعالسازی» که در این مقاله دیدیم، مستقل از پلتفرمه و روی هرکدوم قابلپیادهسازیه. اما نام دقیق فیلد یا رویدادی که «ورود عضو جدید» رو در روبیکا و بله اعلام میکنه، ممکنه با تلگرام متفاوت باشه و در طول زمان بهروزرسانی بشه — پیشنهاد میکنیم قبل از پیادهسازی روی این دو پلتفرم، بخش رویدادها (Updates) در مستندات فعلی botapi.rubika.ir یا tapi.bale.ir رو چک کنید.
اشتباهات رایج
- پیام خوشآمد خیلی طولانی: عضو تازهوارد معمولاً پیامهای خیلی بلند رو نمیخونه؛ کوتاه و کاربردی بنویسید.
- عدم پاکسازی
new_member_join_time: برای گروههای پرتردد، فراموشنکردن پاکسازی دورهای این دیکشنری مهمه تا حافظه پر نشه. - نادیدهگرفتن ورود گروهی:
new_chat_membersمیتونه شامل چند نفر همزمان باشه (وقتی کسی چند نفر رو اضافه میکنه) — همیشه با حلقه پردازششون کنید، نه فرض تکنفره.
سوالات متداول
آیا میشه پیام خوشآمد رو بعد از چند ثانیه پاک کرد؟
بله، با متد deleteMessage و کمی تأخیر، میتونید پیام رو خودکار بعد از مدتی حذف کنید تا گروه شلوغ نشه.
چرا محدودیت موقت بهتر از بنکردن مستقیمه؟
چون کاربر واقعی هم ممکنه در چند دقیقهی اول رفتار «مشکوک» نشون بده (مثلاً چند پیام پشتسرهم از هیجان)؛ محدودیت موقت بهجای حذف قطعی، فرصت اثبات میده.
آیا این کد برای گروههای خیلی بزرگ هم مقیاسپذیره؟
برای گروههای بسیار پرتردد، بهتره new_member_join_time رو بهجای دیکشنری در حافظه، در یک دیتابیس سبک مثل Redis نگه دارید.
جمعبندی
حالا یک سیستم خوشآمدگویی هوشمند دارید که هم تجربهی کاربری رو بهتر میکنه، هم لایهی اول دفاع در برابر حملات جمعیه. در قسمت ۴ و پایانی این سری، همهی این قطعات (ضدلینک، ضداسپم، خوشآمدگویی) رو کنار هم میذاریم و یک ربات کامل مدیریت گروه میسازیم.
نظرات کاربران
فقط نظرات تاییدشده مدیر نمایش داده میشود.