def main():
    app = Client("init")

    def handler_parms(client, message):
        """
        This function listens for every new message

            If the message comes from your BOT DISPLAY NAME (not the bot name that ends with 'bot'),
            bot does not read the message (as it can create an infinite message loop)
        """
        print(message)
        print(message["chat"]["first_name"])

        if message["chat"]["first_name"] == "Notify":
            return
        if contains_keywords(message["text"]):
            notify_user(message["text"])


    """
    Pyrogram init functions:
    (https://github.com/pyrogram/pyrogram)
    """
    my_handler = MessageHandler(handler_parms)

    app.add_handler(my_handler)

    app.run()
 def __init__(self, client: pyrogram.Client, shared_config_callback=None):
     self.client = client
     client.add_handler(RawUpdateHandler(self._process_raw_update))
     self.shared_config_callback = shared_config_callback
     self.voips = {}
     voip = VoIP()
     self.max_layer = voip.get_connection_max_layer()
     if shared_config_callback:
         voip.set_shared_config(json.dumps(shared_config_callback({})))
Exemple #3
0
async def main():
    app = Client(
        "asm",
        api_id=config.API_ID,
        api_hash=config.API_HASH,
        bot_token=config.BOT_TOKEN,
    )
    app.add_handler(MessageHandler(service_message, Filters.service))
    await app.start()
    print("Anti Service Bot is up and accepting message updates. Status OK.")
    await app.idle()
Exemple #4
0
class NetworkClient(object):
    """Handles all network related actions"""
    def __init__(self, fbLogin, fbPassword, apiId, apiHash, telegramUsername):
        self.fbClient = FBClientHandler(fbLogin, fbPassword)
        self.telegramClient = TelegramClient(session_name="facegram_session",
                                             api_id=apiId,
                                             api_hash=apiHash)

        self.telegramClient.start()
        self.username = telegramUsername

        # Lookup user data from username
        self.user = self.lookupUser(self.username)

    def registerBridge(self, bridge):
        """Registers Bridge and adds Telegram handlers"""
        self.fbClient.bridge = bridge
        self.telegramClient.add_handler(
            MessageHandler(bridge.telegramMessageHandler), 1)

    def stop(self):
        """Stops telegram and facebook client (Loggout)"""
        self.fbClient.logout()
        self.telegramClient.stop()

    def loadThreadBridges(self, ids):
        return self.fbClient.fetchThreadInfo(ids)

    def createConversation(self, threadId):
        """ Creates conversation for facebook threadId. Returns list of telegram parameters"""
        thread = self.fbClient.fetchThreadInfo(threadId)[threadId]

        # Create chat with facebook's thread name
        update = self.telegramClient.send(
            functions.messages.CreateChat(users=[
                types.InputUserSelf(),
                types.InputUser(user_id=self.user.userId,
                                access_hash=self.user.accessHash)
            ],
                                          title=thread.name))
        chatId = update.chats[0].id
        isGroup = False
        if (thread.type is ThreadType.GROUP):
            isGroup = True
        # Returns [facebookThreadId, telegramChatId, telegramUsername, threadtype]
        return [threadId, chatId, self.username, isGroup]

    def lookupUser(self, username):
        """ Creates FacegramUser from telegram username """
        resolved_peer = self.telegramClient.send(
            functions.contacts.ResolveUsername(username=username))

        return FacegramUser(userId=resolved_peer.users[0].id,
                            accessHash=resolved_peer.users[0].access_hash)
Exemple #5
0
def get_client():
    try:
        client = Client(session_name=config.BOT_TOKEN, api_id=config.API_ID, api_hash=config.API_HASH,
                        app_version="VKMessages v{0}".format(config.VERSION))
        client.add_handler(MessageHandler(start_command, Filters.command("start")))
        client.add_handler(MessageHandler(debug_command, Filters.command("debug")))
        # Этот MessageHandler должен быть обязательно последним
        client.add_handler(MessageHandler(message_handler))

        return client
    except Exception as e:
        return e
Exemple #6
0
class Receiver:
    def __init__(self, api_id: int, api_hash: str, bot_token: str,
                 listen_user: str, website: WebServer):
        self.api_id = api_id
        self.api_hash = api_hash
        self.bot_token = bot_token
        self.bot = Client('receiver',
                          api_id=api_id,
                          api_hash=api_hash,
                          bot_token=bot_token)
        self.listen_user = listen_user
        self.website = website
        self.init_handle()

    def init_handle(self) -> None:
        self.bot.add_handler(
            MessageHandler(self.handle_incoming_passcode,
                           filters.chat(self.listen_user) & filters.text))

    async def handle_incoming_passcode(self, _client: Client,
                                       msg: Message) -> None:
        # logger.info('Put passcode => %s', msg.text)
        if '\n' in msg.text:
            for code in msg.text.splitlines(False):
                code = code.strip()
                if not len(code) or code.startswith('#'):
                    continue
                r = PASSCODE_EXP.match(code)
                if r is None:
                    logger.warning('Skipped code => %s', code)
                await self.website.put_passcode(code)
        elif not msg.text.startswith('#'):
            await self.website.put_passcode(msg.text)

    @classmethod
    async def new(cls, api_id: int, api_hash: str, bot_token: str,
                  listen_user: str, website: WebServer) -> 'Receiver':
        return cls(api_id, api_hash, bot_token, listen_user, website)

    async def start_bot(self) -> None:
        await self.bot.start()

    async def stop_bot(self) -> None:
        await self.bot.stop()

    async def start(self) -> None:
        await asyncio.gather(self.start_bot(), self.website.start())

    async def stop(self) -> None:
        await asyncio.gather(self.stop_bot(), self.website.stop())

    async def idle(self) -> None:
        await self.website.idle()
Exemple #7
0
def main():
    print("starting task system cli...")
    print(__version__)

    app = Client("tasksystem_bot")

    for handler in handlers_list:
        app.add_handler(handler)

    app.start()
    print(app.get_me().username)

    print("done")
    idle()
Exemple #8
0
async def load_plugin(client: Client, message: Message):
    """ load TG Plugins """
    status_message = await message.reply("...")
    try:
        if message.reply_to_message is not None:
            down_loaded_plugin_name = await message.reply_to_message.download(
                file_name="./plugins/"
            )
            if down_loaded_plugin_name is not None:
                # LOGGER.info(down_loaded_plugin_name)
                relative_path_for_dlpn = os.path.relpath(
                    down_loaded_plugin_name,
                    os.getcwd()
                )
                # LOGGER.info(relative_path_for_dlpn)
                lded_count = 0
                path = Path(relative_path_for_dlpn)
                module_path = ".".join(
                    path.parent.parts + (path.stem,)
                )
                # LOGGER.info(module_path)
                module = reload(import_module(module_path))
                # https://git.io/JvlNL
                for name in vars(module).keys():
                    # noinspection PyBroadException
                    try:
                        handler, group = getattr(module, name).handler

                        if isinstance(handler, Handler) and isinstance(group, int):
                            client.add_handler(handler, group)
                            LOGGER.info(
                                '[{}] [LOAD] {}("{}") in group {} from "{}"'.format(
                                    client.session_name,
                                    type(handler).__name__,
                                    name,
                                    group,
                                    module_path
                                )
                            )

                            lded_count += 1
                    except Exception:
                        pass
                await status_message.edit(
                    f"installed {lded_count} commands / plugins"
                )
    except Exception as error:
        await status_message.edit(
            f"ERROR: <code>{error}</code>"
        )
Exemple #9
0
class TelegramClient():

    __instances = {}

    def __init__(self, api_id, api_hash):
        self.client = Client(__name__, api_id, api_hash)
        self.__instances[api_hash] = self
        self.client.add_handler(MessageHandler(self.read_updates))

    def start(self):
        self.client.start()

    def stop(self):
        self.client.stop()

    def read_updates(self, client, message):
        print(message, '\n\n>>>\n\n', client)
class ForwardController:
    def __init__(self):
        config = ConfigParser()
        config.read('config.ini')

        self.listen_group: int = config.getint('channel', 'listen_group')
        self.fwd_to: int = config.getint('channel', 'fwd_to')

        self.app = Client(
            'channel_user',
            config.get('account', 'api_id'),
            config.get('account', 'api_hash'),
        )
        self.q = SqliteObject(
            self.app, config,
            config.get('database', 'file', fallback='channel-no.db'))
        self.watcher = Watcher(self.app, self.fwd_to, self.q)

        self.app.add_handler(
            MessageHandler(
                self.handle_toggle,
                filters.chat(self.listen_group) & filters.command('toggle')))
        self.app.add_handler(
            MessageHandler(self.handle_edit_message,
                           filters.chat(self.listen_group) & filters.edited))
        self.app.add_handler(
            MessageHandler(self.handle_incoming_message,
                           filters.chat(self.listen_group)))
        self.app.add_handler(RawUpdateHandler(self.handle_raw_update))
        self.enabled = True

    async def start(self):
        self.watcher.start()
        await self.app.start()

    async def stop(self):
        self.watcher.set_stop()
        await self.app.stop()

    async def handle_raw_update(self, _client: Client, update: Update,
                                _chats: dict, _users: dict):
        if isinstance(update, pyrogram.raw.types.UpdateDeleteChannelMessages) and \
                (-(update.channel_id + 1000000000000) == self.listen_group):
            await self.q.delete_message(update.messages)

    async def handle_edit_message(self, client: Client, msg: Message) -> None:
        await self.q.handle_edit_message(client, msg)

    async def handle_toggle(self, _client: Client, msg: Message) -> None:
        self.enabled = not self.enabled
        await msg.reply(f'Set status to: {self.enabled}')

    async def handle_incoming_message(self, _, msg: Message) -> None:
        if not self.enabled:
            return
        await self.watcher.put(msg)
Exemple #11
0
async def main(config, session):
    from apps.telegram.utils import log, parse_message
    session = config['session_name']
    api_id = config['api_id']
    api_hash = config['api_hash']
    bot_token = config['bot_token']

    if config['is_bot']:
        log('Init Bot session', 1)
        app = Client(
            'my_bot',
            api_id=api_id,
            api_hash=api_hash,
            bot_token=bot_token,
            workdir='sessions/',
            test_mode=True
        )

    if not config['is_bot']:
        log('Init User-Bot session', 1)
        app = Client(
            api_id=api_id,
            api_hash=api_hash,
            # bot_token=bot_token,
            workdir='sessions/',
            test_mode=True,
        )

    change_device_model(app, model='Macbook Pro 13 Retina')

    app.start()

    @app.on_message()
    def message_handler(client, message):
        result = parse_message(message)

    @app.on_disconnect()
    def disconnect_handler(message=None):
        print('disconnect signal')
        print(message)

    app.add_handler(message_handler)
    app.add_handler(disconnect_handler)

    log(f'Device model: {app.DEVICE_MODEL}', 1)
Exemple #12
0
def main(telegram_class, user_configo, session_label):

    LOG.debug("C={} I={}".format(telegram_class, user_configo))

    client = Client(session_name=session_label)

    chat_parser = make_chat_parser(telegram_class, user_configo.exchange)

    handler = chat_parser.make_message_handler(user_configo)

    LOG.debug("client={}. chat_parser={}. handler={}".format(
        client, chat_parser, handler))

    from pyrogram import RawUpdateHandler, Filters, MessageHandler
    client.add_handler(MessageHandler(handler))
    client.start()

    from pyrogram.api.functions.messages import GetAllChats
    all_chats = client.send(GetAllChats([]))
    LOG.debug("All chats = {}".format(all_chats))

    for channel in chat_parser.CHANNELS.keys():
        client.join_chat(channel)
Exemple #13
0
    def add_client(self, client: pyrogram.Client):
        if not client in self._clients:
            self._clients.append(client)

        if is_bot(client):
            if not client in self._bots:
                self._bots.append(client)
        else:
            if not client in self._users:
                self._users.append(client)

        for decorator in self._handlers:
            if decorator.multigram_onmessagedecorator._scope(client):
                handler_ref = client.add_handler(
                    MessageHandler(
                        decorator,
                        decorator.multigram_onmessagedecorator._filters),
                    decorator.multigram_onmessagedecorator._group)
                if not self._active_handlers.__contains__(client):
                    self._active_handlers[client] = []
                self._active_handlers[client].append(handler_ref)
Exemple #14
0
bot_username = ensure_no_at_sign(config('BOT_USERNAME', default='HeyTacoBot'))

logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.getLevelName(config('LOG_LEVEL', default='INFO')))

bot = Client(session_name=bot_username,
             api_id=api_id,
             api_hash=api_hash,
             bot_token=bot_token)

