コード例 #1
0
ファイル: admin.py プロジェクト: AnggaR96s/TelePyroBot
async def unrestrict_usr(c: TelePyroBot, m: Message):
    await m.edit("`Trying to Unrestrict user...`")
    is_admin = await admin_check(c, m)
    if not is_admin:
        return
        return
    user_id, user_first_name = await extract_user(c, m)
    try:
        await m.chat.unban_member(user_id)
        if str(user_id).lower().startswith("@"):
            await m.edit(f"**UnRestricted** {user_first_name}")
            await c.send_message(
                PRIVATE_GROUP_ID,
                f"#UNRESTRICT\nUnrestricted {user_first_name} in chat {m.chat.title}",
            )
        else:
            await m.edit(
                "**UnRestricted** {}".format(mention_markdown(user_first_name, user_id))
            )
            await c.send_message(
                PRIVATE_GROUP_ID,
                "#UNRESTRICT\nUnrestricted {} in chat {}".format(
                    mention_markdown(user_first_name, user_id), m.chat.title
                ),
            )
    except Exception as ef:
        await m.edit(f"**Error:**\n\n`{ef}`")
コード例 #2
0
ファイル: admin.py プロジェクト: AnggaR96s/TelePyroBot
async def demote_usr(c: TelePyroBot, m: Message):
    await m.edit("`Trying to Demote user...`")
    is_admin = await admin_check(c, m)
    if not is_admin:
        return
        return
    user_id, user_first_name = await extract_user(c, m)
    try:
        await m.chat.promote_member(
            user_id=user_id,
            can_change_info=False,
            can_delete_messages=False,
            can_restrict_members=False,
            can_invite_users=False,
            can_pin_messages=False,
        )
        await asyncio.sleep(2)
        if str(user_id).lower().startswith("@"):
            await m.edit(f"**Demoted** {user_first_name}")
            await c.send_message(
                PRIVATE_GROUP_ID,
                f"#DEMOTE\nDemoted {user_first_name} in chat {m.chat.title}",
            )
        else:
            await m.edit(
                "**Demoted** {}".format(mention_markdown(user_first_name, user_id))
            )
            await c.send_message(
                PRIVATE_GROUP_ID,
                "#DEMOTE\nDemoted {} in chat {}".format(
                    mention_markdown(user_first_name, user_id), m.chat.title
                ),
            )
    except Exception as ef:
        await m.edit(f"**Error:**\n\n`{ef}`")
コード例 #3
0
ファイル: admin.py プロジェクト: AnggaR96s/TelePyroBot
async def ban_usr(c: TelePyroBot, m: Message):
    await m.edit("`Trying to Ban user...`")
    is_admin = await admin_check(c, m)
    if not is_admin:
        return
    user_id, user_first_name = await extract_user(c, m)
    if m.reply_to_message:
        await c.delete_messages(m.chat.id, m.reply_to_message.message_id)
    try:
        await m.chat.kick_member(user_id=user_id)
        if str(user_id).lower().startswith("@"):
            await m.edit(f"**Banned** {user_first_name}")
            await c.send_message(
                PRIVATE_GROUP_ID,
                f"#BAN\nBanned {user_first_name} in chat {m.chat.title}",
            )
        else:
            await m.edit(
                "**Banned** {}".format(mention_markdown(user_first_name, user_id))
            )
            await c.send_message(
                PRIVATE_GROUP_ID,
                "#BAN\nBanned {} in chat {}".format(
                    mention_markdown(user_first_name, user_id), m.chat.title
                ),
            )
    except Exception as ef:
        await m.edit(f"**Error:**\n\n`{ef}`")
