Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def authorize(client, phone_num):
- client.send_code_request(phone_num)
- client_user = None
- while client_user is None:
- code = input('Enter the code you just received: ')
- password = input('Enter 2 factor password (empty if it doesn\'t set): ')
- try:
- if password:
- client_user = client.sign_in(phone=phone_num, code=code, password=password)
- else:
- client_user = client.sign_in(phone=phone_num, code=code)
- # Two-step verification may be enabled
- except SessionPasswordNeededError:
- if telethon_pw is None:
- raise Exception('Не указан пароль 2фа')
- client_user = client.sign_in(password=telethon_pw)
- class Reg(object):
- def __init__(self, service):
- self.service = service
- def send_request(self, method, params=None):
- if self.service == 'sms-reg':
- if not params:
- params = {}
- if not getattr(params, 'apikey', None):
- params['apikey'] = reg_apikey
- r = requests.get('http://api.sms-reg.com/{0}.php'.format(method), params=params)
- return r.json()
- def get_balance(self):
- balance_request = self.send_request('getBalance')
- if balance_request['response'] != "1":
- raise Exception('Ошибка при получении баланса: ' + balance_request['error_msg'])
- return float(balance_request['balance'])
- def get_tzid(self):
- get_num_request = self.send_request('getNum', {'service': 'telegram'})
- if get_num_request['response'] != "1":
- raise Exception('Ошибка при получении номера: '+get_num_request['error_msg'])
- return int(get_num_request['tzid'])
- def wait_num(self, tzid):
- number = None
- while number is None:
- state_request = self.send_request('getState', {'tzid': tzid})
- if state_request['response'] == "WARNING_NO_NUMS":
- raise Exception('Нет свободных номеров, попробуй еще раз через 5 минут')
- elif state_request['response'] == "TZ_INPOOL":
- print('Жду номера')
- sleep(10)
- elif state_request['response'] == "TZ_NUM_PREPARE":
- number = state_request['number']
- print('Получен номер: {0}'.format(number))
- else:
- print('Другой ответ: {0}'.format(state_request['response']))
- return number
- def set_ready(self, tzid):
- set_ready_request = self.send_request('setReady', {'tzid': tzid})
- if set_ready_request['response'] != "1":
- raise Exception('Ошибка при отправке готовности: '+set_ready_request['error_msg'])
- def wait_code(self, tzid):
- code = None
- while code is None:
- state_request = self.send_request('getState', {'tzid': tzid})
- if state_request['response'] == "TZ_NUM_WAIT":
- print('Жду код')
- sleep(10)
- elif state_request['response'] == "TZ_NUM_ANSWER":
- code = state_request['number']
- print('Получен код: {0}'.format(code))
- else:
- print('Другой ответ: {0}'.format(state_request['response']))
- return code
- def set_ok(self, tzid):
- set_ok_request = self.send_request('setOperationOk', {'tzid': tzid})
- if set_ok_request['response'] != "1":
- raise Exception('Ошибка при завершении операции: '+set_ok_request['error_msg'])
- def main():
- global config_path
- global phone
- while True:
- if not reg_number:
- print('Connecting to telegram...')
- client = telethon.TelegramClient(phone, api_id, api_hash)
- client.connect()
- if not client.is_user_authorized():
- print('Not authorized')
- authorize(client, phone)
- else:
- print('Регистрируем номер...')
- reg_service = 'sms-reg'
- r = Reg(reg_service)
- balance = r.get_balance()
- if balance < 2:
- raise Exception('Нет денег на балансе. Осталось {0} р.'.format(balance))
- tzid = r.get_tzid()
- phone = r.wait_num(tzid)
- client = telethon.TelegramClient(phone, api_id, api_hash)
- client.connect()
- if not client.is_user_authorized():
- print('Not authorized')
- r.set_ready(tzid)
- code = r.wait_code(tzid)
- first_name = ''
- last_name = ''
- username = ''
- if reg_generate_name:
- first_name = names.get_first_name()
- last_name = names.get_last_name()
- username = first_name+last_name
- else:
- first_name = input('Введи имя (не может быть пустым): ')
- last_name = input('Введи фамилию (может быть пустой): ')
- username = input('Введи корректный юзернейм или оставь пустым: ')
- print('{0} {1}, @{2}'.format(first_name, last_name, username) if bool(username) else '{0} {1}, без юзернейма'.format(first_name, last_name))
- client.sign_up(phone, code, first_name, last_name)
- r.set_ok(tzid)
- username_available = client.invoke(CheckUsernameRequest(username))
- if not username_available:
- print('Юзернейм неверен или недоступен:(')
- else:
- set_username_result = client.invoke(UpdateUsernameRequest(username))
- if isinstance(set_username_result, User):
- print('Юзернейм удачно установлен')
- else:
- print('Что-то пошло не так: ', str(set_username_result))
- try:
- print('Connected to telegram')
- config_path = fullpath + '/bot_cfg/' + phone + '.json'
- try:
- open(config_path)
- except FileNotFoundError:
- print('Конфиг не найден')
- save_config(config)
- print('Новый конфиг создан')
- except Exception as e:
- print(str(e))
- a = ChatWarsAutomator(client, read_config())
- a.loop()
- except Exception as e:
- print('Exception during chatwars automation process: ', e)
- traceback.print_exc()
- print('Disconnecting...')
- client.disconnect()
- sleep(5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement