Advertisement
Guest User

Untitled

a guest
Oct 7th, 2017
264
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.00 KB | None | 0 0
  1. def authorize(client, phone_num):
  2.     client.send_code_request(phone_num)
  3.     client_user = None
  4.     while client_user is None:
  5.         code = input('Enter the code you just received: ')
  6.         password = input('Enter 2 factor password (empty if it doesn\'t set): ')
  7.         try:
  8.             if password:
  9.                 client_user = client.sign_in(phone=phone_num, code=code, password=password)
  10.             else:
  11.                 client_user = client.sign_in(phone=phone_num, code=code)
  12.             # Two-step verification may be enabled
  13.         except SessionPasswordNeededError:
  14.             if telethon_pw is None:
  15.                 raise Exception('Не указан пароль 2фа')
  16.             client_user = client.sign_in(password=telethon_pw)
  17.  
  18.  
  19. class Reg(object):
  20.     def __init__(self, service):
  21.         self.service = service
  22.  
  23.     def send_request(self, method, params=None):
  24.         if self.service == 'sms-reg':
  25.             if not params:
  26.                 params = {}
  27.             if not getattr(params, 'apikey', None):
  28.                 params['apikey'] = reg_apikey
  29.             r = requests.get('http://api.sms-reg.com/{0}.php'.format(method), params=params)
  30.             return r.json()
  31.  
  32.     def get_balance(self):
  33.         balance_request = self.send_request('getBalance')
  34.  
  35.         if balance_request['response'] != "1":
  36.             raise Exception('Ошибка при получении баланса: ' + balance_request['error_msg'])
  37.  
  38.         return float(balance_request['balance'])
  39.  
  40.     def get_tzid(self):
  41.         get_num_request = self.send_request('getNum', {'service': 'telegram'})
  42.  
  43.         if get_num_request['response'] != "1":
  44.             raise Exception('Ошибка при получении номера: '+get_num_request['error_msg'])
  45.  
  46.         return int(get_num_request['tzid'])
  47.  
  48.     def wait_num(self, tzid):
  49.         number = None
  50.  
  51.         while number is None:
  52.             state_request = self.send_request('getState', {'tzid': tzid})
  53.             if state_request['response'] == "WARNING_NO_NUMS":
  54.                 raise Exception('Нет свободных номеров, попробуй еще раз через 5 минут')
  55.             elif state_request['response'] == "TZ_INPOOL":
  56.                 print('Жду номера')
  57.                 sleep(10)
  58.             elif state_request['response'] == "TZ_NUM_PREPARE":
  59.                 number = state_request['number']
  60.                 print('Получен номер: {0}'.format(number))
  61.             else:
  62.                 print('Другой ответ: {0}'.format(state_request['response']))
  63.         return number
  64.  
  65.     def set_ready(self, tzid):
  66.         set_ready_request = self.send_request('setReady', {'tzid': tzid})
  67.         if set_ready_request['response'] != "1":
  68.             raise Exception('Ошибка при отправке готовности: '+set_ready_request['error_msg'])
  69.  
  70.     def wait_code(self, tzid):
  71.         code = None
  72.  
  73.         while code is None:
  74.             state_request = self.send_request('getState', {'tzid': tzid})
  75.             if state_request['response'] == "TZ_NUM_WAIT":
  76.                 print('Жду код')
  77.                 sleep(10)
  78.             elif state_request['response'] == "TZ_NUM_ANSWER":
  79.                 code = state_request['number']
  80.                 print('Получен код: {0}'.format(code))
  81.             else:
  82.                 print('Другой ответ: {0}'.format(state_request['response']))
  83.         return code
  84.  
  85.     def set_ok(self, tzid):
  86.         set_ok_request = self.send_request('setOperationOk', {'tzid': tzid})
  87.         if set_ok_request['response'] != "1":
  88.             raise Exception('Ошибка при завершении операции: '+set_ok_request['error_msg'])
  89. def main():
  90.     global config_path
  91.     global phone
  92.     while True:
  93.         if not reg_number:
  94.             print('Connecting to telegram...')
  95.             client = telethon.TelegramClient(phone, api_id, api_hash)
  96.             client.connect()
  97.             if not client.is_user_authorized():
  98.                 print('Not authorized')
  99.                 authorize(client, phone)
  100.         else:
  101.             print('Регистрируем номер...')
  102.             reg_service = 'sms-reg'
  103.             r = Reg(reg_service)
  104.             balance = r.get_balance()
  105.  
  106.             if balance < 2:
  107.                 raise Exception('Нет денег на балансе. Осталось {0} р.'.format(balance))
  108.  
  109.             tzid = r.get_tzid()
  110.  
  111.             phone = r.wait_num(tzid)
  112.  
  113.             client = telethon.TelegramClient(phone, api_id, api_hash)
  114.             client.connect()
  115.             if not client.is_user_authorized():
  116.                 print('Not authorized')
  117.                 r.set_ready(tzid)
  118.                 code = r.wait_code(tzid)
  119.                 first_name = ''
  120.                 last_name = ''
  121.                 username = ''
  122.                 if reg_generate_name:
  123.                     first_name = names.get_first_name()
  124.                     last_name = names.get_last_name()
  125.                     username = first_name+last_name
  126.                 else:
  127.                     first_name = input('Введи имя (не может быть пустым): ')
  128.                     last_name = input('Введи фамилию (может быть пустой): ')
  129.                     username = input('Введи корректный юзернейм или оставь пустым: ')
  130.                 print('{0} {1}, @{2}'.format(first_name, last_name, username) if bool(username) else '{0} {1}, без юзернейма'.format(first_name, last_name))
  131.                 client.sign_up(phone, code, first_name, last_name)
  132.                 r.set_ok(tzid)
  133.                 username_available = client.invoke(CheckUsernameRequest(username))
  134.                 if not username_available:
  135.                     print('Юзернейм неверен или недоступен:(')
  136.                 else:
  137.                     set_username_result = client.invoke(UpdateUsernameRequest(username))
  138.                     if isinstance(set_username_result, User):
  139.                         print('Юзернейм удачно установлен')
  140.                     else:
  141.                         print('Что-то пошло не так: ', str(set_username_result))
  142.  
  143.         try:
  144.             print('Connected to telegram')
  145.             config_path = fullpath + '/bot_cfg/' + phone + '.json'
  146.             try:
  147.                 open(config_path)
  148.             except FileNotFoundError:
  149.                 print('Конфиг не найден')
  150.                 save_config(config)
  151.                 print('Новый конфиг создан')
  152.             except Exception as e:
  153.                 print(str(e))
  154.             a = ChatWarsAutomator(client, read_config())
  155.             a.loop()
  156.         except Exception as e:
  157.             print('Exception during chatwars automation process: ', e)
  158.             traceback.print_exc()
  159.             print('Disconnecting...')
  160.             client.disconnect()
  161.             sleep(5)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement