コード例 #1
0
async def _(event):
    if event.is_private:
        return
    chat_id = event.chat_id
    sender = event.sender_id
    rules = sql.get_rules(chat_id)
    if rules:
        await event.reply(
            "Click on the below button to get this group's rules 👇",
            buttons=[[Button.inline('Rules', data=f'start-rules-{sender}')]])
    else:
        await event.reply(
            "The group admins haven't set any rules for this chat yet. "
            "This probably doesn't mean it's lawless though...!")
コード例 #2
0
async def rm_warn(event):
    rules = sql.get_rules(event.chat_id)
    # print(rules)
    user_id = int(event.pattern_match.group(1))
    if not event.sender_id == user_id:
        await event.answer("You haven't send that command !")
        return
    text = f"The rules for **{event.chat.title}** are:\n\n{rules}"
    try:
        await tbot.send_message(user_id,
                                text,
                                parse_mode="markdown",
                                link_preview=False)
    except Exception:
        await event.answer(
            "I can't send you the rules as you haven't started me in PM, first start me !",
            alert=True)
コード例 #3
0
async def rm_warn(event):
    rules = rulesql.get_rules(event.chat_id)
    if not rules:
        rules = "The group admins haven't set any rules for that chat yet.\nThis probably doesn't mean it's lawless though...!"
    user_id = int(event.pattern_match.group(1))
    if not event.sender_id == user_id:
        await event.answer("You haven't been warned !")
        return
    text = f"The rules for **{event.chat.title}** are:\n\n{rules}"
    try:
        await tbot.send_message(user_id,
                                text,
                                parse_mode="markdown",
                                link_preview=False)
    except Exception:
        await event.answer(
            "I can't send you the rules as you haven't started me in PM, first start me !",
            alert=True)
コード例 #4
0
def send_rules(update, chat_id, from_pm=False):
    bot = dispatcher.bot
    user = update.effective_user  # type: Optional[User]
    try:
        chat = bot.get_chat(chat_id)
    except BadRequest as excp:
        if excp.message == "Chat not found" and from_pm:
            bot.send_message(
                user.id,
                "The rules shortcut for this chat hasn't been set properly! Ask admins to "
                "fix this.",
            )
            return
        raise

    rules = sql.get_rules(chat_id)
    text = f"The rules for *{escape_markdown(chat.title)}* are:\n\n{rules}"

    if from_pm and rules:
        bot.send_message(user.id,
                         text,
                         parse_mode=ParseMode.MARKDOWN,
                         disable_web_page_preview=True)
    elif from_pm:
        bot.send_message(
            user.id,
            "The group admins haven't set any rules for this chat yet. "
            "This probably doesn't mean it's lawless though...!",
        )
    elif rules:
        update.effective_message.reply_text(
            "Contact me in PM to get this group's rules.",
            reply_markup=InlineKeyboardMarkup([[
                InlineKeyboardButton(
                    text="Rules", url=f"t.me/{bot.username}?start={chat_id}")
            ]]),
        )
    else:
        update.effective_message.reply_text(
            "The group admins haven't set any rules for this chat yet. "
            "This probably doesn't mean it's lawless though...!")
