Esempio n. 1
0
async def on_snip(event):
    global last_triggered_filters
    name = event.raw_text
    if event.chat_id in last_triggered_filters:
        if name in last_triggered_filters[event.chat_id]:
            # avoid userbot spam
            # "I demand rights for us bots, we are equal to you humans." -Henri Koivuneva (t.me/UserbotTesting/2698)
            return False
    snips = get_all_filters(event.chat_id)
    if snips:
        for snip in snips:
            pattern = r"( |^|[^\w])" + re.escape(snip.keyword) + r"( |$|[^\w])"
            if re.search(pattern, name, flags=re.IGNORECASE):
                if snip.snip_type == TYPE_PHOTO:
                    media = types.InputPhoto(int(snip.media_id),
                                             int(snip.media_access_hash),
                                             snip.media_file_reference)
                elif snip.snip_type == TYPE_DOCUMENT:
                    media = types.InputDocument(int(snip.media_id),
                                                int(snip.media_access_hash),
                                                snip.media_file_reference)
                else:
                    media = None
                message_id = event.message.id
                if event.reply_to_msg_id:
                    message_id = event.reply_to_msg_id
                await borg.send_message(event.chat_id,
                                        snip.reply,
                                        reply_to=message_id,
                                        file=media)
                if event.chat_id not in last_triggered_filters:
                    last_triggered_filters[event.chat_id] = []
                last_triggered_filters[event.chat_id].append(name)
                await asyncio.sleep(DELETE_TIMEOUT)
                last_triggered_filters[event.chat_id].remove(name)
Esempio n. 2
0
async def on_snip(event):
    name = event.pattern_match.group(1)
    snip = get_snips(name)
    if snip:
        if snip.snip_type == TYPE_PHOTO:
            media = types.InputPhoto(
                int(snip.media_id),
                int(snip.media_access_hash),
                snip.media_file_reference
            )
        elif snip.snip_type == TYPE_DOCUMENT:
            media = types.InputDocument(
                int(snip.media_id),
                int(snip.media_access_hash),
                snip.media_file_reference
            )
        else:
            media = None
        message_id = event.message.id
        if event.reply_to_msg_id:
            message_id = event.reply_to_msg_id
        await borg.send_message(
            event.chat_id,
            snip.reply,
            reply_to=message_id,
            file=media
        )
        await event.delete()
Esempio n. 3
0
async def filter_incoming_handler(handler):
    """ Checks if the incoming message contains handler of a filter """
    try:
        if not (await handler.get_sender()).bot:
            try:
                from userbot.modules.sql_helper.filter_sql import get_filters
            except AttributeError:
                await handler.edit("`Running on Non-SQL mode!`")
                return

            name = handler.raw_text
            filters = get_filters(handler.chat_id)
            if not filters:
                return
            for trigger in filters:
                pattern = r"( |^|[^\w])" + \
                    escape(trigger.keyword) + r"( |$|[^\w])"
                pro = fullmatch(pattern, name, flags=IGNORECASE)
                if pro:
                    if trigger.snip_type == TYPE_PHOTO:
                        media = types.InputPhoto(
                            int(trigger.media_id),
                            int(trigger.media_access_hash),
                            trigger.media_file_reference)
                    elif trigger.snip_type == TYPE_DOCUMENT:
                        media = types.InputDocument(
                            int(trigger.media_id),
                            int(trigger.media_access_hash),
                            trigger.media_file_reference)
                    else:
                        media = None
                    await handler.reply(trigger.reply, file=media)
    except AttributeError:
        pass
Esempio n. 4
0
async def incom_note(getnt):
    """ Notes logic. """
    try:
        if not (await getnt.get_sender()).bot:
            try:
                from userbot.modules.sql_helper.notes_sql import get_notes
            except AttributeError:
                return
            notename = getnt.text[1:]
            notes = get_notes(getnt.chat_id)
            for note in notes:
                if notename == note.keyword:
                    if note.snip_type == TYPE_PHOTO:
                        media = types.InputPhoto(int(note.media_id),
                                                 int(note.media_access_hash),
                                                 note.media_file_reference)
                    elif note.snip_type == TYPE_DOCUMENT:
                        media = types.InputDocument(
                            int(note.media_id), int(note.media_access_hash),
                            note.media_file_reference)
                    else:
                        media = None
                    message_id = getnt.message.id
                    if getnt.reply_to_msg_id:
                        message_id = getnt.reply_to_msg_id
                    await getnt.client.send_message(getnt.chat_id,
                                                    note.reply,
                                                    reply_to=message_id,
                                                    file=media)
    except AttributeError:
        pass
Esempio n. 5
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 or event.user_added:
            if cws.should_clean_welcome:
                try:
                    await borg.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()
            current_saved_welcome_message = cws.custom_welcome_message
            mention = "[{}](tg://user?id={})".format(a_user.first_name,
                                                     a_user.id)
            file_media = None
            if cws.message_type == TYPE_PHOTO:
                file_media = types.InputPhoto(int(cws.media_id),
                                              int(cws.media_access_hash),
                                              cws.media_file_reference)
            elif cws.message_type == TYPE_DOCUMENT:
                file_media = types.InputDocument(int(cws.media_id),
                                                 int(cws.media_access_hash),
                                                 cws.media_file_reference)
            else:
                file_media = None
            #
            current_message = await event.reply(
                current_saved_welcome_message.format(mention=mention),
                file=file_media)
            update_previous_welcome(event.chat_id, current_message.id)
Esempio n. 6
0
async def on_snip(event):
    """ Snips logic. """
    try:
        from userbot.modules.sql_helper.snips_sql import get_snip
    except AttributeError:
        return
    name = event.text[1:]
    snip = get_snip(name)
    if snip:
        if snip.snip_type == TYPE_PHOTO:
            media = types.InputPhoto(int(snip.media_id),
                                     int(snip.media_access_hash),
                                     snip.media_file_reference)
        elif snip.snip_type == TYPE_DOCUMENT:
            media = types.InputDocument(int(snip.media_id),
                                        int(snip.media_access_hash),
                                        snip.media_file_reference)
        else:
            media = None

        message_id_to_reply = event.message.reply_to_msg_id

        if not message_id_to_reply:
            message_id_to_reply = None

        await event.client.send_message(event.chat_id,
                                        snip.reply,
                                        reply_to=message_id_to_reply,
                                        file=media)
        await event.delete()
Esempio n. 7
0
async def on_snip(event):
    global last_triggered_filters
    name = event.raw_text
    if event.chat_id in last_triggered_filters:
        if name in last_triggered_filters[event.chat_id]:
            return False
    snips = get_all_filters(event.chat_id)
    if snips:
        for snip in snips:
            pattern = r"( |^|[^\w])" + re.escape(snip.keyword) + r"( |$|[^\w])"
            if re.search(pattern, name, flags=re.IGNORECASE):
                if snip.snip_type == TYPE_PHOTO:
                    media = types.InputPhoto(
                        int(snip.media_id),
                        int(snip.media_access_hash),
                        snip.media_file_reference,
                    )
                elif snip.snip_type == TYPE_DOCUMENT:
                    media = types.InputDocument(
                        int(snip.media_id),
                        int(snip.media_access_hash),
                        snip.media_file_reference,
                    )
                else:
                    media = None
                event.message.id
                if event.reply_to_msg_id:
                    event.reply_to_msg_id
                await event.reply(snip.reply, file=media)
                if event.chat_id not in last_triggered_filters:
                    last_triggered_filters[event.chat_id] = []
                last_triggered_filters[event.chat_id].append(name)
                await asyncio.sleep(DELETE_TIMEOUT)
                last_triggered_filters[event.chat_id].remove(name)
Esempio n. 8
0
async def unsavegif(event, spammer):
    try:
        await event.client(
            functions.messages.SaveGifRequest(
                id=types.InputDocument(
                    id=spammer.media.document.id,
                    access_hash=spammer.media.document.access_hash,
                    file_reference=spammer.media.document.file_reference,
                ),
                unsave=True,
            ))
    except Exception as e:
        LOGS.info(f"{e}")
Esempio n. 9
0
async def on_snip(event):
    await event.delete()
    name = event.pattern_match.group(1)
    if name not in snips:
        return

    snip = snips[name]
    if snip['type'] == TYPE_PHOTO:
        media = types.InputPhoto(snip['id'], snip['hash'], file_reference=b'')
    elif snip['type'] == TYPE_DOCUMENT:
        media = types.InputDocument(snip['id'], snip['hash'], file_reference=b'')
    else:
        media = None

    await borg.send_message(await event.get_input_chat(), snip['text'],
                            file=media,
                            reply_to=event.message.reply_to_msg_id)
Esempio n. 10
0
async def on_snip(event):
    name = event.pattern_match.group(1)
    if name not in snips:
        await on_snip_save(event)
    else:
        snip = snips[name]
        if snip['type'] == TYPE_PHOTO:
            media = types.InputPhoto(snip['id'], snip['hash'], snip['fr'])
        elif snip['type'] == TYPE_DOCUMENT:
            media = types.InputDocument(snip['id'], snip['hash'], snip['fr'])
        else:
            media = None
        message_id = event.message.id
        if event.reply_to_msg_id:
            message_id = event.reply_to_msg_id
        await borg.send_message(event.chat_id,
                                snip['text'],
                                reply_to=message_id,
                                file=media)
    await event.delete()
