diff --git a/src/app.py b/src/app.py index 1b51c91..4f7bc1e 100644 --- a/src/app.py +++ b/src/app.py @@ -20,6 +20,7 @@ class TelegramTUI(App): self.install_screen(auth_screen, name="auth") self.push_screen("auth") else: + await self.telegram_client.start() self.push_screen("chats") async def on_exit_app(self): diff --git a/src/screens.py b/src/screens.py index 1c23140..1e3528e 100644 --- a/src/screens.py +++ b/src/screens.py @@ -145,5 +145,5 @@ class ChatScreen(Screen): with Horizontal(id="chats"): yield VerticalScroll(Static(id="chat_container")) #TODO: сделать кнопку чтобы прогрузить больше чатов - - yield Dialog() + + yield Dialog(telegram_client=self.telegram_client) diff --git a/src/widgets.py b/src/widgets.py index 8f44bc0..98510d1 100644 --- a/src/widgets.py +++ b/src/widgets.py @@ -2,6 +2,7 @@ from textual.containers import Horizontal, Vertical, Container, VerticalScroll from textual.widget import Widget from textual.reactive import Reactive from textual.widgets import Input, Button, Label +from telethon import TelegramClient, events, utils class Chat(Widget): """Класс виджета чата для панели чатов""" @@ -24,11 +25,15 @@ class Chat(Widget): classes=classes, disabled=disabled ) - self.notify = notify_func + global personid + personid = 0 + self.notify = notify_fun def _on_click(self): + global personid self.msg = str(self.peer_id) - self.notify("нажат чат") + personid = int(self.peer_id) + self.app.notify("нажат чат") def compose(self): with Horizontal(): @@ -40,15 +45,27 @@ class Chat(Widget): class Dialog(Widget): """Класс окна диалога""" - def __init__(self, id=None, classes=None, disabled=False): + def __init__(self, id=None, classes=None, disabled=False, telegram_client: TelegramClient | None = None): + global personid super().__init__(id=id, classes=classes, disabled=disabled) + self.telegram_client = telegram_client + self.personid = personid + + async def load_messages(self): + self.messages = [] + for messages1 in self.telegram_client.iter_dialogs(self.personid, limit=5): + messages.append(messages1.text) def compose(self): + messages = self.messages with Vertical(): with VerticalScroll(id="dialog"): - yield Message(message="привет, я ыплыжлп", is_me=True) - yield Message(message="о, дщытрапшщцрущ", is_me=False) - yield Message(message="ДАТОУШЩАРШЩУРЩША!!!!", is_me=False) + yield Message(message=messages[0], is_me=True) + yield Message(message=messages[1], is_me=False) + yield Message(message=messages[2], is_me=False) + yield Message(message=messages[3], is_me=True) + yield Message(message=messages[4], is_me=False) + # должно быть примерно # is_me = message.from_id == client.get_peer_id("me") @@ -63,8 +80,10 @@ class Dialog(Widget): yield Input(placeholder="Сообщение", id="msg_input") yield Button(label="➤", id="send", variant="primary") - def on_button_pressed(self, event): # self добавил + async def on_button_pressed(self, event): # self добавил self.app.notify("Нажато отправить") + self.message_text = self.query_one("#msg_input").value + await self.telegram_client.send_message(personid, str(self.message_text)) class Message(Widget): """Класс виджета сообщений для окна диалога""" diff --git a/tokens.py b/tokens.py index 2d34b43..68aad19 100644 --- a/tokens.py +++ b/tokens.py @@ -1,4 +1,4 @@ """Получите свои API-ключи на https://my.telegram.org/apps""" api_id = 12345 -api_hash = "0123456789abcdef" \ No newline at end of file +api_hash = "0123456789abcdef"