Untitled

 avatar
unknown
plain_text
25 days ago
4.2 kB
1
Indexable
import tkinter as tk
from tkinter import ttk, messagebox, filedialog
from twilio.rest import Client

ACCOUNT_SID = "your_account_sid"
AUTH_TOKEN = "your_auth_token"
TWILIO_PHONE_NUMBER = "your_twilio_number"

def send_message():
    client = Client(ACCOUNT_SID, AUTH_TOKEN)

    numbers = recipient_listbox.get(0, tk.END)
    message_content = message_text.get("1.0", tk.END).strip()

    if not message_content:
        messagebox.showwarning("Warning", "Message content cannot be empty!")
        return

    if not numbers:
        messagebox.showwarning("Warning", "No recipients added!")
        return

    for number in numbers:
        try:
            message = client.messages.create(
                body=message_content,
                from_=TWILIO_PHONE_NUMBER,
                to=number
            )
            print(f"Message sent to {number}: {message.sid}")
        except Exception as e:
            messagebox.showerror("Error", f"Failed to send message to {number}: {str(e)}")

    messagebox.showinfo("Success", "Messages sent successfully!")

def reset_fields():
    recipient_entry.delete(0, tk.END)
    message_text.delete("1.0", tk.END)

def add_number():
    number = recipient_entry.get()
    if number:
        recipient_listbox.insert(tk.END, number)
        recipient_entry.delete(0, tk.END)
    else:
        messagebox.showwarning("Warning", "Please enter a number!")

def load_from_file():
    file_path = filedialog.askopenfilename(filetypes=[("Text Files", "*.txt")])
    if file_path:
        with open(file_path, "r") as file:
            for line in file:
                recipient_listbox.insert(tk.END, line.strip())

def view_templates():
    messagebox.showinfo("Templates", "Feature under development.")

root = tk.Tk()
root.title("SMS Announcement System")
root.geometry("700x500")

header_frame = tk.Frame(root, bg="#0078D7", height=60)
header_frame.pack(fill=tk.X)
header_label = tk.Label(header_frame, text="Pamantasan ng Lungsod ng Marikina\nSenior High School - SMS Announcement System", 
                         bg="#0078D7", fg="white", font=("Arial", 14, "bold"), justify=tk.CENTER)
header_label.pack(pady=10)

recipient_frame = tk.Frame(root, padx=10, pady=10)
recipient_frame.pack(fill=tk.X)

tk.Label(recipient_frame, text="Enter Recipient Number:").grid(row=0, column=0, sticky=tk.W)
recipient_entry = tk.Entry(recipient_frame, width=30)
recipient_entry.grid(row=0, column=1, padx=5)
add_button = tk.Button(recipient_frame, text="Add", command=add_number)
add_button.grid(row=0, column=2, padx=5)

tk.Label(recipient_frame, text="Total Numbers:").grid(row=1, column=0, sticky=tk.W, pady=5)
recipient_listbox = tk.Listbox(recipient_frame, height=7, width=50)
recipient_listbox.grid(row=1, column=1, columnspan=2, pady=5)

message_frame = tk.Frame(root, padx=10, pady=10)
message_frame.pack(fill=tk.X)

tk.Label(message_frame, text="Message:").grid(row=0, column=0, sticky=tk.W)
message_text = tk.Text(message_frame, height=5, width=60)
message_text.grid(row=0, column=1, pady=5, padx=5)

options_frame = tk.Frame(root, padx=10, pady=10)
options_frame.pack(fill=tk.X)

tk.Label(options_frame, text="Options:").grid(row=0, column=0, sticky=tk.W)
delayed_check = tk.Checkbutton(options_frame, text="Delayed Delivery")
delayed_check.grid(row=0, column=1, sticky=tk.W)

save_sent_check = tk.Checkbutton(options_frame, text="Save Sent Messages")
save_sent_check.grid(row=1, column=0, sticky=tk.W)

save_template_check = tk.Checkbutton(options_frame, text="Save Message to Templates")
save_template_check.grid(row=1, column=1, sticky=tk.W)

view_template_button = tk.Button(options_frame, text="View Templates", command=view_templates)
view_template_button.grid(row=2, column=1, sticky=tk.W, pady=5)

action_frame = tk.Frame(root, pady=10)
action_frame.pack()

send_button = tk.Button(action_frame, text="Send", bg="green", fg="white", command=send_message)
send_button.pack(side=tk.LEFT, padx=5)

reset_button = tk.Button(action_frame, text="Reset", bg="red", fg="white", command=reset_fields)
reset_button.pack(side=tk.LEFT, padx=5)

load_button = tk.Button(action_frame, text="Load Contacts from File", command=load_from_file)
load_button.pack(side=tk.LEFT, padx=5)

root.mainloop()

Leave a Comment