コード例 #5
0
async def _(event):
    try:
        if event.fwd_from:
            return
        if event.is_private:
            return
        if event.is_group:
            if await is_register_admin(event.input_chat,
                                       event.message.sender_id):
                pass
            else:
                return
        quew = event.pattern_match.group(1)

        if event.reply_to_msg_id:
            warn_reason = event.text[len("/warn "):]
            if not warn_reason:
                await event.reply("Please provide a reason for warning.")
                return
            reply_message = await event.get_reply_message()
            if not await is_register_admin(event.input_chat,
                                           reply_message.sender_id):
                pass
            else:
                await event.reply("I am not gonna warn an admin")
                return
            if reply_message.sender_id == BOT_ID:
                await event.reply("Why are you trying to warn me ?")
                return
            limit, soft_warn = sql.get_warn_setting(event.chat_id)
            num_warns, reasons = sql.warn_user(reply_message.sender_id,
                                               event.chat_id, warn_reason)
            if num_warns >= limit:
                sql.reset_warns(reply_message.sender_id, event.chat_id)
                if sql.get_warn_strength(event.chat_id) == "kick":
                    await tbot.kick_participant(event.chat_id,
                                                reply_message.sender_id)
                    reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been kicked!".format(
                        limit, reply_message.sender_id,
                        reply_message.sender.first_name)
                    await event.reply(reply, parse_mode="html")
                    return
                if sql.get_warn_strength(event.chat_id) == "ban":
                    BANNED_RIGHTS = ChatBannedRights(
                        until_date=None,
                        view_messages=True,
                        send_messages=True,
                        send_media=True,
                        send_stickers=True,
                        send_gifs=True,
                        send_games=True,
                        send_inline=True,
                        embed_links=True,
                    )
                    await tbot(
                        EditBannedRequest(event.chat_id,
                                          reply_message.sender_id,
                                          BANNED_RIGHTS))
                    reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been banned!".format(
                        limit, reply_message.sender_id,
                        reply_message.sender.first_name)
                    await event.reply(reply, parse_mode="html")
                    return
                if sql.get_warn_strength(event.chat_id) == "mute":
                    MUTE_RIGHTS = ChatBannedRights(until_date=None,
                                                   send_messages=True)
                    await tbot(
                        EditBannedRequest(event.chat_id,
                                          reply_message.sender_id,
                                          MUTE_RIGHTS))
                    reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been muted!".format(
                        limit, reply_message.sender_id,
                        reply_message.sender.first_name)
                    await event.reply(reply, parse_mode="html")
                    return
            else:
                reply = "<u><a href='tg://user?id={}'>{}</a></u> has {}/{} warnings... watch out!".format(
                    reply_message.sender_id, reply_message.sender.first_name,
                    num_warns, limit)
                if warn_reason:
                    reply += "\nReason: {}".format(html.escape(warn_reason))
            chat_id = event.chat_id
            rules = rulesql.get_rules(chat_id)
            if rules:
                await event.reply(
                    reply,
                    buttons=[[
                        Button.inline(
                            "Remove Warn ✖️",
                            data=f"rm_warn-{reply_message.sender_id}"),
                        Button.inline(
                            "Rules ✝️",
                            data=f"start-ruleswarn-{reply_message.sender_id}"),
                    ]],
                    parse_mode="html",
                )
            else:
                await event.reply(
                    reply,
                    buttons=[[
                        Button.inline(
                            "Remove Warn ✖️",
                            data=f"rm_warn-{reply_message.sender_id}")
                    ]],
                    parse_mode="html",
                )
        if not event.reply_to_msg_id and quew:
            if "|" in quew:
                iid, reasonn = quew.split("|")
            cid = iid.strip()
            reason = reasonn.strip()
            if cid.isnumeric():
                cid = int(cid)
            entity = await tbot.get_entity(cid)
            try:
                r_sender_id = entity.id
                r_sender_fname = entity.first_name
            except Exception:
                await event.reply("Couldn't fetch that user.")
                return
            if not reason:
                await event.reply("Please provide a reason for warning.")
                return
            warn_reason = reason
            if not await is_register_admin(event.input_chat, r_sender_id):
                pass
            else:
                await event.reply("I am not gonna warn an admin")
                return
            if r_sender_id == BOT_ID:
                await event.reply("Why are you trying to warn me ?")
                return
            limit, soft_warn = sql.get_warn_setting(event.chat_id)
            num_warns, reasons = sql.warn_user(r_sender_id, event.chat_id,
                                               warn_reason)
            if num_warns >= limit:
                sql.reset_warns(r_sender_id, event.chat_id)
                if sql.get_warn_strength(event.chat_id) == "kick":
                    await tbot.kick_participant(event.chat_id, r_sender_id)
                    reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been kicked!".format(
                        limit, r_sender_id, r_sender_fname)
                    await event.reply(reply, parse_mode="html")
                    return
                if sql.get_warn_strength(event.chat_id) == "ban":
                    BANNED_RIGHTS = ChatBannedRights(
                        until_date=None,
                        view_messages=True,
                        send_messages=True,
                        send_media=True,
                        send_stickers=True,
                        send_gifs=True,
                        send_games=True,
                        send_inline=True,
                        embed_links=True,
                    )
                    await tbot(
                        EditBannedRequest(event.chat_id, r_sender_id,
                                          BANNED_RIGHTS))
                    reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been banned!".format(
                        limit, r_sender_id, r_sender_fname)
                    await event.reply(reply, parse_mode="html")
                    return
                if sql.get_warn_strength(event.chat_id) == "mute":
                    MUTE_RIGHTS = ChatBannedRights(until_date=None,
                                                   send_messages=True)
                    await tbot(
                        EditBannedRequest(event.chat_id, r_sender_id,
                                          MUTE_RIGHTS))
                    reply = "{} warnings, <u><a href='tg://user?id={}'>{}</a></u> has been muted!".format(
                        limit, r_sender_id, r_sender_fname)
                    await event.reply(reply, parse_mode="html")
                    return
            else:
                reply = "<u><a href='tg://user?id={}'>{}</a></u> has {}/{} warnings... watch out!".format(
                    r_sender_id, r_sender_fname, num_warns, limit)
                if warn_reason:
                    reply += "\nReason: {}".format(html.escape(warn_reason))
            chat_id = event.chat_id
            rules = rulesql.get_rules(chat_id)
            if rules:
                await event.reply(
                    reply,
                    buttons=[[
                        Button.inline("Remove Warn ✖️",
                                      data=f"rm_warn-{r_sender_id}"),
                        Button.inline("Rules ✝️",
                                      data=f"start-ruleswarn-{r_sender_id}"),
                    ]],
                    parse_mode="html",
                )
            else:
                await event.reply(
                    reply,
                    buttons=[[
                        Button.inline("Remove Warn ✖️",
                                      data=f"rm_warn-{r_sender_id}")
                    ]],
                    parse_mode="html",
                )
    except Exception as e:
        print(e)
