Пример #1
0
async def stagall_(message: Message):
    """ tag recent members without spam """
    chat_id = message.chat.id
    chat = await userge.get_chat(chat_id)
    await message.edit(f"```tagging everyone in {chat.title}```")
    replied = message.reply_to_message
    if replied:
        text = replied.text
    else:
        text = message.input_str
    if not text:
        await message.edit(
            "```Without reason, I will not tag Members... (*>_<*)```",
            del_in=5)
        return
    text = f"<code>{text}</code>"
    member = userge.iter_chat_members(chat_id)
    async for members in member:
        if not members.user.is_bot:
            text += mention_html(members.user.id, "\u200b")
    await message.delete()
    if message.reply_to_message:
        await userge.send_message(chat_id,
                                  text,
                                  reply_to_message_id=replied.message_id,
                                  parse_mode="html")
    else:
        await userge.send_message(chat_id, text, parse_mode="html")
Пример #2
0
async def get_peer_list(message: Message, limit: int = 10) -> Optional[List]:
    chat_id = message.chat.id
    user_ids = [
        member.user.id
        async for member in userge.iter_chat_members(chat_id, limit=100)
        if not (member.user.is_bot or member.user.is_deleted
                or member.user.id == message.from_user.id)
    ]
    return await append_peer_user(user_ids, limit)
Пример #3
0
async def chat_users_(message: Message):
    """find chat users"""
    input_ = message.input_str
    if not input_:
        limit_ = 100
        chat_ = message.chat.id
    else:
        if len(input_.split()) > 1:
            chat_ = input_.split()[1:]
            limit_ = input_.split()[0]
            try:
                await userge.get_chat(chat_)
            except BaseException:
                await message.edit(
                    f"Chat <code>{chat_}</code> is not a valid chat...")
                return
        else:
            chat_ = input_
            try:
                await userge.get_chat(chat_)
                limit_ = 100
            except BaseException:
                chat_ = message.chat.id
                limit_ = input_
                if int(limit_) > 10000:
                    await message.edit(
                        f"Current limit(<code>{limit_}</code>) can't be more than 10000..."
                    )
                    return
    title = (await userge.get_chat(chat_)).title
    await message.edit(
        f"Getting <b>{limit_}</b> members of chat <b>{title}</b>...")
    list_ = "List of <b>{}</b> members" + f"in chat <b>{title}</b>:\n\n"
    sr_n = 1
    lim = 0
    async for mem in userge.iter_chat_members(chat_):
        try:
            check = await userge.get_users(mem.user.id)
            user = full_name(check)
        except BaseException:
            user = "******"
        list_ += (
            f"• [{sr_n}] {user} - @{mem.user.username}\n"
            if mem.user.username else
            f"• [{sr_n}] <a href='tg://user?id={mem.user.id}'>{user}</a>\n")
        sr_n += 1
        lim += 1
        if len(list_) > 4040:
            await message.reply(list_.format(sr_n))
            list_ = ""
        if int(limit_) != 10000:
            if lim == limit_:
                break
    if len(list_) != 0:
        await message.reply(list_.format(sr_n - 1))
    await message.delete()
Пример #4
0
async def keck_all(message: Message):
    chat = message.chat.id
    keck_c = 0
    await message.edit("Hold on Trying to kick all Members")
    async for to_kick in userge.iter_chat_members(chat):
        user = to_kick.user.id
        await userge.kick_chat_member(chat, user, int(time.time() + 60))
        keck_c += 1
        await asyncio.sleep(0.5)
    await message.edit(f"Kicked {keck_c} members in {message.chat.title}")
Пример #5
0
async def ban_all(message: Message):
    chat = message.chat.id
    ben_c = 0
    await message.edit("Hold on Trying to ban all Members")
    async for to_ban in userge.iter_chat_members(chat):
        user = to_ban.user.id
        await userge.kick_chat_member(chat, user)
        ben_c += 1
        await asyncio.sleep(0.5)
    await message.edit(f"Banned {ben_c} members in {message.chat.title}")
