From 307b293b917ef54f09c9e021032593c39f217199 Mon Sep 17 00:00:00 2001 From: anshu Date: Mon, 28 Oct 2024 23:14:30 +0530 Subject: [PATCH 1/4] Added : Notifications for user join/leave and Message Received events in chat application --- client.py | 20 +++++++++++++++++--- requirements.txt | Bin 0 -> 10748 bytes server.py | 3 ++- 3 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 requirements.txt diff --git a/client.py b/client.py index aadd090..79eb313 100644 --- a/client.py +++ b/client.py @@ -2,10 +2,11 @@ import threading import tkinter as tk from tkinter import simpledialog, scrolledtext, ttk +from plyer import notification # Client setup client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) -client.connect(('localhost', 12345)) +client.connect(('localhost', 1234)) def receive_messages(): while True: @@ -17,14 +18,27 @@ def receive_messages(): typing_status_label.config(text=message) else: chat_box.config(state=tk.NORMAL) + # Notification for join/leave messages + if "joined the chat" in message or "left the chat" in message: + notification.notify( + title='Chat Notification', + message=message, + timeout=5 # duration in seconds + ) if message.startswith(username): chat_box.insert(tk.END, message + '\n', 'self') else: chat_box.insert(tk.END, message + '\n', 'other') + # Show notification only if it's not the user's own message + notification.notify( + title='Chat Application', + message=message, + timeout=2 # duration in seconds + ) chat_box.config(state=tk.DISABLED) chat_box.yview(tk.END) - except: - print('An error occurred!') + except Exception as e: + print(f'An error occurred! {e}') client.close() break diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..262753ad5400fc37262b1e461f8214b538e8a8de GIT binary patch literal 10748 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 c0xPb Date: Tue, 5 Nov 2024 09:37:59 +0530 Subject: [PATCH 2/4] Update requirements.txt --- requirements.txt | Bin 10748 -> 14 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/requirements.txt b/requirements.txt index 262753ad5400fc37262b1e461f8214b538e8a8de..8f22a5ddf458ddf32036930be1866aa5a8b21952 100644 GIT binary patch literal 14 VcmXTOsZ1@hwKdW+)HC4a0stcc1FZl6 literal 10748 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 c0xPb Date: Tue, 5 Nov 2024 13:06:47 +0530 Subject: [PATCH 3/4] Update client.py --- client.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client.py b/client.py index 79eb313..0e220a9 100644 --- a/client.py +++ b/client.py @@ -23,7 +23,7 @@ def receive_messages(): notification.notify( title='Chat Notification', message=message, - timeout=5 # duration in seconds + timeout=5 ) if message.startswith(username): chat_box.insert(tk.END, message + '\n', 'self') @@ -33,7 +33,7 @@ def receive_messages(): notification.notify( title='Chat Application', message=message, - timeout=2 # duration in seconds + timeout=2 ) chat_box.config(state=tk.DISABLED) chat_box.yview(tk.END) From 0e8b67c45226743061be1d3e17c8c5ccee424088 Mon Sep 17 00:00:00 2001 From: Vikranth Udandarao Date: Tue, 5 Nov 2024 13:08:22 +0530 Subject: [PATCH 4/4] Update server.py --- server.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/server.py b/server.py index e0b4868..500631c 100644 --- a/server.py +++ b/server.py @@ -6,7 +6,6 @@ server.bind(('localhost', 1234)) server.listen() - clients = [] usernames = {} @@ -56,4 +55,4 @@ def receive_connections(): thread.start() print('Server is listening...') -receive_connections() \ No newline at end of file +receive_connections()