Skip to content

Instantly share code, notes, and snippets.

@Albin-Thapaliya
Created June 18, 2024 21:53
Show Gist options
  • Select an option

  • Save Albin-Thapaliya/1cba615ab1d3712948cf1bb8dc9651f8 to your computer and use it in GitHub Desktop.

Select an option

Save Albin-Thapaliya/1cba615ab1d3712948cf1bb8dc9651f8 to your computer and use it in GitHub Desktop.
A Windows GUI that let you put your slack id and see your active arcade session
import tkinter as tk
from tkinter import Frame, Entry, Label, Button, messagebox
import requests
import time
from datetime import datetime, timedelta
class SlackTimerApp:
def __init__(self, master):
self.master = master
self.master.title("Slack Timer")
self.setup_ui()
def setup_ui(self):
self.frame = Frame(self.master, padx=10, pady=10)
self.frame.pack(pady=(50, 20))
Label(self.frame, text="Enter your Slack ID:", font=('Helvetica', 16)).pack(pady=10)
self.slack_id_entry = Entry(self.frame, font=('Helvetica', 16), width=25)
self.slack_id_entry.pack(pady=10)
self.start_button = Button(self.frame, text="Start Timer", command=self.start_timer, font=('Helvetica', 16))
self.start_button.pack(pady=20)
self.session_end_label = Label(self.master, text="Your session ends at:", font=('Helvetica', 16))
self.session_end_label.pack()
self.timer_label = Label(self.master, font=('Helvetica', 48), fg='blue', pady=20)
self.timer_label.pack()
def fetch_time(self):
try:
url = f"https://hackhour.hackclub.com/api/clock/{self.slack_id}"
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
response.raise_for_status()
milliseconds = int(response.text)
return milliseconds
except ValueError:
self.timer_label.config(text="Error parsing response", fg="red")
return None
except requests.RequestException as e:
self.timer_label.config(text="HTTP Request failed", fg="red")
return None
def update_time(self):
milliseconds = self.fetch_time()
if milliseconds is None:
self.timer_label.config(text="Error fetching time!", fg="red")
elif milliseconds == -1:
self.timer_label.config(text="Session inactive.\nType /arcade to activate.", fg="orange")
else:
current_time = int(milliseconds / 1000)
self.timer_label.config(text=time.strftime('%H:%M:%S', time.gmtime(current_time)), fg="black")
self.master.after(1000, self.update_time)
def start_timer(self):
self.slack_id = self.slack_id_entry.get()
if not self.slack_id:
messagebox.showwarning("Warning", "Please provide a Slack ID.")
return
self.update_time()
root = tk.Tk()
app = SlackTimerApp(root)
root.mainloop()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment