mirror of
https://github.com/avitoras/telegram-tui.git
synced 2025-07-27 19:26:10 +00:00
57 lines
2.1 KiB
Python
57 lines
2.1 KiB
Python
from textual.screen import Screen
|
|
from textual.widgets import Label, Input
|
|
from textual.containers import Vertical
|
|
from telethon import TelegramClient
|
|
from telethon.errors import SessionPasswordNeededError
|
|
|
|
class AuthScreen(Screen):
|
|
"""Класс логина в аккаунт"""
|
|
|
|
def __init__(
|
|
self,
|
|
name = None,
|
|
id = None,
|
|
classes = None,
|
|
telegram_client: TelegramClient | None = None
|
|
):
|
|
super().__init__(name, id, classes)
|
|
self.client = telegram_client
|
|
|
|
def on_mount(self):
|
|
self.ac = self.query_one("#auth_container")
|
|
|
|
def compose(self):
|
|
with Vertical(id="auth_container"):
|
|
yield Label("Добро пожаловать в Telegram TUI")
|
|
yield Input(placeholder="Номер телефона", id="phone")
|
|
yield Input(placeholder="Код", id="code", disabled=True)
|
|
yield Input(
|
|
placeholder="Пароль",
|
|
id="password",
|
|
password=True,
|
|
disabled=True
|
|
)
|
|
|
|
async def on_input_submitted(self, event: Input.Submitted) -> None:
|
|
if event.input.id == "phone":
|
|
self.phone = event.value
|
|
self.ac.query_one("#phone").disabled = True
|
|
self.ac.query_one("#code").disabled = False
|
|
await self.client.send_code_request(phone=self.phone)
|
|
elif event.input.id == "code":
|
|
try:
|
|
self.code = event.value
|
|
self.ac.query_one("#code").disabled = True
|
|
await self.client.sign_in(phone=self.phone, code=self.code)
|
|
self.app.pop_screen()
|
|
self.app.push_screen("chats")
|
|
except SessionPasswordNeededError:
|
|
self.ac.query_one("#code").disabled = True
|
|
self.ac.query_one("#password").disabled = False
|
|
elif event.input.id == "password":
|
|
self.password = event.value
|
|
await self.client.sign_in(password=self.password)
|
|
await self.client.start()
|
|
self.app.pop_screen()
|
|
self.app.push_screen("chats")
|