from urllib.error import HTTPError from urllib.parse import urlencode from urllib.request import urlopen, Request from config import API_VERSION, VK_APP_ID ENV_FILE_TEMPLATE = """ POSTGRES_DB=tgvkbot POSTGRES_PASSWORD=postgres BOT_TOKEN=%(tg_token)s VK_APP_ID=%(vk_app_id)s ALLOWED_USER_IDS=%(allowed_user_ids)s """ ENV_FILE = 'env_file' def check_token(token): response = urlopen("https://api.telegram.org/bot{token}/{method}".format(token=token, method='getMe')) if response.code == 200: return True else: raise HTTPError def get_auth_page(app_id): AUTH_URL = 'https://oauth.vk.com/authorize' params = {'client_id': app_id, 'redirect_uri': 'https://oauth.vk.com/blank.html', 'display': 'mobile', 'response_type': 'token', 'v': API_VERSION } post_args = urlencode(params).encode('UTF-8') request = Request(AUTH_URL, post_args) response = urlopen(request) if response.code == 200: return True else: raise HTTPError def set_env(): while True: tg_token = input('Токен Telegram бота: ') tg_token = tg_token.strip() try: print('⏳ Проверяем токен...') check_token(tg_token) break except HTTPError: print('❌ Токен бота неверный или нерабочий, попробуйте снова!') while True: vk_app_id = input('VK APP ID (можно оставить пустым): ') vk_app_id = vk_app_id.strip() if vk_app_id: try: get_auth_page(vk_app_id) break except HTTPError: print('❌ VK APP ID неверный, попробуйте снова!') else: print('ℹ️ Будет использован VK APP ID {} от Kate Mobile'.format(VK_APP_ID)) break with open(ENV_FILE, 'w') as env_file: env_file.write( ENV_FILE_TEMPLATE % {'tg_token': tg_token, 'vk_app_id': vk_app_id or VK_APP_ID, 'allowed_user_ids': ''}) print('✅ Переменные успешно установлены в {}'.format(ENV_FILE)) if __name__ == '__main__': try: set_env() except KeyboardInterrupt: print('\n⚠️ Настройка переменных окружуения была прервана!')