class Bot: def __init__(self): self.api_id = 2513883 self.api_hash = 'af250cc4b78b7a96994e21e1a9b742ed' self.client = TelegramClient( StringSession("1BVtsOHUBu8HRbpZESrzsRgQ-4PvP09zNN3eGWg-G8rubX4n-ZdR4KJfraaBo51xPoU-EWhb3PUsLhRaVNKAwTPBY2whlBU7Apb2pjqvhLo-gh2adD-_1ULMkLcz7uennqrOTUCRXgpt93Dgm8gHJeLGQsAygwWdJU7XfrM2FO94gnKA7dMcWqyW_3w04Ign5v94hDP65lLduQoeqDXXgsfxzs-PJuGLnML5sE6MV1HB5SWdiR9fmBH_2olpFx4olojpyArkRjnQ1RYalgDbHDgdADOJGHnIfnioz56-38lMf6EYxIo6CYBDF6atdRAEu2aLmeCzCsNwJ59S6rROku2YscJDe7lk="), self.api_id, self.api_hash) self.client.connect() self.channel_username = self.client.get_entity( 'https://t.me/joinchat/VhKhawm8z_2Vi2SO') # contact = self.client.get_entity('393401578854') # self.kickUser(contact) # print(contact) # print(self.client.session.save()) def getusername(self, phone): self.client.get_entity(phone) def getUsers(self): users = [] offset = 0 limit = 200 my_filter = ChannelParticipantsSearch('') self.all_participants = [] while_condition = True channel = self.client(GetFullChannelRequest(self.channel_username)) while while_condition: participants = self.client(GetParticipantsRequest( channel=self.channel_username, filter=my_filter, offset=offset, limit=limit, hash=0)) self.all_participants.extend(participants.users) offset += len(participants.users) if len(participants.users) < limit: while_condition = False for _user in participants.users: users.append(f"{_user.phone} {_user.username}") print(users) # self.client.disconnect() return self.all_participants def kickUser(self, user): # channel = self.client(GetFullChannelRequest(self.channel_username)) self.client.edit_permissions( self.channel_username, user, view_messages=False)
class BaseTelegramClient(AioThing): def __init__( self, app_id: Union[int, str], app_hash: str, database: dict, bot_token: Optional[str] = None, mtproxy: Optional[dict] = None, flood_sleep_threshold: int = 60, ): super().__init__() if not app_id or not app_hash: raise ValueError( 'Your API ID or Hash cannot be empty or None. Set up telegram.app_id and/or telegram.app_hash' ) self._telegram_client = TelegramClient( self._get_session(database), app_id, app_hash, flood_sleep_threshold=flood_sleep_threshold, **self._get_proxy(mtproxy=mtproxy), ) self.bot_token = bot_token def _get_session(self, database): if database.get('drivername') == 'postgresql': self.container = AlchemySessionContainer( f"{database['drivername']}://" f"{database['username']}:" f"{database['password']}@" f"{database['host']}:" f"{database['port']}/" f"{database['database']}", session=False, manage_tables=False, ) return self.container.new_session(database['session_id']) else: return sessions.SQLiteSession(session_id=database['session_id']) def _get_proxy(self, mtproxy=None): if mtproxy and mtproxy.get('enabled', True): proxy_config = mtproxy return { 'connection': connection.tcpmtproxy. ConnectionTcpMTProxyRandomizedIntermediate, 'proxy': (proxy_config['url'], proxy_config['port'], proxy_config['secret']) } return {} @retry(retry=retry_if_exception_type(ConnectionError), wait=wait_fixed(5)) async def start(self): await self._telegram_client.start(bot_token=self.bot_token) async def stop(self): return await self.disconnect() def add_event_handler(self, *args, **kwargs): return self._telegram_client.add_event_handler(*args, **kwargs) def catch_up(self): return self._telegram_client.catch_up() def delete_messages(self, *args, **kwargs): return self._telegram_client.delete_messages(*args, **kwargs) def disconnect(self): return self._telegram_client.disconnect() @property def disconnected(self): return self._telegram_client.disconnected def download_document(self, *args, **kwargs): return self._telegram_client._download_document( *args, date=datetime.datetime.now(), thumb=None, progress_callback=None, msg_data=None, **kwargs, ) def edit_message(self, *args, **kwargs): return self._telegram_client.edit_message(*args, **kwargs) def edit_permissions(self, *args, **kwargs): return self._telegram_client.edit_permissions(*args, **kwargs) def forward_messages(self, *args, **kwargs): return self._telegram_client.forward_messages(*args, **kwargs) def get_entity(self, *args, **kwargs): return self._telegram_client.get_entity(*args, **kwargs) def get_input_entity(self, *args, **kwargs): return self._telegram_client.get_input_entity(*args, **kwargs) def iter_admin_log(self, *args, **kwargs): return self._telegram_client.iter_admin_log(*args, **kwargs) def iter_messages(self, *args, **kwargs): return self._telegram_client.iter_messages(*args, **kwargs) def list_event_handlers(self): return self._telegram_client.list_event_handlers() def remove_event_handlers(self): for handler in reversed(self.list_event_handlers()): self._telegram_client.remove_event_handler(*handler) def run_until_disconnected(self): return self._telegram_client.run_until_disconnected() def send_message(self, *args, **kwargs): return self._telegram_client.send_message(*args, **kwargs) def send_file(self, *args, **kwargs): return self._telegram_client.send_file(*args, **kwargs) def __call__(self, *args, **kwargs): return self._telegram_client(*args, **kwargs)