コード例 #6
0
async def _(event):
    cws = get_current_welcome_settings(event.chat_id)
    if cws:
        # logger.info(event.stringify())
        """user_added=False,
        user_joined=True,
        user_left=False,
        user_kicked=False,"""
        if event.user_joined:
            if cws.should_clean_welcome:
                try:
                    await tbot.delete_messages(  # pylint:disable=E0602
                        event.chat_id, cws.previous_welcome)
                except Exception as e:  # pylint:disable=C0103,W0703
                    logger.warn(str(e))  # pylint:disable=E0602
            a_user = await event.get_user()
            chat = await event.get_chat()
            me = await tbot.get_me()

            title = chat.title if chat.title else "this chat"
            participants = await event.client.get_participants(chat)
            count = len(participants)
            mention = "[{}](tg://user?id={})".format(a_user.first_name,
                                                     a_user.id)
            first = a_user.first_name
            last = a_user.last_name
            if last:
                fullname = f"{first} {last}"
            else:
                fullname = first
            username = (f"@{me.username}"
                        if me.username else f"[Me](tg://user?id={me.id})")
            userid = a_user.id
            current_saved_welcome_message = cws.custom_welcome_message
            mention = "[{}](tg://user?id={})".format(a_user.first_name,
                                                     a_user.id)
            rules = sql.get_rules(event.chat_id)
            if rules:
                current_message = await event.reply(
                    current_saved_welcome_message.format(
                        mention=mention,
                        title=title,
                        count=count,
                        first=first,
                        last=last,
                        fullname=fullname,
                        username=username,
                        userid=userid,
                    ),
                    file=cws.media_file_id,
                    buttons=[[
                        Button.inline('Rules ✝️', data=f'start-rules-{userid}')
                    ]])
                update_previous_welcome(event.chat_id, current_message.id)
            else:
                current_message = await event.reply(
                    current_saved_welcome_message.format(
                        mention=mention,
                        title=title,
                        count=count,
                        first=first,
                        last=last,
                        fullname=fullname,
                        username=username,
                        userid=userid,
                    ),
                    file=cws.media_file_id,
                )
                update_previous_welcome(event.chat_id, current_message.id)
コード例 #7
0
async def _(event):
    if event.fwd_from:
        return
    if event.is_private:
        return
    if event.is_group:
        if await is_register_admin(event.input_chat, event.message.sender_id):
            pass
        else:
            return
    warn_reason = event.text[len("/warn "):]
    if not warn_reason:
        await event.reply("Please provide a reason for warning.")
        return
    reply_message = await event.get_reply_message()
    if not await is_register_admin(event.input_chat, reply_message.sender_id):
        pass
    else:
        await event.reply("I am not gonna warn an admin")
        return
    limit, soft_warn = sql.get_warn_setting(event.chat_id)
    num_warns, reasons = sql.warn_user(reply_message.sender_id, event.chat_id,
                                       warn_reason)
    if num_warns >= limit:
        sql.reset_warns(reply_message.sender_id, event.chat_id)
        if sql.get_warn_strength(event.chat_id) == "kick":
            await tbot.kick_participant(event.chat_id, reply_message.sender_id)
            reply = "{} warnings, <u><a href='tg://user?id={}'>user</a></u> has been kicked!".format(
                limit, reply_message.sender_id)
            await event.reply(reply, parse_mode="html")
            return
        if sql.get_warn_strength(event.chat_id) == "ban":
            BANNED_RIGHTS = ChatBannedRights(
                until_date=None,
                view_messages=True,
                send_messages=True,
                send_media=True,
                send_stickers=True,
                send_gifs=True,
                send_games=True,
                send_inline=True,
                embed_links=True,
            )
            await tbot(
                EditBannedRequest(event.chat_id, reply_message.sender_id,
                                  BANNED_RIGHTS))
            reply = "{} warnings, <u><a href='tg://user?id={}'>user</a></u> has been banned!".format(
                limit, reply_message.sender_id)
            await event.reply(reply, parse_mode="html")
            return
        if sql.get_warn_strength(event.chat_id) == "mute":
            MUTE_RIGHTS = ChatBannedRights(until_date=None, send_messages=True)
            await tbot(
                EditBannedRequest(event.chat_id, reply_message.sender_id,
                                  MUTE_RIGHTS))
            reply = "{} warnings, <u><a href='tg://user?id={}'>user</a></u> has been muted!".format(
                limit, reply_message.sender_id)
            await event.reply(reply, parse_mode="html")
            return
    else:
        reply = "<u><a href='tg://user?id={}'>user</a></u> has {}/{} warnings... watch out!".format(
            reply_message.sender_id, num_warns, limit)
        if warn_reason:
            reply += "\nReason: {}".format(html.escape(warn_reason))
    chat_id = event.chat_id
    rules = rulesql.get_rules(chat_id)
    if rules:
        await event.reply(
            reply,
            buttons=[[
                Button.inline('Remove Warn ✖️',
                              data=f"rm_warn-{reply_message.sender_id}"),
                Button.inline(
                    'Rules ✝️',
                    data=f'start-ruleswarn-{reply_message.sender_id}')
            ]],
            parse_mode="html")
    else:
        await event.reply(reply,
                          buttons=[[
                              Button.inline(
                                  'Remove Warn ✖️',
                                  data=f"rm_warn-{reply_message.sender_id}")
                          ]],
                          parse_mode="html")