Пример #6
0
async def mentionadmins(message: Message):
    mentions = "🛡 **Admin List** 🛡\n"
    chat_id = message.filtered_input_str
    flags = message.flags

    men_admins = '-m' in flags
    men_creator = '-mc' in flags
    show_id = '-id' in flags

    if not chat_id:
        chat_id = message.chat.id

    try:
        async for x in userge.iter_chat_members(chat_id=chat_id,
                                                filter="administrators"):
            status = x.status
            u_id = x.user.id
            username = x.user.username or None
            full_name = (await userge.get_user_dict(u_id))['flname']

            if status == "creator":
                if men_admins or men_creator:
                    mentions += f"\n 👑 [{full_name}](tg://user?id={u_id})"

                elif username:
                    mentions += f"\n 👑 [{full_name}](https://t.me/{username})"

                else:
                    mentions += f"\n 👑 {full_name}"

                if show_id:
                    mentions += f" `{u_id}`"

            elif status == "administrator":
                if men_admins:
                    mentions += f"\n ⚜ [{full_name}](tg://user?id={u_id})"

                elif username:
                    mentions += f"\n ⚜ [{full_name}](https://t.me/{username})"

                else:
                    mentions += f"\n ⚜ {full_name}"

                if show_id:
                    mentions += f" `{u_id}`"

    except Exception as e:
        mentions += " " + str(e) + "\n"

    await message.delete()
    await userge.send_message(chat_id=message.chat.id,
                              text=mentions,
                              disable_web_page_preview=True)
Пример #7
0
async def bots_in_chat(message: Message):
    admin, member = [], []
    async for bots in userge.iter_chat_members(message.chat.id, filter="bots"):
        status = bots.status
        u_id = bots.user.id
        username = bots.user.username
        bot_info = f"  • @{username}"
        if "-id" in message.flags:
            bot_info += f"  [<code>{u_id}</code>]"
        if status == "administrator":
            admin.append(bot_info)
        else:
            member.append(bot_info)
    await message.reply(f"🤖  <b>BOTS</b> in {message.chat.title}\n\n" +
                        "<b>Admin:</b>\n" + "\n".join(admin) + "\n\n" +
                        "<b>Member:</b>\n" + "\n".join(member))
Пример #8
0
async def stagall_(message: Message):
    """tag recent members without spam"""
    chat_id = message.chat.id
    chat = await userge.get_chat(chat_id)
    await message.edit(f"```tagging everyone in {chat.title}```")
    replied = message.reply_to_message
    text = message.input_str
    if not (text or replied):
        await message.err("Without reason, I will not tag Members...(=_=)")
        return
    text = f"`{text}`" if text else ""
    message_id = replied.message_id if replied else None
    member = userge.iter_chat_members(chat_id)
    async for members in member:
        if not members.user.is_bot:
            text += mention_html(members.user.id, "\u200b")
    await message.delete()
    await userge.send_message(chat_id, text, reply_to_message_id=message_id)
Пример #9
0
async def botz(message: Message):
    """Check the bots present in group."""
    chat = message.input_str
    if not chat:
        chat = message.chat.id
    try:
        chat_ = await userge.get_chat(chat)
        if chat_.type == "private":
            await message.edit(
                "`You can't use this command for private chats...`", del_in=5
            )
            return
        chat = chat_.id
    except BaseException:
        await message.edit("`Provide a valid chat as input...`", del_in=5)
        return
    admin_b = []
    member_b = []
    total = 0
    async for bot in userge.iter_chat_members(chat, filter="bots"):
        total += 1
        mention = bot.user.mention
        if bot.status == "administrator":
            admin_b.append(mention)
        else:
            member_b.append(mention)
    adm = len(admin_b)
    mem = len(member_b)
    out = f"<b>BOTS</b> in <b>{chat_.title}</b>: `[{total}]`\n\n"
    out += f"<b>Admin bot(s)</b>: [{adm}]\n"
    out += "🤖 " if admin_b else ""
    out += "\n🤖 ".join(admin_b)
    out += "\n\n" if admin_b else "\n"
    out += f"<b>Member bot(s)</b>: [{mem}]\n"
    out += "🤖 " if member_b else ""
    out += "\n🤖 ".join(member_b)
    await message.edit(out)
