CAADAgAD6wkAAowucAABVh3kCVZ94vkWBA

This commit is contained in:
Shrimadhav U K 2020-09-04 11:15:14 +05:30
parent ca4f53b157
commit 6166e58047
2 changed files with 58 additions and 7 deletions

View File

@ -9,7 +9,7 @@ import typing
from .. import version, helpers, __name__ as __base_name__ from .. import version, helpers, __name__ as __base_name__
from ..crypto import rsa from ..crypto import rsa
from ..entitycache import EntityCache from ..entitycache import EntityCache
from ..extensions import markdown from ..extensions import markdown, scarp_my_telegram_org
from ..network import MTProtoSender, Connection, ConnectionTcpFull, TcpMTProxy from ..network import MTProtoSender, Connection, ConnectionTcpFull, TcpMTProxy
from ..sessions import Session, SQLiteSession, MemorySession from ..sessions import Session, SQLiteSession, MemorySession
from ..statecache import StateCache from ..statecache import StateCache
@ -202,8 +202,8 @@ class TelegramBaseClient(abc.ABC):
def __init__( def __init__(
self: 'TelegramClient', self: 'TelegramClient',
session: 'typing.Union[str, Session]', session: 'typing.Union[str, Session]',
api_id: int, api_id: typing.Union[int, None] = None,
api_hash: str, api_hash: typing.Union[str, None] = None,
*, *,
connection: 'typing.Type[Connection]' = ConnectionTcpFull, connection: 'typing.Type[Connection]' = ConnectionTcpFull,
use_ipv6: bool = False, use_ipv6: bool = False,
@ -222,14 +222,21 @@ class TelegramBaseClient(abc.ABC):
system_lang_code: str = 'en', system_lang_code: str = 'en',
loop: asyncio.AbstractEventLoop = None, loop: asyncio.AbstractEventLoop = None,
base_logger: typing.Union[str, logging.Logger] = None): base_logger: typing.Union[str, logging.Logger] = None):
if not api_id or not api_hash:
raise ValueError(
"Your API ID or Hash cannot be empty or None. "
"Refer to telethon.rtfd.io for more information.")
self._use_ipv6 = use_ipv6 self._use_ipv6 = use_ipv6
self._loop = asyncio.get_event_loop() self._loop = asyncio.get_event_loop()
if not api_id or not api_hash:
"""raise ValueError(
"Your API ID or Hash cannot be empty or None. "
"Refer to telethon.rtfd.io for more information.")
should there be another variable, to check if the automatic function should be called?"""
coro = scarp_my_telegram_org.auto_scarp_my_tg_api_hash()
api_id, api_hash = (
coro if self._loop.is_running()
else self._loop.run_until_complete(coro)
)
if isinstance(base_logger, str): if isinstance(base_logger, str):
base_logger = logging.getLogger(base_logger) base_logger = logging.getLogger(base_logger)
elif not isinstance(base_logger, logging.Logger): elif not isinstance(base_logger, logging.Logger):

View File

@ -16,6 +16,9 @@ The below steps were copied from https://GitHub.com/SpEcHiDe/MyTelegramOrgRoBot
9) appropriately, call "scarp_tg_existing_app" or "s_create_new_tg_app" depending on the previous condition 9) appropriately, call "scarp_tg_existing_app" or "s_create_new_tg_app" depending on the previous condition
10) finally we get app_id and api_hash from the webpage""" 10) finally we get app_id and api_hash from the webpage"""
import aiohttp
import typing
from bs4 import BeautifulSoup
async def request_tg_code_get_random_hash(session, input_phone_number): async def request_tg_code_get_random_hash(session, input_phone_number):
@ -137,3 +140,44 @@ async def s_create_new_tg_app(
) )
return response_c return response_c
async def auto_scarp_my_tg_api_hash(
phone: typing.Callable[[], str] = lambda: input("Enter your Phone Number: [this should be a number already registered on Telegram] "),
web_login_code: typing.Callable[[], str] = lambda: input("Please send the code that you received from Telegram: "),
my_tg_app_title: typing.Callable[[], str] = lambda: input("Enter the title of your application: "),
my_tg_app_shortname: typing.Callable[[], str] = lambda: input("Enter a short_name for your application: "),
my_tg_app_url: typing.Callable[[], str] = lambda: input("Enter the URL of your application: "),
my_tg_app_platform: typing.Callable[[], str] = lambda: input("Enter the Platform for your application: "),
my_tg_app_description: typing.Callable[[], str] = lambda: input("Enter a description of your application: ")
) -> (int, str):
async with aiohttp.ClientSession() as session:
phone = phone()
random_hash = await request_tg_code_get_random_hash(session, phone)
vo, no = await login_step_get_stel_cookie(
session,
phone,
random_hash,
web_login_code()
)
if not vo:
raise ValueError(no)
vmo, vno = await scarp_tg_existing_app(session, no)
if not vmo:
await s_create_new_tg_app(
session,
no,
vno,
my_tg_app_title(),
my_tg_app_shortname(),
my_tg_app_url(),
my_tg_app_platform(),
my_tg_app_description()
)
vmo, vno = await scarp_tg_existing_app(session, no)
if not vmo:
"""this should usually not happen but will happen when the scarpper breaks, but never happened, yet """
raise ValueError("-_-")
return int(vno["App Configuration"]["app_id"]), vno["App Configuration"]["api_hash"]