Esempio n. 11
0
async def on_snip(event):
    name = event.pattern_match.group(1)
    if name not in snips:
        await on_snip_save(event)
    else:
        snip = snips[name]
        if snip["type"] == TYPE_PHOTO:
            media = types.InputPhoto(snip["id"], snip["hash"])
        elif snip["type"] == TYPE_DOCUMENT:
            media = types.InputDocument(snip["id"], snip["hash"])
        else:
            media = None

        await borg.send_message(
            await event.get_input_chat(),
            snip["text"],
            file=media,
            reply_to=event.message.reply_to_msg_id,
        )

    await event.delete()
async def on_snip(event):

    global last_triggered_filters

    name = event.raw_text

    if event.chat_id in last_triggered_filters:

        if name in last_triggered_filters[event.chat_id]:

            return False

    snips = get_all_filters(event.chat_id)

    if snips:

        for snip in snips:

            pattern = r"( |^|[^\w])" + re.escape(snip.keyword) + r"( |$|[^\w])"

            if re.search(pattern, name, flags=re.IGNORECASE):

                if snip.snip_type == TYPE_PHOTO:

                    media = types.InputPhoto(
                        int(snip.media_id),
                        int(snip.media_access_hash),
                        snip.media_file_reference,
                    )

                elif snip.snip_type == TYPE_DOCUMENT:

                    media = types.InputDocument(
                        int(snip.media_id),
                        int(snip.media_access_hash),
                        snip.media_file_reference,
                    )

                else:

                    media = None

                event.message.id

                if event.reply_to_msg_id:

                    event.reply_to_msg_id

                filter = ""
                options = ""
                butto = None

                if "|" in snip.reply:
                    filter, options = snip.reply.split("|")
                else:
                    filter = str(snip.reply)
                try:
                    filter = filter.strip()
                    button = options.strip()
                    if "•" in button:
                        mbutton = button.split("•")
                        lbutton = []
                        for i in mbutton:
                            params = re.findall(r"\'(.*?)\'", i) or re.findall(
                                r"\"(.*?)\"", i)
                            lbutton.append(params)
                        longbutton = []
                        for c in lbutton:
                            butto = [Button.url(*c)]
                            longbutton.append(butto)
                    else:
                        params = re.findall(r"\'(.*?)\'",
                                            button) or re.findall(
                                                r"\"(.*?)\"", button)
                        butto = [Button.url(*params)]
                except BaseException:
                    filter = filter.strip()
                    butto = None

                try:
                    await event.reply(filter, buttons=longbutton, file=media)
                except:
                    await event.reply(filter, buttons=butto, file=media)

                if event.chat_id not in last_triggered_filters:

                    last_triggered_filters[event.chat_id] = []

                last_triggered_filters[event.chat_id].append(name)

                await asyncio.sleep(DELETE_TIMEOUT)

                last_triggered_filters[event.chat_id].remove(name)
Esempio n. 13
0
async def filter(event):
    name = event.raw_text
    if name.startswith("/stop") or name.startswith("/filter"):
        return
    if name.startswith("/clear") or name.startswith("/save"):
        return
    snips = get_all_filters(event.chat_id)
    if snips:
        for snip in snips:
            pattern = r"( |^|[^\w])" + re.escape(snip.keyword) + r"( |$|[^\w])"
            if re.search(pattern, name, flags=re.IGNORECASE):
                if snip.snip_type == TYPE_PHOTO:
                    media = types.InputPhoto(
                        int(snip.media_id),
                        int(snip.media_access_hash),
                        snip.media_file_reference,
                    )
                elif snip.snip_type == TYPE_DOCUMENT:
                    media = types.InputDocument(
                        int(snip.media_id),
                        int(snip.media_access_hash),
                        snip.media_file_reference,
                    )
                else:
                    media = None
                event.message.id
                if event.reply_to_msg_id:
                    event.reply_to_msg_id
                filter = ""
                options = ""
                butto = None
                if "|" in snip.reply:
                    filter, options = snip.reply.split("|")
                else:
                    filter = str(snip.reply)
                try:
                    filter = filter.strip()
                    button = options.strip()
                    if "•" in button:
                        mbutton = button.split("•")
                        lbutton = []
                        for i in mbutton:
                            params = re.findall(r"\'(.*?)\'", i) or re.findall(
                                r"\"(.*?)\"", i)
                            lbutton.append(params)
                        longbutton = []
                        for c in lbutton:
                            butto = [Button.url(*c)]
                            longbutton.append(butto)
                    else:
                        params = re.findall(r"\'(.*?)\'",
                                            button) or re.findall(
                                                r"\"(.*?)\"", button)
                        butto = [Button.url(*params)]
                except BaseException:
                    filter = filter.strip()
                    butto = None
                try:
                    await event.reply(filter, buttons=longbutton, file=media)
                except:
                    await event.reply(filter, buttons=butto, file=media)