-
Notifications
You must be signed in to change notification settings - Fork 0
/
add_account.py
105 lines (79 loc) · 3.74 KB
/
add_account.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import tkinter as tk
import asyncio
import telethon
from telethon.sync import TelegramClient
import settings
import base_handler
from base_handler import User, Answer, Message
import bot_async as bot
class ApplicationAddAccount(tk.Frame):
def __init__(self, main, root_login):
super().__init__()
self.main = main
self.root_login = root_login
self.last_client = None
self.contact_label = tk.Label(self.main, text="Введите номер телефона:")
self.contact_entry = tk.Entry(self.main)
self.password_label = tk.Label(self.main, text="Введите пароль (если подключена двухфакторная верификация)")
self.password_entry = tk.Entry(self.main)
self.conf_label = tk.Label(self.main, text="Введите код подтверждения:")
self.conf_code_entry = tk.Entry(self.main)
self.add_account_button = tk.Button(self.main, text="Получить код подтверждения")
self.add_account_button.bind("<Button-1>", self.request_code)
self.error_label = tk.Label(self.main, text="", fg="red")
widgets = [self.contact_label, self.contact_entry, self.password_label,
self.password_entry, self.conf_label, self.conf_code_entry, self.add_account_button,
self.error_label]
for i in range(len(widgets)):
widgets[i].grid(row=i, column=0, padx=100, pady=10)
def print_error(self, text):
self.error_label["fg"] = "red"
self.error_label["text"] = text
def print_success(self, text):
self.error_label["fg"] = "green"
self.error_label["text"] = text
def request_code(self,event,result = None):
if not result:
phone = self.contact_entry.get()
if not phone:
self.print_error("Не указан номер")
return
phones = [user.contact for user in base_handler.get_users()]
if phone in phones:
self.print_error("Этот аккаунт уже добавлен")
return
loop = asyncio.get_running_loop()
loop.create_task(bot.request_code(phone,self))
return
status, client = result
if status != 'sent':
self.print_error(status)
return
self.add_account_button.bind("<Button-1>", self.add_account)
self.add_account_button["text"] = "Добавить аккаунт"
self.last_client = client
self.print_success("Код отправлен")
def add_account(self, event, user_str = None):
if not user_str:
conf_code = self.conf_code_entry.get()
password = self.password_entry.get()
if not conf_code:
self.print_error("Не указан код подтверждения")
return
loop = asyncio.get_running_loop()
loop.create_task(bot.add_account(conf_code, password, self.last_client, self))
return
phone = self.contact_entry.get()
conf_code = self.conf_code_entry.get()
base_handler.add_user(phone, True, user_str)
self.print_success("Аккаунт добавлен")
if self.root_login:
self.root_login.update_accounts()
self.add_account_button.bind("<Button-1>", self.request_code)
self.add_account_button["text"] = "Получить код"
def run():
root_add_account = tk.Tk()
root_app = ApplicationAddAccount(root_add_account, None)
root_app.mainloop()
if __name__ == "__main__":
run()