コード例 #4
0
ファイル: admin.py プロジェクト: AnggaR96s/TelePyroBot
async def restrict_usr(c: TelePyroBot, m: Message):
    await m.edit("`Trying to Mute user...`")
    is_admin = await admin_check(c, m)
    chat_id = m.chat.id
    if not is_admin:
        await m.edit("`I'm not admin nub nibba!`")
        await asyncio.sleep(2)
        await m.delete()
        return
    user_id, user_first_name = await extract_user(c, m)
    try:
        await m.chat.restrict_member(user_id=user_id, permisssions=ChatPermissions())
        if str(user_id).lower().startswith("@"):
            await m.edit(f"**Muted** {user_first_name}")
            await c.send_message(
                PRIVATE_GROUP_ID,
                f"#MUTE\nMuted {user_first_name} in chat {m.chat.title}",
            )
        else:
            await m.edit(
                "**Muted** {}".format(mention_markdown(user_first_name, user_id))
            )
            await c.send_message(
                PRIVATE_GROUP_ID,
                "#MUTE\nMuted {} in chat {}".format(
                    mention_markdown(user_first_name, user_id), m.chat.title
                ),
            )
    except Exception as ef:
        await m.edit(f"**Error:**\n\n`{ef}`")
コード例 #5
0
ファイル: tagppl.py プロジェクト: annihilatorrrr/telepyrobot
async def listbots(c: TelePyroBot, m: Message):
    if len(m.text.split()) >= 2:
        chat = m.text.split(None, 1)[1]
        grup = await c.get_chat(chat)
    else:
        chat = m.chat.id
        grup = await c.get_chat(chat)
    getbots = c.iter_chat_members(chat)
    bots = []
    async for a in getbots:
        try:
            nama = a.user.first_name + " " + a.user.last_name
        except:
            nama = a.user.first_name
        if nama is None:
            nama = "☠️ Deleted account"
        if a.user.is_bot:
            bots.append(mention_markdown(nama, a.user.id))
    teks = f"**All bots in group {grup.title}**\n"
    teks += "Bots\n"
    for x in bots:
        teks += f"│ • {x}\n"
    teks += f"Total {len(bots)} Bots"
    await m.reply_text(teks,
                       reply_to_message_id=ReplyCheck(m),
                       parse_mode="md")
    await m.delete()
    return
コード例 #6
0
ファイル: tagppl.py プロジェクト: AnggaR96s/TelePyroBot
async def listbots(c: TelePyroBot, m: Message):
    replyid = None
    if len(m.text.split()) >= 2:
        chat = m.text.split(None, 1)[1]
        grup = await c.get_chat(chat)
    else:
        chat = m.chat.id
        grup = await c.get_chat(chat)
    if m.reply_to_message:
        replyid = m.reply_to_message.message_id
    getbots = c.iter_chat_members(chat)
    bots = []
    async for a in getbots:
        try:
            nama = a.user.first_name + " " + a.user.last_name
        except BaseException:
            nama = a.user.first_name
        if nama is None:
            nama = "☠️ Deleted account"
        if a.user.is_bot:
            bots.append(mention_markdown(nama, a.user.id))
    teks = "**All bots in group {}**\n".format(grup.title)
    teks += "Bots\n"
    for x in bots:
        teks += "│ • {}\n".format(x)
    teks += "Total {} Bots".format(len(bots))
    if replyid:
        await c.send_message(m.chat.id,
                             teks,
                             reply_to_message_id=replyid,
                             parse_mode="md")
    else:
        await m.edit(teks, parse_mode="md")
コード例 #7
0
async def revoke_pm_block(c: TelePyroBot, m: Message):
    if m.chat.type == "private":
        user_id = m.chat.id
    else:
        user_id = m.text.split()[1]
    db.del_whitelist(user_id)
    user = await c.get_users(user_id)
    await m.edit_text("__**PM permission was revoked for**__ {}".format(
        mention_markdown(user.first_name, user_id)))
    user_id = m.chat.id
    await c.send_message(
        PRIVATE_GROUP_ID,
        "{}'s **permission to contact you in PM has been revoked!**".format(
            mention_markdown(user.first_name, user_id)),
    )
    await asyncio.sleep(5)
    await m.delete()
コード例 #8
0
async def approve_pm(c: TelePyroBot, m: Message):
    if m.chat.type == "private":
        user_id = m.chat.id
    else:
        user_id, user_first_name = extract_user(message)
    db.set_whitelist(user_id, True)
    user = await c.get_users(user_id)
    await m.edit_text("**__PM permission was approved__** for {}".format(
        mention_markdown(user.first_name, user_id)))
    if db.get_msg_id(m.chat.id):
        old_msg_id = db.get_msg_id(m.chat.id)
        await c.delete_messages(chat_id=m.chat.id, message_ids=old_msg_id)
    await c.send_message(
        PRIVATE_GROUP_ID,
        "{} **is approved to contact you in PM!**".format(
            mention_markdown(user.first_name, user_id)),
    )
    await asyncio.sleep(5)
    await m.delete()
コード例 #9
0
async def afk(c: TelePyroBot, m: Message):
    if PRIVATE_GROUP_ID is None:
        await m.edit(
            "<b><i>Please set the variable</b></i> `PRIVATE_GROUP_ID` for this to function."
        )
        return
    global afk_start
    afk_time = None
    afk_end = {}
    start_1 = datetime.now()
    afk_start = start_1.replace(microsecond=0)
    if len(m.text.split()) >= 2:
        await m.edit_text("I am going AFK now...\nBecause of {}".format(
            m.text.split(None, 1)[1]))
        await c.send_message(
            PRIVATE_GROUP_ID,
            "You are AFK!\nBecause of {}".format(m.text.split(None, 1)[1]),
        )
        await asyncio.sleep(2)
        await m.delete()
        await asyncio.sleep(2)
        set_afk(True, m.text.split(None, 1)[1])

    else:
        await m.edit_text("{} is now AFK!".format(
            mention_markdown(m.from_user.first_name, m.from_user.id)))
        await c.send_message(
            PRIVATE_GROUP_ID,
            "{} is now AFK!".format(
                mention_markdown(m.from_user.first_name, m.from_user.id)),
        )
        await asyncio.sleep(2)
        await m.delete()
        await asyncio.sleep(2)
        set_afk(True, "")
    return
コード例 #10
0
ファイル: mention.py プロジェクト: pyroadminbot/TelePyroBot
async def mention(c: TelePyroBot, m: Message):
    args = m.text.split(" ", 2)
    if len(args) == 3:
        name = args[1]
        if isinstance(args[2], int):
            user = args[2]
            rep = "{}".format(mention_markdown(name, user))
        else:
            user = args[2]
            rep = f'<a href="tg://resolve?domain={name}">{user}</a>'
        await m.edit(rep, disable_web_page_preview=True, parse_mode="html")
    else:
        await m.edit(
            f"Check `{COMMAND_HAND_LER}help {__PLUGIN__}` for infor on how to use",
            parse_mode="md",
        )
        return
コード例 #11
0
ファイル: gmute.py プロジェクト: annihilatorrrr/telepyrobot
async def start_gmute(c: TelePyroBot, m: Message):
    await m.edit_text("`Putting duct tape...`")
    user_id, user_first_name = await extract_user(m)
    if db.is_gmuted(user_id):
        await m.edit_text("`This user is already gmuted!`")
        return
    try:
        db.gmute(user_id)
    except Exception as e:
        await m.edit_text(f"<b>Error:</b>\n\n{str(e)}")
    else:
        await m.edit_text("`Successfully gmuted that person`")
        await c.send_message(
            PRIVATE_GROUP_ID,
            "#GMUTE\nUser: {} in Chat {}".format(
                mention_markdown(user_first_name, user_id), m.chat.title),
        )
    return
コード例 #12
0
async def pm_block(c: TelePyroBot, m: Message):
    if not PM_PERMIT:
        return
    try:
        if not db.get_whitelist(m.chat.id):
            if db.get_msg_id(m.chat.id):
                old_msg_id = db.get_msg_id(m.chat.id)
                await c.delete_messages(chat_id=m.chat.id,
                                        message_ids=old_msg_id)

            rply_msg = await m.reply_text(welc_txt)
            db.set_last_msg_id(m.chat.id, rply_msg.message_id)
            await asyncio.sleep(2)
            await c.send_message(
                PRIVATE_GROUP_ID,
                "{} **wants to contact you in PM**".format(
                    mention_markdown(m.from_user.first_name, m.from_user.id)),
            )
            return
    except Exception as ef:
        print("Error!\n\n", ef)
        return
コード例 #13
0
ファイル: tagppl.py プロジェクト: annihilatorrrr/telepyrobot
async def adminlist(c: TelePyroBot, m: Message):
    toolong = False
    if len(m.text.split()) >= 2:
        chat = m.text.split(None, 1)[1]
        grup = await c.get_chat(chat)
    else:
        chat = m.chat.id
        grup = await c.get_chat(chat)
    alladmins = c.iter_chat_members(chat, filter="administrators")
    creator = []
    admin = []
    badmin = []
    async for a in alladmins:
        try:
            nama = a.user.first_name + " " + a.user.last_name
        except:
            nama = a.user.first_name
        if nama is None:
            nama = "☠️ Deleted account"
        if a.status == "administrator":
            if a.user.is_bot:
                badmin.append(mention_markdown(nama, a.user.id))
            else:
                admin.append(mention_markdown(nama, a.user.id))
        elif a.status == "creator":
            creator.append(mention_markdown(nama, a.user.id))
    admin.sort()
    badmin.sort()
    totaladmins = len(creator) + len(admin) + len(badmin)
    teks = f"**Admins in {grup.title}**\n"
    teks += "「 Creator 」\n"
    for x in creator:
        teks += f"│ • {x}\n"
        if len(teks) >= MAX_MESSAGE_LENGTH:
            await m.reply_text(m.chat.id,
                               teks,
                               reply_to_message_id=ReplyCheck(m),
                               parse_mode="md")
            teks = ""
            toolong = True
    teks += f"「 {len(admin)} Human Administrator 」\n"
    for x in admin:
        teks += f"│ • {x}\n"
        if len(teks) >= MAX_MESSAGE_LENGTH:
            await m.reply_text(m.chat.id,
                               teks,
                               reply_to_message_id=ReplyCheck(m),
                               parse_mode="md")
            teks = ""
            toolong = True
    teks += f"「 {len(badmin)} Bot Administrator 」\n"
    for x in badmin:
        teks += f"│ • {x}\n"
        if len(teks) >= MAX_MESSAGE_LENGTH:
            await m.reply_text(m.chat.id,
                               teks,
                               reply_to_message_id=ReplyCheck(m),
                               parse_mode="md")
            teks = ""
            toolong = True
    teks += f"「 Total {totaladmins} Admins 」"
    if toolong:
        await m.delete()
    else:
        await m.edit_text(teks, parse_mode="md")
    return
コード例 #14
0
ファイル: tagppl.py プロジェクト: AnggaR96s/TelePyroBot
async def adminlist(c: TelePyroBot, m: Message):
    replyid = None
    toolong = False
    if len(m.text.split()) >= 2:
        chat = m.text.split(None, 1)[1]
        grup = await c.get_chat(chat)
    else:
        chat = m.chat.id
        grup = await c.get_chat(chat)
    if m.reply_to_message:
        replyid = m.reply_to_message.message_id
    alladmins = c.iter_chat_members(chat, filter="administrators")
    creator = []
    admin = []
    badmin = []
    async for a in alladmins:
        try:
            nama = a.user.first_name + " " + a.user.last_name
        except BaseException:
            nama = a.user.first_name
        if nama is None:
            nama = "☠️ Deleted account"
        if a.status == "administrator":
            if a.user.is_bot:
                badmin.append(mention_markdown(nama, a.user.id))
            else:
                admin.append(mention_markdown(nama, a.user.id))
        elif a.status == "creator":
            creator.append(mention_markdown(nama, a.user.id))
    admin.sort()
    badmin.sort()
    totaladmins = len(creator) + len(admin) + len(badmin)
    teks = "**Admins in {}**\n".format(grup.title)
    teks += "「 Creator 」\n"
    for x in creator:
        teks += "│ • {}\n".format(x)
        if len(teks) >= 4096:
            await m.reply_text(m.chat.id,
                               teks,
                               reply_to_message_id=replyid,
                               parse_mode="md")
            teks = ""
            toolong = True
    teks += "「 {} Human Administrator 」\n".format(len(admin))
    for x in admin:
        teks += "│ • {}\n".format(x)
        if len(teks) >= 4096:
            await m.reply_text(m.chat.id,
                               teks,
                               reply_to_message_id=replyid,
                               parse_mode="md")
            teks = ""
            toolong = True
    teks += "「 {} Bot Administrator 」\n".format(len(badmin))
    for x in badmin:
        teks += "│ • {}\n".format(x)
        if len(teks) >= 4096:
            await m.reply_text(m.chat.id,
                               teks,
                               reply_to_message_id=replyid,
                               parse_mode="md")
            teks = ""
            toolong = True
    teks += "「 Total {} Admins 」".format(totaladmins)
    if toolong:
        await m.reply_text(m.chat.id,
                           teks,
                           reply_to_message_id=replyid,
                           parse_mode="md")
    else:
        await m.edit(teks, parse_mode="md")
コード例 #15
0
ファイル: afk.py プロジェクト: annihilatorrrr/telepyrobot
async def afk_mentioned(c: TelePyroBot, m: Message):
    global MENTIONED
    global afk_time
    global afk_start
    global afk_end
    get = get_afk()
    if get and get["afk"]:
        current_time_afk = datetime.now()
        afk_end = current_time_afk.replace(microsecond=0)
        if afk_start != {}:
            total_afk_time = str((afk_end - afk_start))
        afk_since = "**a while ago**"
        if afk_time:
            now = datetime.datetime.now()
            datime_since_afk = now - afk_time
            time_of_akf = float(datime_since_afk.seconds)
            days = time_of_akf // (24 * 3600)
            time_of_akf = time_of_akf % (24 * 3600)
            hours = time_of_akf // 3600
            time_of_akf %= 3600
            minutes = time_of_akf // 60
            time_of_akf %= 60
            seconds = time_of_akf
            if days == 1:
                afk_since = "**Yesterday**"
            elif days > 1:
                if days > 6:
                    date = now + datetime.timedelta(
                        days=-days, hours=-hours, minutes=-minutes
                    )
                    afk_since = date.strftime("%A, %Y %B %m, %H:%I")
                else:
                    wday = now + datetime.timedelta(days=-days)
                    afk_since = wday.strftime("%A")
            elif hours > 1:
                afk_since = f"`{int(hours)}h{int(minutes)}m` **ago**"
            elif minutes > 0:
                afk_since = f"`{int(minutes)}m{int(seconds)}s` **ago**"
            else:
                afk_since = f"`{int(seconds)}s` **ago**"

        if "-" in str(m.chat.id):
            cid = str(m.chat.id)[4:]
        else:
            cid = str(m.chat.id)

        if cid in list(AFK_RESTIRECT) and int(AFK_RESTIRECT[cid]) >= int(time.time()):
            return
        AFK_RESTIRECT[cid] = int(time.time()) + DELAY_TIME
        if get["reason"]:
            if total_afk_time:
                await m.reply_text(
                    "Sorry, My Master {} is AFK right now!\nReason: {}\n\nAFK Since:{}".format(
                        mention_markdown(OWNER_NAME, OWNER_ID),
                        get["reason"],
                        total_afk_time,
                    )
                )
            else:
                await m.reply_text(
                    "Sorry, My Master {} is AFK right now!\nReason: {}".format(
                        mention_markdown(OWNER_NAME, OWNER_ID), get["reason"]
                    )
                )
        else:
            if total_afk_time:
                await m.reply_text(
                    "Sorry, My Master {} is AFK right now!\n\nAFK Since:{}".format(
                        mention_markdown(OWNER_NAME, OWNER_ID), total_afk_time
                    )
                )
            else:
                await m.reply_text(
                    "Sorry, My Master {} is AFK right now!".format(
                        mention_markdown(OWNER_NAME, OWNER_ID)
                    )
                )

        _, message_type = get_message_type(m)
        if message_type == Types.TEXT:
            text = m.text if m.text else m.caption
        else:
            text = message_type.name

        MENTIONED.append(
            {
                "user": m.from_user.first_name,
                "user_id": m.from_user.id,
                "chat": m.chat.title,
                "chat_id": cid,
                "text": text,
                "message_id": m.message_id,
                "time": datetime.now(),
            }
        )
        await c.send_message(
            PRIVATE_GROUP_ID,
            "{}({}) mentioned you in {}({})\nText:\n`{}`\n\nTotal count: `{}`".format(
                mention_markdown(m.from_user.first_name, m.from_user.id),
                m.from_user.id,
                m.chat.title,
                m.chat.id,
                text[:3500],
                len(MENTIONED),
            ),
        )
    await m.stop_propagation()