if __name__ == '__main__':

    sched.add_job(tacoinflator, trigger='cron', hour='0,12')

    bot.add_handler(new_chat_handler, group=-1)
    bot.add_handler(store_names_handler, group=-1)

    bot.add_handler(start_handler)
    bot.add_handler(help_handler)
    bot.add_handler(self_kick_handler)
    bot.add_handler(chat_reply_handler)
    bot.add_handler(my_tacos_handler)
    bot.add_handler(taco_top_handler)
    bot.add_handler(less_handler)
    bot.add_handler(taco_mention_handler)
    bot.add_handler(delete_handler)
    bot.add_handler(autohide_delay_handler)
    bot.add_handler(autohide_handler)

    sched.start()
Exemple #15
0
 if not os.path.isdir(DOWNLOAD_LOCATION):
     os.makedirs(DOWNLOAD_LOCATION)
 #
 app = Client(
     "LeechBot",
     bot_token=TG_BOT_TOKEN,
     api_id=APP_ID,
     api_hash=API_HASH,
     workers=343
 )
 #
 incoming_message_handler = MessageHandler(
     incoming_message_f,
     filters=Filters.command([f"{LEECH_COMMAND}"]) & Filters.chat(chats=AUTH_CHANNEL)
 )
 app.add_handler(incoming_message_handler)
 #
 incoming_gdrive_message_handler = MessageHandler(
     incoming_gdrive_message_f,
     filters=Filters.command([f"{GLEECH_COMMAND}"]) & Filters.chat(chats=AUTH_CHANNEL)
 )
 app.add_handler(incoming_gdrive_message_handler)
 #
 incoming_telegram_download_handler = MessageHandler(
     down_load_media_f,
     filters=Filters.command([f"{TELEGRAM_LEECH_COMMAND_G}"]) & Filters.chat(chats=AUTH_CHANNEL)
 )
 app.add_handler(incoming_telegram_download_handler)
 #
 incoming_purge_message_handler = MessageHandler(
     incoming_purge_message_f,
class BotController:
    def __init__(self, config: ConfigParser, redis_: aioredis.Redis,
                 checker: CheckFile, forward_thread: ForwardThread):
        self.configure = Configure.init_instance(config)
        self.app = Client('forward', config.get('account', 'api_id'),
                          config.get('account', 'api_hash'))
        self.checker: CheckFile = checker

        self.redis: aioredis.Redis = redis_
        self.redis_prefix: str = ''.join(
            random.choices(string.ascii_lowercase, k=5))

        self.ForwardThread: ForwardThread = forward_thread

        self.min_resolution: int = config.getint('forward',
                                                 'lowq_resolution',
                                                 fallback=120)
        self.owner_group_id: int = config.getint('account',
                                                 'group_id',
                                                 fallback=-1)

        self.echo_switch: bool = False
        self.detail_msg_switch: bool = False
        # self.delete_blocked_message_after_blacklist: bool = False
        self.func_blacklist: Optional[Callable[[], int]] = None
        if self.configure.blacklist:
            self.func_blacklist = ForwardThread.put_blacklist
        self.custom_switch: bool = False

        self.init_handle()

        self.plugins: List[PluginLoader] = []

    @classmethod
    async def create(cls, config: ConfigParser):
        redis_ = await aioredis.create_redis_pool('redis://localhost')
        checker = await CheckFile.init_instance(
            config.get('pgsql', 'host'), config.getint('pgsql', 'port'),
            config.get('pgsql', 'username'), config.get('pgsql', 'passwd'),
            config.get('pgsql', 'database'))
        forward_thread = ForwardThread()
        self = cls(config, redis_, checker, forward_thread)
        await self.redis.sadd(f'{self.redis_prefix}for_bypass', *await
                              self.checker.query_all_bypass())
        await self.redis.sadd(f'{self.redis_prefix}for_blacklist', *await
                              self.checker.query_all_blacklist())
        await self.redis.mset(await self.checker.query_all_special_forward())
        await self.redis.sadd(f'{self.redis_prefix}for_admin', *await
                              self.checker.query_all_admin())
        await self.redis.sadd(f'{self.redis_prefix}for_admin',
                              config.getint('account', 'owner'))
        await self.load_plugins(config)
        return self

    async def clean(self) -> None:
        await self.redis.delete(f'{self.redis_prefix}for_bypass')
        await self.redis.delete(f'{self.redis_prefix}for_blacklist')
        await self.redis.delete(' '.join(
            map(str, (key for key, _ in (
                await self.checker.query_all_special_forward()).items()))))
        await self.redis.delete(f'{self.redis_prefix}for_admin')

    def init_handle(self) -> None:
        self.app.add_handler(
            MessageHandler(self.get_msg_from_owner_group,
                           filters.chat(self.owner_group_id) & filters.reply))
        self.app.add_handler(
            MessageHandler(
                self.get_command_from_target,
                filters.chat(self.configure.predefined_group_list)
                & filters.text & filters.reply))
        self.app.add_handler(
            MessageHandler(
                self.pre_check, filters.media & ~filters.private
                & ~filters.sticker & ~filters.voice & ~filters.web_page))
        self.app.add_handler(
            MessageHandler(
                self.handle_photo, filters.photo & ~filters.private
                & ~filters.chat([self.configure.photo, self.configure.lowq])))
        self.app.add_handler(
            MessageHandler(
                self.handle_video, filters.video & ~filters.private
                & ~filters.chat(self.configure.video)))
        self.app.add_handler(
            MessageHandler(
                self.handle_gif, filters.animation & ~filters.private
                & ~filters.chat(self.configure.gif)))
        self.app.add_handler(
            MessageHandler(
                self.handle_document, filters.document & ~filters.private
                & ~filters.chat(self.configure.doc)))
        self.app.add_handler(
            MessageHandler(
                self.handle_other, filters.media & ~filters.private
                & ~filters.sticker & ~filters.voice & ~filters.web_page))
        self.app.add_handler(MessageHandler(self.pre_private, filters.private))
        self.app.add_handler(
            MessageHandler(self.handle_add_bypass,
                           filters.command('e') & filters.private))
        self.app.add_handler(
            MessageHandler(self.process_query,
                           filters.command('q') & filters.private))
        self.app.add_handler(
            MessageHandler(self.handle_add_black_list,
                           filters.command('b') & filters.private))
        self.app.add_handler(
            MessageHandler(self.process_show_detail,
                           filters.command('s') & filters.private))
        self.app.add_handler(
            MessageHandler(
                self.set_forward_target_reply,
                filters.command('f') & filters.reply & filters.private))
        self.app.add_handler(
            MessageHandler(self.set_forward_target,
                           filters.command('f') & filters.private))
        self.app.add_handler(
            MessageHandler(self.add_user,
                           filters.command('a') & filters.private))
        self.app.add_handler(
            MessageHandler(self.change_code,
                           filters.command('pw') & filters.private))
        self.app.add_handler(
            MessageHandler(self.undo_blacklist_operation,
                           filters.command('undo') & filters.private))
        self.app.add_handler(
            MessageHandler(self.switch_detail2,
                           filters.command('sd2') & filters.private))
        self.app.add_handler(
            MessageHandler(self.switch_detail,
                           filters.command('sd') & filters.private))
        self.app.add_handler(
            MessageHandler(self.show_help_message,
                           filters.command('help') & filters.private))
        self.app.add_handler(
            MessageHandler(self.process_private, filters.private))

    async def load_plugins(self, config: ConfigParser) -> None:
        try:
            for root, _dirs, filenames in os.walk('.'):
                if root != '.':
                    continue
                for filename in filenames:
                    if not (filename.startswith('Plugin')
                            and filename.endswith('.py')):
                        continue
                    module_name = filename.split('.py')[0]
                    try:
                        mod = importlib.import_module(module_name)
                        loader = await PluginLoader(
                            mod, module_name, self.app, config,
                            CheckFile).create_instance()  # type: ignore
                        await loader.instance.plugin_pending_start(
                        )  # type: ignore
                        self.plugins.append(loader)  # type: ignore
                    except:
                        logger.exception('Loading plugin: %s catch exception!',
                                         module_name)
                    else:
                        logger.info('Load plugin: %s successfully',
                                    module_name)
        except FileNotFoundError:
            pass

    async def start_plugins(self) -> None:
        for x in self.plugins:
            try:
                await x.instance.plugin_start()
            except:
                logger.error('Start %s plugin fail', x.module_name)

    async def stop_plugins(self) -> None:
        for x in self.plugins:
            try:
                await x.instance.plugin_stop()
            except:
                logger.error('Stop %s plugin fail', x.module_name)

    async def pending_stop_plugins(self) -> None:
        for x in self.plugins:
            try:
                await x.instance.plugin_pending_stop()
            except:
                logger.error('Pending stop %s plugin fail', x.module_name)

    async def user_checker(self, msg: Message) -> bool:
        return await self.redis.sismember(f'{self.redis_prefix}for_admin',
                                          msg.chat.id)

    async def reply_checker_and_del_from_blacklist(self, client: Client,
                                                   msg: Message) -> None:
        try:
            pending_del = None
            if msg.reply_to_message.text:
                r = re.match(r'^Add (-?\d+) to blacklist$',
                             msg.reply_to_message.text)
                if r and msg.reply_to_message.from_user.id != msg.chat.id:
                    pending_del = int(r.group(1))
            else:
                group_id = msg.forward_from.id if msg.forward_from else \
                    msg.forward_from_chat.id if msg.forward_from_chat else None
                if group_id and await self.redis.sismember(
                        f'{self.redis_prefix}for_blacklist', group_id):
                    pending_del = group_id
            if pending_del is not None:
                if await self.redis.srem(f'{self.redis_prefix}for_blacklist',
                                         pending_del):
                    await self.checker.remove_blacklist(pending_del)
                await client.send_message(
                    self.owner_group_id,
                    f'Remove `{pending_del}` from blacklist',
                    parse_mode='markdown')
        except:
            if msg.reply_to_message.text: print(msg.reply_to_message.text)
            logger.exception('Catch!')

    async def add_black_list(self,
                             user_id: Union[int, dict],
                             post_back_id=None) -> None:
        if isinstance(user_id, dict):
            await self.app.send_message(
                self.owner_group_id, f'User id:`{user_id["from_user"]}`\nFrom '
                f'chat id:`{user_id["from_chat"]}`\nForward '
                f'from id:`{user_id["from_forward"]}`', 'markdown')
            user_id = user_id['from_user']
        # Check is msg from authorized user
        if user_id is None or await self.redis.sismember(
                f'{self.redis_prefix}for_admin', user_id):
            raise KeyError
        if await self.redis.sadd(f'{self.redis_prefix}for_blacklist', user_id):
            await self.checker.insert_blacklist(user_id)  # type: ignore
        logger.info('Add %d to blacklist', user_id)
        if post_back_id is not None:
            await self.app.send_message(post_back_id,
                                        f'Add `{user_id}` to blacklist',
                                        'markdown')

    async def del_message_by_id(self,
                                client: Client,
                                msg: Message,
                                send_message_to: Optional[Union[int,
                                                                str]] = None,
                                forward_control: bool = True) -> None:
        if forward_control and self.configure.blacklist == '':
            logger.error('Request forward but blacklist channel not specified')
            return
        id_from_reply = get_forward_id(msg.reply_to_message)
        q = await self.checker.query('''SELECT * FROM "msg_detail" 
        WHERE ("from_chat" = $1 OR "from_user" = $2 OR "from_forward" = $3) 
        AND "to_chat" != $4''', (id_from_reply, id_from_reply, id_from_reply,
                                 self.configure.blacklist))  # type: ignore

        if send_message_to:
            _msg = await client.send_message(send_message_to,
                                             f'Find {len(q)} message(s)')

            for x in q:
                try:
                    await client.delete_messages(x['to_chat'], x['to_msg'])
                except:
                    pass
            await self.checker.execute('''DELETE FROM "msg_detail" 
            WHERE ("from_chat" = $1 OR "from_user" = $2 OR "from_forward" = $3) 
            AND "to_chat" != $4''', (id_from_reply, id_from_reply,
                                     id_from_reply, self.configure.blacklist)
                                       )  # type: ignore
            await _msg.edit(
                f'Delete all message from `{id_from_reply}` completed.',
                'markdown')
        else:
            for x in q:
                try:
                    await client.delete_messages(x['to_chat'], x['to_msg'])
                except:
                    pass
            await msg.reply(
                f'Delete all message from `{id_from_reply}` completed.', False,
                'markdown')

    async def get_msg_from_owner_group(self, client: Client,
                                       msg: Message) -> None:
        try:
            if msg.text and msg.text == '/undo':
                await self.reply_checker_and_del_from_blacklist(client, msg)
        except:
            logger.exception(
                'Exception occurred on `get_msg_from_owner_group()\'')

    async def get_command_from_target(self, client: Client,
                                      msg: Message) -> None:
        if re.match(r'^\/(del(f)?|b|undo|print)$', msg.text):
            if msg.text == '/b':
                for_id = await self.checker.query_forward_from(
                    msg.chat.id, msg.reply_to_message.message_id)
                await self.add_black_list(for_id, self.owner_group_id)
                # To enable delete message, please add `delete other messages' privilege to bot
                call_delete_msg(
                    30, client.delete_messages, msg.chat.id,
                    (msg.message_id, msg.reply_to_message.message_id))
            elif msg.text == '/undo':
                group_id = msg.reply_to_message.message_id if msg.reply_to_message else None
                if group_id:
                    try:
                        if await self.redis.srem(
                                f'{self.redis_prefix}for_admin', group_id):
                            await self.checker.remove_admin(group_id)
                        await client.send_message(
                            self.owner_group_id,
                            f'Remove `{group_id}` from blacklist', 'markdown')
                    except ValueError:
                        await client.send_message(
                            self.owner_group_id,
                            f'`{group_id}` not in blacklist', 'markdown')
            elif msg.text == '/print' and msg.reply_to_message is not None:
                print(msg.reply_to_message)
            else:
                call_delete_msg(20, client.delete_messages, msg.chat.id,
                                msg.message_id)
                if get_forward_id(msg.reply_to_message):
                    await self.del_message_by_id(client, msg,
                                                 self.owner_group_id,
                                                 msg.text[-1] == 'f')

    @staticmethod
    def get_file_unique_id(msg: Message, _type: str) -> str:
        return getattr(msg, _type).file_unique_id

    @staticmethod
    def get_file_type(msg: Message) -> str:
        s = BotController._get_file_type(msg)
        if s == 'error':
            raise UnsupportedType()
        return s

    @staticmethod
    def _get_file_type(msg: Message) -> str:
        return 'photo' if msg.photo else \
            'video' if msg.video else \
            'animation' if msg.animation else \
            'sticker' if msg.sticker else \
            'voice' if msg.voice else \
            'document' if msg.document else \
            'audio' if msg.audio else \
            'contact' if msg.contact else 'error'

    async def pre_check(self, _client: Client, msg: Message) -> None:
        try:
            if await self.redis.sismember(f'{self.redis_prefix}for_bypass', msg.chat.id) or \
                    not await self.checker.checkFile(self.get_file_unique_id(msg, self.get_file_type(msg))):
                return
        except UnsupportedType:
            pass
        else:
            raise ContinuePropagation

    async def blacklist_checker(self, msg: Message) -> None:
        return await self.redis.sismember(f'{self.redis_prefix}for_blacklist', msg.chat.id) or \
               (msg.from_user and await self.redis.sismember(
                   f'{self.redis_prefix}for_blacklist', msg.from_user.id)) or \
               (msg.forward_from and await self.redis.sismember(
                   f'{self.redis_prefix}for_blacklist',
                   msg.forward_from.id)) or \
               (msg.forward_from_chat and await self.redis.sismember(f'{self.redis_prefix}for_blacklist',
                                                                     msg.forward_from_chat.id))

    async def forward_msg(self,
                          msg: Message,
                          to: int,
                          what: str = 'photo') -> None:
        if await self.blacklist_checker(msg):
            # if msg.from_user and msg.from_user.id == 630175608: return # block tgcn-captcha
            self.func_blacklist(
                BlackListForwardRequest(
                    msg,
                    LogStruct(True,
                              'forward blacklist context %s from %s (id: %d)',
                              what, msg.chat.title, msg.chat.id)))
            return
        forward_target = to
        # spec_target = None if what == 'other' else await self.redis.get(f'{self.redis_prefix}{msg.chat.id}')
        spec_target = None if what == 'other' else await self.redis.get(
            str(msg.chat.id))
        if spec_target is None:
            # spec_target = await self.redis.get(f'{self.redis_prefix}{msg.forward_from_chat.id}')
            if msg.forward_from_chat:
                spec_target = await self.redis.get(
                    str(msg.forward_from_chat.id))
        if spec_target is not None:
            forward_target = getattr(self.configure, spec_target.decode())
        elif is_bot(msg):
            forward_target = self.configure.bot
        self.ForwardThread.put(
            ForwardRequest(
                forward_target, msg,
                LogStruct(True, 'forward %s from %s (id: %d)', what,
                          msg.chat.title, msg.chat.id)))

    async def handle_photo(self, _client: Client, msg: Message) -> None:
        await self.forward_msg(
            msg, self.configure.photo
            if self.checker.check_photo(msg.photo) else self.configure.lowq)

    async def handle_video(self, _client: Client, msg: Message) -> None:
        await self.forward_msg(msg, self.configure.video, 'video')

    async def handle_gif(self, _client: Client, msg: Message) -> None:
        await self.forward_msg(msg, self.configure.gif, 'gif')

    async def handle_document(self, _client: Client, msg: Message):
        if msg.document.file_name.split('.')[-1] in ('com', 'exe', 'bat',
                                                     'cmd'):
            return
        forward_target = self.configure.doc if '/' in msg.document.mime_type and msg.document.mime_type.split('/')[0] \
                                               in ('image', 'video') else self.configure.other
        await self.forward_msg(
            msg, forward_target,
            'doc' if forward_target != self.configure.other else 'other')

    async def handle_other(self, _client: Client, msg: Message) -> None:
        await self.forward_msg(msg, self.configure.other, 'other')

    async def pre_private(self, client: Client, msg: Message) -> None:
        if not await self.user_checker(msg):
            await client.send(
                raw.functions.messages.ReportSpam(
                    peer=await client.resolve_peer(msg.chat.id)))
            return
        await client.send(
            raw.functions.messages.ReadHistory(peer=await
                                               client.resolve_peer(msg.chat.id
                                                                   ),
                                               max_id=msg.message_id))
        raise ContinuePropagation

    async def handle_add_bypass(self, _client: Client, msg: Message) -> None:
        if len(msg.text) < 4:
            return
        except_id = msg.text[3:]
        if await self.redis.sadd(f'{self.redis_prefix}for_bypass', except_id):
            await self.checker.insert_bypass(except_id)
        await msg.reply(f'Add `{except_id}` to bypass list',
                        parse_mode='markdown')
        logger.info('add except id: %s', except_id)

    @staticmethod
    async def process_query(client: Client, msg: Message) -> None:
        r = re.match(r'^/q (-?\d+)(d)?$', msg.text)
        if r is None:
            return
        GetHistoryCoroutine(client,
                            msg.chat.id,
                            r.group(1),
                            dirty_run=r.group(2) is not None)

    async def handle_add_black_list(self, _client: Client,
                                    msg: Message) -> None:
        try:
            await self.add_black_list(msg.text[3:])
        except:
            await msg.reply("Check your input")
            logger.exception('Catch!')

    async def process_show_detail(self, _client: Client, msg: Message) -> None:
        self.echo_switch = not self.echo_switch
        await msg.reply(f'Set echo to {self.echo_switch}')

    async def set_forward_target_reply(self, _client: Client,
                                       msg: Message) -> None:
        if msg.reply_to_message.text is None:
            await msg.reply('Reply to None text messages')
            return
        r = re.match(r'^forward_from = (-\d+)$', msg.reply_to_message.text)
        r1 = re.match(r'^/f (other|photo|bot|video|anime|gif|doc|lowq)$',
                      msg.text)
        if r is None or r1 is None:
            await msg.reply('Cannot found special target forward for')
            return
        await self._set_forward_target(int(r.group(1)), r1.group(1), msg)

    async def set_forward_target(self, _client: Client, msg: Message) -> None:
        r = re.match(
            r'^/f (-?\d+) (other|photo|bot|video|anime|gif|doc|lowq)$',
            msg.text)
        if r is None:
            return
        await self._set_forward_target(int(r.group(1)), r.group(2), msg)

    async def _set_forward_target(self, chat_id: int, target: str,
                                  msg: Message) -> None:
        await self.redis.set(chat_id, target)
        await self.checker.update_forward_target(chat_id, target)
        await msg.reply(f'Set group `{chat_id}` forward to `{target}`',
                        parse_mode='markdown')

    async def add_user(self, _client: Client, msg: Message) -> None:
        r = re.match(r'^/a (.+)$', msg.text)
        if r and r.group(1) == self.configure.authorized_code:
            if await self.redis.sadd(f'{self.redis_prefix}for_admin',
                                     msg.chat.id):
                await self.checker.insert_admin(msg.chat.id)
            await msg.reply('Success add to authorized users.')

    @staticmethod
    async def change_code(self, _client: Client, msg: Message) -> None:
        r = re.match(r'^/pw (.+)$', msg.text)
        if r:
            await msg.reply('Success changed authorize code.')

    async def undo_blacklist_operation(self, client: Client,
                                       msg: Message) -> None:
        await self.reply_checker_and_del_from_blacklist(client, msg)

    async def switch_detail2(self, _client: Client, msg: Message) -> None:
        self.custom_switch = not self.custom_switch
        await msg.reply(f'Switch custom print to {self.custom_switch}')

    async def switch_detail(self, _client: Client, msg: Message) -> None:
        self.detail_msg_switch = not self.detail_msg_switch
        await msg.reply(f'Switch detail print to {self.detail_msg_switch}')

    @staticmethod
    async def show_help_message(self, _client: Client, msg: Message) -> None:
        await msg.reply(""" Usage:
        /e <chat_id>            Add `chat_id' to bypass list
        /a <password>           Use the `password' to obtain authorization
        /q <chat_id>            Request to query one specific `chat_id'
        /b <chat_id>            Add `chat_id' to blacklist
        /s                      Toggle echo switch
        /f <chat_id> <target>   Add `chat_id' to specified forward rules
        /pw <new_password>      Change password to new password
        """,
                        parse_mode='text')

    async def process_private(self, _client: Client, msg: Message) -> None:
        if self.custom_switch:
            obj = getattr(msg, self.get_file_type(msg), None)
            if obj:
                await msg.reply('```{}```\n{}'.format(
                    str(obj), 'Resolution: `{}`'.format(
                        msg.photo.file_size /
                        (msg.photo.width * msg.photo.height) *
                        1000) if msg.photo else ''),
                                parse_mode='markdown')
        if self.echo_switch:
            await msg.reply('forward_from = `{}`'.format(
                get_forward_id(msg, -1)),
                            parse_mode='markdown')
            if self.detail_msg_switch: print(msg)
        if msg.text is None: return
        r = re.match(r'^Add (-?\d+) to blacklist$', msg.text)
        if r is None: return
        await self.add_black_list(int(r.group(1)), msg.chat.id)

    async def start(self) -> None:
        await self.app.start()
        self.ForwardThread.start()
        await self.start_plugins()

    @staticmethod
    async def idle(self) -> None:
        await pyrogram.idle()

    async def stop(self) -> None:
        logger.info('Calling clean up function')
        ForwardThread.switch = False
        await self.pending_stop_plugins()
        if not ForwardThread.queue.empty():
            await asyncio.sleep(0.5)
        await self.app.stop()
        await self.stop_plugins()
        await self.clean()
        self.redis.close()
        await asyncio.wait([
            asyncio.create_task(self.checker.close()),
            asyncio.create_task(self.redis.wait_closed())
        ])
Exemple #17
0
if __name__ == "__main__":
    # create download directory, if not exist
    if not os.path.isdir(DOWNLOAD_LOCATION):
        os.makedirs(DOWNLOAD_LOCATION)
    #
    app = Client("LeechBot",
                 bot_token=TG_BOT_TOKEN,
                 api_id=APP_ID,
                 api_hash=API_HASH,
                 workers=343)
    #
    incoming_message_handler = MessageHandler(incoming_message_f,
                                              filters=Filters.command(
                                                  ["leech"]))
    app.add_handler(incoming_message_handler)
    #
    incoming_youtube_dl_handler = MessageHandler(incoming_youtube_dl_f,
                                                 filters=Filters.command(
                                                     ["ytdl"]))
    app.add_handler(incoming_youtube_dl_handler)
    #
    cancel_message_handler = MessageHandler(cancel_message_f,
                                            filters=Filters.command(["cancel"
                                                                     ]))
    app.add_handler(cancel_message_handler)
    #
    upload_document_handler = MessageHandler(upload_document_f,
                                             filters=Filters.command(
                                                 ["upload"]))
    app.add_handler(upload_document_handler)
Exemple #18
0
    sessions = "/app/sessions"
    if not os.path.isdir(sessions):
        os.makedirs(sessions)
    app = Client("SGVideoCompressBot",
                 bot_token=TG_BOT_TOKEN,
                 api_id=APP_ID,
                 api_hash=API_HASH,
                 workers=2)
    #
    app.set_parse_mode("html")
    #
    # START command
    incoming_start_message_handler = MessageHandler(
        incoming_start_message_f,
        filters=filters.command(["start", f"start@{BOT_USERNAME}"]))
    app.add_handler(incoming_start_message_handler)

    # COMPRESS command
    incoming_compress_message_handler = MessageHandler(
        incoming_compress_message_f,
        filters=filters.command(["compress", f"compress@{BOT_USERNAME}"]))
    app.add_handler(incoming_compress_message_handler)

    # CANCEL command
    incoming_cancel_message_handler = MessageHandler(
        incoming_cancel_message_f,
        filters=filters.command(["cancel", f"cancel@{BOT_USERNAME}"])
        & filters.chat(chats=AUTH_USERS))
    app.add_handler(incoming_cancel_message_handler)

    # MEMEs COMMANDs
Exemple #19
0
if __name__ == "__main__":
    # create download directory, if not exist
    if not os.path.isdir(DOWNLOAD_LOCATION):
        os.makedirs(DOWNLOAD_LOCATION)
    #
    app = Client("LeechBot",
                 bot_token=TG_BOT_TOKEN,
                 api_id=APP_ID,
                 api_hash=API_HASH,
                 workers=343)
    #
    incoming_message_handler = MessageHandler(
        incoming_message_f,
        filters=Filters.command(["Leech@Leeech2filebot"])
        & Filters.chat(chats=AUTH_CHANNEL))
    app.add_handler(incoming_message_handler)
    #
    #    incoming_gdrive_message_handler = MessageHandler(
    #        incoming_gdrive_message_f,
    #        filters=Filters.command([f"{GLEECH@Leeech2filebot}"]) & Filters.chat(chats=AUTH_CHANNEL)
    #    )
    #    app.add_handler(incoming_gdrive_message_handler)
    #
    #    incoming_telegram_download_handler = MessageHandler(
    #        down_load_media_f,
    #        filters=Filters.command([f"{TELEGRAM_LEECH_COMMAND_G}"]) & Filters.chat(chats=AUTH_CHANNEL)
    #    )
    #    app.add_handler(incoming_telegram_download_handler)
    #
    incoming_purge_message_handler = MessageHandler(
        incoming_purge_message_f,
Exemple #20
0
logging.getLogger("urllib3").setLevel(logging.WARNING)
LOGGER = logging.getLogger(__name__)

import os
from Atom import (DOWNLOAD_LOCATION, TG_BOT_TOKEN, APP_ID, API_HASH,
                  AUTH_CHANNEL, EXEC_CMD_TRIGGER, Eval_CMD_TRIGGER,
                  Save_CMD_TRIGGER)

from pyrogram import Client, Filters, MessageHandler, CallbackQueryHandler

from Atom.translate import (trait_message_f)

if __name__ == "__main__":
    # create download directory, if not exist
    if not os.path.isdir(DOWNLOAD_LOCATION):
        os.makedirs(DOWNLOAD_LOCATION)
    #
    app = Client("LeechBot",
                 bot_token=TG_BOT_TOKEN,
                 api_id=APP_ID,
                 api_hash=API_HASH,
                 workers=343)
    #
    trait_message_handler = MessageHandler(
        trait_message_f,
        filters=Filters.command([Save_CMD_TRIGGER])
        & Filters.chat(chats=AUTH_CHANNEL))
    app.add_handler(trait_message_handler)
    #
    app.run()
Exemple #21
0
            print(file)
    exit()
elif account == "--add":
    num = input("Inserisci il numero della sessione: ")
    app = Client(num, api_id=settings.id, api_hash=settings.hash)
    app.start()
    try:
        app.join_chat(settings.chat)
    except:
        pass
    app.stop()
    exit()
else:
    print("I possibili flag sono:\n--all (Avvia tutte le sessioni)\n--list (Fa vedere tutte le sessioni disponibili)\n--add (Aggiunge un account)\n--single (Avvia una sola sessione)")
    exit()

for app in apps:
    app.add_handler(MessageHandler(stop, filters.regex("stop") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(check, filters.regex("check") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(msgstorm, filters.regex("msgstorm") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(update, filters.regex("update") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(join, filters.regex("join") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(leaveAll, filters.regex("leaveall") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(aggiungiDB, filters.regex("dbadd") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(aggiungi, filters.regex("aggiungi") & filters.chat(settings.chatid)))
    app.add_handler(MessageHandler(leave, filters.regex("leave") & filters.chat(settings.chatid)))
    app.start()
    print(str(app.get_me()["phone_number"]) + " avviato")

idle()
Exemple #22
0
 def __init__(self, client: pyrogram.Client, receive_calls=True):
     self.client = client
     self.incoming_call_handlers = []
     if receive_calls:
         client.add_handler(RawUpdateHandler(self.update_handler), -1)
     client.on_message()
Exemple #23
0
                          wrong_room_handler, help_message_handler,
                          leech_handler, cancel_leech_handler,
                          leech_list_handler)

# Initialize bot
app = Client("Bot",
             bot_token=CONFIG.BOT_TOKEN,
             api_id=CONFIG.API_ID,
             api_hash=CONFIG.API_HASH,
             workdir=os_path_join(CONFIG.ROOT, CONFIG.WORKDIR),
             workers=343)
app.set_parse_mode("html")

# register /start handler
app.add_handler(
    MessageHandler(start_message_handler.func,
                   filters=Filters.command(COMMAND.START)))

if CONFIG.BOT_PASSWORD:
    # register /pass handler
    app.add_handler(
        MessageHandler(password_handler.func,
                       filters=Filters.command(COMMAND.PASSWORD)))

    # take action on unauthorized chat room
    app.add_handler(
        MessageHandler(wrong_room_handler.func,
                       filters=lambda msg: not msg.chat.id in CONFIG.CHAT_ID))

# register /help handler
app.add_handler(
Exemple #24
0
if __name__ == "__main__":
    # create download directory, if not exist
    if not os.path.isdir(DOWNLOAD_LOCATION):
        os.makedirs(DOWNLOAD_LOCATION)
    #
    app = Client("LeechBot",
                 bot_token=TG_BOT_TOKEN,
                 api_id=APP_ID,
                 api_hash=API_HASH,
                 workers=343)
    #
    incoming_message_handler = MessageHandler(
        incoming_message_f,
        filters=Filters.command(["leech@Leeching_Bitch_bot"])
        & Filters.chat(chats=AUTH_CHANNEL))
    app.add_handler(incoming_message_handler)
    #
    incoming_youtube_dl_handler = MessageHandler(
        incoming_youtube_dl_f,
        filters=Filters.command(["ytdl@Leeching_Bitch_bot"])
        & Filters.chat(chats=AUTH_CHANNEL))
    app.add_handler(incoming_youtube_dl_handler)
    #
    status_message_handler = MessageHandler(
        status_message_f,
        filters=Filters.command(["status@Leeching_Bitch_bot"])
        & Filters.chat(chats=AUTH_CHANNEL))
    app.add_handler(status_message_handler)
    #
    cancel_message_handler = MessageHandler(cancel_message_f,
                                            filters=Filters.command(["cancel"])
    if not os.path.isdir(DOWNLOAD_LOCATION):
        os.makedirs(DOWNLOAD_LOCATION)
    #

    app = Client(SESSION_NAME,
                 bot_token=TG_BOT_TOKEN,
                 api_id=APP_ID,
                 api_hash=API_HASH,
                 workers=2)
    #
    app.set_parse_mode("html")
    #
    # STATUS ADMIN Command
    incoming_status_command = MessageHandler(
        sts, filters=filters.command(["status"]) & filters.user(AUTH_USERS))
    app.add_handler(incoming_status_command)

    # BAN Admin Command
    incoming_ban_command = MessageHandler(ban,
                                          filters=filters.command(["ban_user"])
                                          & filters.user(AUTH_USERS))
    app.add_handler(incoming_ban_command)

    # UNBAN Admin Command
    incoming_unban_command = MessageHandler(
        unban,
        filters=filters.command(["unban_user"]) & filters.user(AUTH_USERS))
    app.add_handler(incoming_unban_command)

    # BANNED_USERS Admin Command
    incoming_banned_command = MessageHandler(
Exemple #26
0
def registerCommands(app: Client) -> None:
    app.add_handler(MessageHandler(start, command("start")))
    app.add_handler(MessageHandler(addService, command("add")))
    app.add_handler(MessageHandler(limit, command("limit")))
    app.add_handler(MessageHandler(session, command("session")))
    app.add_handler(MessageHandler(delSession, command("delsession")))
    app.add_handler(MessageHandler(addTimer, command("addtime")))
Exemple #27
0
        ":memory:",
        bot_token=1401136395:AAGUGIeIKCBophgUJmiP-rhGHnNmjEI3mvs,
        api_id=2695636,
        api_hash=e3c4e55b3ef28f0bc38700405cc7400b,
        workers=343,
        workdir=os.makedirs,
    )
    #
    app.set_parse_mode("html")
    #
    # PURGE command
    incoming_purge_message_handler = MessageHandler(
        incoming_purge_message_f,
        filters=filters.command([Commandi.PURGE]) & filters.chat(chats=AUTH_CHANNEL)
    )
    app.add_handler(incoming_purge_message_handler)

    # STATUS command
    status_message_handler = MessageHandler(
        status_message_f,
        filters=filters.command([Commandi.STATUS]) & filters.chat(chats=AUTH_CHANNEL)
    )
    app.add_handler(status_message_handler)

    # CANCEL command
    cancel_message_handler = MessageHandler(
        cancel_message_f,
        filters=filters.command([Commandi.CANCEL]) & filters.chat(chats=AUTH_CHANNEL)
    )
    app.add_handler(cancel_message_handler)
Exemple #28
0
from downloadProcess import download

if __name__ == "__main__":
    #Lets create our download directory, if it doesnt exist
    if not os.path.isdir("/Downloads"):
        os.makedirs("/Downloads")
        token_bot = "TOKEN"
        bot = Client("my_bot",
                     bot_token=token_bot,
                     api_id=838378,
                     api_hash="05370bb6f2eea0f33c6325eaa5ad3ac3",
                     workers=100)
        bot.DOWNLOAD_WORKERS = 100
        #
        bot.add_handler(
            MessageHandler(startBot,
                           filters=Filters.command(
                               ["start"], prefixes=["/", "!", "$", "#"])))
        bot.add_handler(
            MessageHandler(help_func,
                           filters=Filters.command(
                               ["help"], prefixes=["/", "!", "$", "#"])))
        bot.add_handler(
            MessageHandler(rename_func,
                           filters=Filters.command(["rename"],
                                                   prefixes=["/"])))
        bot.add_handler(
            MessageHandler(upload_func,
                           filters=Filters.command(["upload"],
                                                   prefixes=["/"])))
        bot.add_handler(
            MessageHandler(savethumbnail_func,
Exemple #29
0
            from PIL import ImageFont
            from PIL import ImageDraw
            import time

            template = Image.open(r'templates/and-thats-a-fact.png')
            stringdata = message_parts
            font = ImageFont.truetype("impact.ttf", 20)

            background_image = Image.new("RGBA",
                                         (template.width, template.height),
                                         "#FFF")

            draw = ImageDraw.Draw(background_image)
            text_w, text_h = draw.textsize(stringdata, font)

            splitted_string = stringdata.split()

            draw.text((367 - (text_w / 2), 130),
                      stringdata, (0, 0, 0),
                      font=font)

            # background_image.paste(template, mask=template)
            background_image.save("out.png")
            app.send_photo(send_to, "out.png")


app = Client("ArkangelDev")
my_handler = MessageHandler(handleMemes)
app.add_handler(my_handler)
app.run()
Exemple #30
0
 #
 incoming_message_handler = MessageHandler(
     incoming_message_f,
     filters=filters.command(
         [
             LEECH_COMMAND,
             LEECH_UNZIP_COMMAND,
             LEECH_ZIP_COMMAND,
             GLEECH_COMMAND,
             GLEECH_UNZIP_COMMAND,
             GLEECH_ZIP_COMMAND,
         ]
     )
     & filters.chat(chats=AUTH_CHANNEL),
 )
 app.add_handler(incoming_message_handler)
 #
 incoming_telegram_download_handler = MessageHandler(
     down_load_media_f,
     filters=filters.command([TELEGRAM_LEECH_COMMAND, TELEGRAM_LEECH_UNZIP_COMMAND])
     & filters.chat(chats=AUTH_CHANNEL),
 )
 app.add_handler(incoming_telegram_download_handler)
 #
 incoming_purge_message_handler = MessageHandler(
     incoming_purge_message_f,
     filters=filters.command(["purge"]) & filters.chat(chats=AUTH_CHANNEL),
 )
 app.add_handler(incoming_purge_message_handler)
 #
 incoming_clone_handler = MessageHandler(