Skip to content

بررسی عضویت


روش اول: بررسی عضویت به صورت مستقیم

Python
from maxrubika import Bot
from maxrubika.bot.filters import IsUser
from maxrubika.bot.exceptions import InvalidAccess

bot = Bot("Token") # توکن بات خود اینجا وارد شود

channel_id = "" # چت آیدی کانال اینجا وارد شود
username = "" # یوزرنیم کانال اینجا وارد شود

info = bot.get_chat_info(channel_id)

@bot.on_command("start", IsUser())
async def start(bot, event):
    try:
        await bot.get_chat_member(channel_id, event.sender_id)
    except InvalidAccess:
        await event.reply(f"‼ **ابتدا در کانال {username} عضو شوید و سپس مجدد بات را استارت کنید.**")
        return

    await event.reply(f"✅ **عضویت شما در کانال {info.title} تایید شد.**")

bot.run()

روش دوم: بررسی عضویت با استفاده از فیلتر

Python
from maxrubika import Bot
from maxrubika.bot.filters import IsJoined, IsUser

bot = Bot("Token")  # توکن بات خود را اینجا وارد کنید

chat_ids = [  # چت آیدی گفتگو های مورد نظر را اینجا وارد کنید
    "",
    "",
]

usernames = ["", ""]  # نام کاربری یا لینک گفتگوهای مورد نظر خود را اینجا وارد کنید

@bot.on_command("start", ~IsJoined(chat_ids), IsUser())
async def not_joined(bot, event):
    links = "\n".join(f"👉 {link}" for link in usernames)
    await event.reply(f"‼ **ابتدا در کانال‌های زیر عضو شوید و سپس مجدد بات را استارت کنید.**\n{links}")

@bot.on_command("start", IsJoined(chat_ids), IsUser())
async def joined(bot, event):
    await event.reply("✅ **عضویت شما تایید شد.**")

bot.run()

روش سوم: بررسی عضویت و اجازه‌ی ارسال پیام در گروه

Python
import asyncio
import time
from maxrubika import Bot
from maxrubika.bot.filters import IsGroup, IsJoined, FromChat

bot = Bot("Token") # توکن بات خود را اینجا وارد کنید

CHANNEL_LINK = ["@TheMAXRubika", "@TheProgrammer"] # نام کاربری کانال‌های مورد نظر را اینجا وارد کنید

GROUP_ID = "" # چت آیدی گروه خود را اینجا وارد کنید

info = bot.get_chat_info(GROUP_ID)
channels = "\n".join(f"👉 {link}" for link in CHANNEL_LINK)
sleep = 100
warned_users = {}

@bot.on_new_message(IsGroup() & ~IsJoined(CHANNEL_LINK) & FromChat(GROUP_ID))
async def not_joined(bot, event):
    chat_id = event.chat_id
    author_id = event.author_id
    now = time.time()

    last_warn = warned_users.get(chat_id, {}).get(author_id, 0)

    if now - last_warn < sleep:
        await event.delete()
        return

    warned_users.setdefault(chat_id, {})[author_id] = now

    await event.delete()

    warn = await bot.send_message(
        chat_id,
        f"⚠ **[کاربر گرامی]({author_id})**\n\n"
        f"برای ارسال پیام در گروه {info.title} ابتدا در کانال‌های زیر عضو شوید:\n\n"
        f"{channels}"
    )

    asyncio.create_task(bot.auto_delete_message(event.chat_id, warn.message_id, 60))

bot.run()