Exemple #1
0
class TelegramLogin:
    def __init__(self, phone, session_dir):
        self.phone = phone
        self.session_dir = session_dir
        os.mkdir(self.session_dir)
        self.app = Client("app", api_id, api_hash, workdir=self.session_dir)
        self.app.connect()

    def request_code(self):
        try:
            sent_code = self.app.send_code(self.phone)
            print(sent_code)

            if sent_code.type != "sms":
                self.bye()
                return False

        except exceptions.bad_request_400.PhoneNumberBanned:
            self.bye()
            return False

        self.sent_code = sent_code

        return True

    def create_session(self, code) -> User:
        signed_up = None
        signed_in = self.app.sign_in(self.phone,
                                     self.sent_code.phone_code_hash, code)

        if isinstance(signed_in, User):
            self.bye()
            return False

        first_name, last_name = gen_person()
        while not signed_up:
            try:
                signed_up = self.app.sign_up(self.phone,
                                             self.sent_code.phone_code_hash,
                                             first_name=first_name,
                                             last_name=last_name)

                if isinstance(signed_in, TermsOfService):
                    self.app.accept_terms_of_service(signed_in.id)

                self.app.disconnect()
                return signed_up

            except FloodWait as e:
                print("Sleeping ", e.x)
                time.sleep(e.x)

    def bye(self):
        self.app.disconnect()
        shutil.rmtree(self.session_dir)
Exemple #2
0
    def add_session(self):

        app = Client('test_one', api_id, api_hash)

        app.connect()
        phone_number = input('Phone_num: ')
        code_hash = app.send_code(phone_number).phone_code_hash
        code = input('Conf: ')
        try:
            app.sign_in(phone_number, code_hash, code)
        except SessionPasswordNeeded:
            passs = input('Pass: '******'done')
        app.disconnect()
Exemple #3
0
class StateManager(Client):
    state = None
    one = None

    def __init__(self, config):
        print('State_manager started')
        self.api_id = config.api_id
        self.api_hash = config.api_hash
        pass

    def start_session(self, phone_number):
        try:
            self.app = Client('test_second', self.api_id, self.api_hash)
            self.app.connect()
            self.phone = phone_number
            self.code_hash = self.app.send_code(self.phone).phone_code_hash

            return True
        except PhoneNumberInvalid:
            return False

    def enter_code(self, code):
        print('Waiting for code')
        try:
            self.app.sign_in(self.phone, self.code_hash, code)
            self.app.disconnect()
            return "Fine"
        except SessionPasswordNeeded:
            return "SessionPasswordNeeded"
        except PhoneCodeInvalid:
            return "PhoneCodeInvalid"

    def enter_2fa(self, tfa):
        self.app.check_password(tfa)
        self.app.disconnect()

    def make_state(self, state):
        self.state = state

    def make_one(self, state):
        self.one = state
def sessioncu():
    api_id = input('API ID: ')
    api_hash = input('API HASH: ')
    telefon = input('Telefon Numarası (+90 ile): ')
    print('\n')

    try:
        client = Client(f'{SESSION}{telefon}', api_id, api_hash)
        client.connect()
        kod = client.send_code(telefon)
        try:
            giris_yap = client.sign_in(telefon, kod.phone_code_hash,
                                       input('Doğrulama Kodu: '))
            client.accept_terms_of_service(str(giris_yap.id))
        except AssertionError:
            sleep(5)
        except SessionPasswordNeeded:
            client.check_password(
                input(
                    f'İki Adımlı Doğrulama Şifresi ({client.get_password_hint()}): '
                ))
        client.disconnect()
    except Exception as hata:
        os.remove(f'{SESSION}{telefon}.session')
        print(f'Hata Var !\n\t`{type(hata).__name__}`\n\t{hata}')
        return

    with client as app:
        app.send_message(
            'me',
            f'__Merhaba, Ben **KekikTelefon** Tarafından Gönderildim!__\n\n__Senin Bilgilerin;__\n\n**ID :** `{api_id}`\n**Hash :** `{api_hash}`\n**Telefon :** `{telefon}`\n\n**Kendi gizliliğin için bunları kimseyle paylaşma..**'
        )

    dict2json({
        'id': api_id,
        'hash': api_hash,
        'tel': telefon
    },
              dosya_adi=f'{SESSION}bilgiler.json')

    print(f'\n\n\t\t{telefon} Session Kayıt Edildi..!')
Exemple #5
0
def main():
    global username, replacer, client

    files = os.listdir()
    sessions = []
    for file in files:
        if file.endswith('.session'):
            sessions.append(file)

    i = 0
    phones = []
    for session in sessions:
        phones.append(session.split('.session')[0])
        client = Client(phones[i], api_id, api_hash)
        loop.run_until_complete(client.connect())

        me = loop.run_until_complete(client.get_me())
        try:
            name = me['first_name'] + ' ' + me['last_name']
        except:
            name = me['first_name']
        name = name + '\n (' + me['phone_number'] + ')'
        print(str(i + 1) + ". " + name)
        loop.run_until_complete(client.disconnect())
        i += 1

    print(str(i + 1) + ". New login")

    c = int(input("Enter valid choice: "))
    if c == len(phones) + 1:
        phone = input("Enter phone: ")
        client = Client(phone, api_id, api_hash)
        loop.run_until_complete(client.connect())
        code_hash = loop.run_until_complete(
            client.send_code(phone))['phone_code_hash']
        code = input("Enter code: ")
        loop.run_until_complete(client.sign_in(phone, code_hash, code))
    else:
        client = Client(phones[c - 1], api_id, api_hash)
        loop.run_until_complete(client.connect())

    me = loop.run_until_complete(client.get_me())
    try:
        name = me['first_name'] + ' ' + me['last_name']
    except:
        name = me['first_name']
    wel = "\nLogged in as: " + name + ' (' + me['phone_number'] + ')\n'
    print(wel)
    path = input('Enter path : ')
    username = input("Enter phone no. , channel link, group link ,etc. : ")
    replacer = os.path.dirname(path) + '/'
    upload(path)
Exemple #6
0
                str(message.chat.id) in resend_from)
            log(msg)
        if message.chat.username in resend_from:
            resend_to = conf['resend'][message.chat.username]['to']
            as_copy = conf['resend'][message.chat.username]['copy']
        elif str(message.chat.id) in resend_from:
            log_in_file(str(conf['resend']))
            resend_to = conf['resend'][str(message.chat.id)]['to']
            as_copy = conf['resend'][str(message.chat.id)]['copy']
        else:
            return

        resend_to = int(resend_to) if resend_to[0] == '-' else resend_to
        forward_messages(chat_id=resend_to,
                         from_chat_id=message.chat.id,
                         message_ids=message.message_id,
                         as_copy=as_copy)
    except Exception as e:
        log('Exception catched: %s' % e)


import sqlite3

try:
    app.start()
except sqlite3.OperationalError as e:
    log(e.__dict__)
except ConnectionError:
    app.disconnect()
    app.start()
Exemple #7
0
    def __init__(self, app):
        global client, phoneVar
        app.resizable(0, 1)
        Frame.__init__(self, app)

        files = os.listdir()
        sessions = []
        for file in files:
            if file.endswith('.session'):
                sessions.append(file)

        self.fA = Frame(self)
        self.fA.pack(fill=X, pady=10)
        Label(self.fA, text='Saved Logins', font='arial 16').pack(pady=5)

        for session in sessions:
            phone = session.split('.session')[0]
            client = Client(phone, api_id, api_hash)
            loop.run_until_complete(client.connect())

            me = loop.run_until_complete(client.get_me())
            try:
                name = me['first_name'] + ' ' + me['last_name']
            except:
                name = me['first_name']
            name = name + '\n (' + me['phone_number'] + ')'
            Button(self.fA,
                   font='arial 14',
                   text=name,
                   highlightbackground='black',
                   bg='light blue',
                   command=lambda Phone=phone: self.login(Phone)).pack(pady=3)
            loop.run_until_complete(client.disconnect())

        self.fB = Frame(self)
        self.fB.pack(fill=X, pady=10, side=BOTTOM)
        Label(self.fB, text='New Login', font='arial 16').pack()
        self.f1 = Frame(self.fB)
        self.f1.pack(fill=X, pady=10)

        self.phoneL = Label(self.f1, text='Enter Phone No. ', font='arial 14')
        self.phoneL.pack(side=LEFT)

        self.codeBtn = Button(self.f1,
                              font='arial 14',
                              text='Send Code',
                              width=8,
                              highlightbackground='black',
                              bg='light blue',
                              command=self.send_code)
        self.codeBtn.pack(side=RIGHT, padx=10)

        phoneVar = StringVar()
        self.phoneB = Entry(self.f1,
                            textvariable=phoneVar,
                            font='arial 14',
                            width=15,
                            highlightbackground='black')
        self.phoneB.pack(side=RIGHT, padx=60)

        self.f2 = Frame(self.fB)
        self.f2.pack(fill=X, pady=10)

        self.codeL = Label(self.f2, text='Enter Code ', font='arial 14')
        self.codeL.pack(side=LEFT)

        self.loginB = Button(self.f2,
                             font='arial 14',
                             text='Login',
                             width=8,
                             highlightbackground='black',
                             bg='light blue',
                             command=self.login)
        self.loginB.pack(side=RIGHT, padx=10)

        self.codeB = Entry(self.f2,
                           font='arial 14',
                           width=15,
                           highlightbackground='black')
        self.codeB.pack(side=RIGHT, padx=60)