Пример #10
0
async def botz(message: Message):
    """Check the bots present in group."""
    chat = message.chat.id
    admin_b = []
    member_b = []
    total = 0
    async for bot in userge.iter_chat_members(chat, filter="bots"):
        total += 1
        mention = bot.user.mention
        if bot.status == "administrator":
            admin_b.append(mention)
        else:
            member_b.append(mention)
    adm = len(admin_b)
    mem = len(member_b)
    out = f"<b>BOTS</b> in <b>{message.chat.title}</b>: [{total}]\n\n"
    out += f"<b>Admin bot(s)</b>: [{adm}]\n"
    out += "" if admin_b else ""
    out += "\n".join(admin_b)
    out += "\n\n" if admin_b else "\n"
    out += f"<b>Member bot(s)</b>: [{mem}]\n"
    out += "" if member_b else ""
    out += "\n".join(member_b)
    await message.edit(out)
Пример #11
0
async def zombie_clean(message: Message):
    """
    this function can remove deleted accounts from tg group
    """
    chat_id = message.chat.id
    get_group = await userge.get_chat(chat_id)
    flags = message.flags

    rm_delaccs = '-c' in flags

    can_clean = await is_admin(message)

    if rm_delaccs:

        del_users = 0
        del_admins = 0
        del_total = 0
        del_stats = r"`Zero zombie accounts found in this chat... WOOHOO group is clean.. \^o^/`"

        if can_clean:

            await message.edit(
                "`Hang on!! cleaning zombie accounts from this chat..`")
            async for member in userge.iter_chat_members(chat_id):

                if member.user.is_deleted:

                    try:
                        await userge.kick_chat_member(chat_id, member.user.id,
                                                      int(time.time() + 45))

                    except UserAdminInvalid:
                        del_users -= 1
                        del_admins += 1

                    except FloodWait as e_f:
                        time.sleep(e_f.x)
                    del_users += 1
                    del_total += 1

            if del_admins > 0:
                del_stats = f"`👻 Found` **{del_total}** `total zombies..`\
                \n`🗑 Cleaned` **{del_users}** `zombie (deleted) accounts from this chat..`\
                \n🛡 **{del_admins}** `deleted admin accounts are skipped!!`"

            else:
                del_stats = f"`👻 Found` **{del_total}** `total zombies..`\
                \n`🗑 Cleaned` **{del_users}** `zombie (deleted) accounts from this chat..`"

            await message.edit(f"{del_stats}", del_in=0)
            await CHANNEL.log(f"#ZOMBIE_CLEAN\n\n"
                              f"CHAT: `{get_group.title}` (`{chat_id}`)\n"
                              f"TOTAL ZOMBIE COUNT: `{del_total}`\n"
                              f"CLEANED ZOMBIE COUNT: `{del_users}`\n"
                              f"ZOMBIE ADMIN COUNT: `{del_admins}`")

        else:
            await message.edit(
                r"`i don't have proper permission to do that! (*  ̄︿ ̄)`",
                del_in=0)

    else:

        del_users = 0
        del_stats = r"`Zero zombie accounts found in this chat... WOOHOO group is clean.. \^o^/`"
        await message.edit("`🔎 Searching for zombie accounts in this chat..`")
        async for member in userge.iter_chat_members(chat_id):

            if member.user.is_deleted:
                del_users += 1

        if del_users > 0:

            del_stats = f"`Found` **{del_users}** `zombie accounts in this chat.`"
            await message.edit(
                f"🕵️‍♂️ {del_stats} "
                "`you can clean them using .zombies -c`",
                del_in=0)
            await CHANNEL.log(f"#ZOMBIE_CHECK\n\n"
                              f"CHAT: `{get_group.title}` (`{chat_id}`)\n"
                              f"ZOMBIE COUNT: `{del_users}`")

        else:
            await message.edit(f"{del_stats}", del_in=0)
            await CHANNEL.log(f"#ZOMBIE_CHECK\n\n"
                              f"CHAT: `{get_group.title}` (`{chat_id}`)\n"
                              r"ZOMBIE COUNT: `WOOHOO group is clean.. \^o^/`")
Пример #12
0
async def cache_admins(chat_id: int) -> None:
    k = [
        member.user.id async for member in userge.iter_chat_members(chat_id)
        if member.status in ("creator", "administrator")
    ]
    ADMINS[chat_id] = k