Fixed dockerfile issues
This commit is contained in:
parent
d63a39b49a
commit
00f3bc4ffd
52
tgbot.py
52
tgbot.py
@ -71,6 +71,10 @@ class TelegramBot:
|
||||
def calendar_auth(message):
|
||||
self.calendar_auth(message)
|
||||
|
||||
@self.bot.message_handler(commands=["login"])
|
||||
def cancel_booking(message):
|
||||
self.process_login(message)
|
||||
|
||||
def init_db(self):
|
||||
with sqlite3.connect(self.db_path) as conn:
|
||||
cursor = conn.cursor()
|
||||
@ -229,9 +233,6 @@ class TelegramBot:
|
||||
def make_booking(self, message):
|
||||
try:
|
||||
xclient = self.get_xclient(message.chat.id)
|
||||
except Exception as e:
|
||||
self.bot.reply_to(message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
if not xclient:
|
||||
self.bot.reply_to(
|
||||
@ -242,6 +243,7 @@ class TelegramBot:
|
||||
|
||||
start = datetime.now()
|
||||
end = start + timedelta(days=1)
|
||||
|
||||
slots = xclient.list_slots(start, end)
|
||||
|
||||
if slots:
|
||||
@ -250,7 +252,9 @@ class TelegramBot:
|
||||
# Create a button for each slot
|
||||
status = "Available" if slot.available else "FULL"
|
||||
button_text = f"Slot {i + 1}: {slot.start_stamp} ({status})"
|
||||
markup.add(InlineKeyboardButton(button_text, callback_data=f"book_{i}"))
|
||||
markup.add(
|
||||
InlineKeyboardButton(button_text, callback_data=f"book_{i}")
|
||||
)
|
||||
|
||||
self.bot.reply_to(
|
||||
message, "Select a slot to book or watch:", reply_markup=markup
|
||||
@ -259,12 +263,13 @@ class TelegramBot:
|
||||
else:
|
||||
self.bot.reply_to(message, "No slots found.")
|
||||
|
||||
except Exception as e:
|
||||
self.bot.reply_to(message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
def callback_booking(self, call):
|
||||
try:
|
||||
xclient = self.get_xclient(call.message.chat.id)
|
||||
except Exception as e:
|
||||
self.bot.reply_to(call.message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
if not xclient:
|
||||
self.bot.reply_to(
|
||||
@ -316,8 +321,12 @@ class TelegramBot:
|
||||
f"Booking confirmed for: {selected_slot.start_stamp}",
|
||||
)
|
||||
except Exception as e:
|
||||
self.bot.answer_callback_query(call.id, "Failed to book slot.")
|
||||
self.bot.send_message(call.message.chat.id, f"Error: {str(e)}")
|
||||
self.bot.answer_callback_query(
|
||||
call.id, "Failed to book slot."
|
||||
)
|
||||
self.bot.send_message(
|
||||
call.message.chat.id, f"Error: {str(e)}"
|
||||
)
|
||||
else:
|
||||
# Slot is full, add to watchlist
|
||||
self.add_to_watchlist(call.message.chat.id, selected_slot)
|
||||
@ -337,13 +346,13 @@ class TelegramBot:
|
||||
self.bot.edit_message_reply_markup(
|
||||
call.message.chat.id, call.message.message_id
|
||||
)
|
||||
except Exception as e:
|
||||
self.bot.reply_to(call.message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
def cancel_booking(self, message):
|
||||
try:
|
||||
xclient = self.get_xclient(message.chat.id)
|
||||
except Exception as e:
|
||||
self.bot.reply_to(message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
if not xclient:
|
||||
self.bot.reply_to(
|
||||
@ -373,12 +382,13 @@ class TelegramBot:
|
||||
else:
|
||||
self.bot.reply_to(message, "You have no bookings to cancel.")
|
||||
|
||||
except Exception as e:
|
||||
self.bot.reply_to(message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
def callback_cancel_booking(self, call):
|
||||
try:
|
||||
xclient = self.get_xclient(call.message.chat.id)
|
||||
except Exception as e:
|
||||
self.bot.reply_to(call.message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
if not xclient:
|
||||
self.bot.reply_to(
|
||||
@ -422,10 +432,14 @@ class TelegramBot:
|
||||
call.id, "Failed to cancel booking."
|
||||
)
|
||||
except Exception as e:
|
||||
self.bot.answer_callback_query(call.id, "Failed to cancel booking.")
|
||||
self.bot.answer_callback_query(
|
||||
call.id, "Failed to cancel booking."
|
||||
)
|
||||
self.bot.send_message(call.message.chat.id, f"Error: {str(e)}")
|
||||
else:
|
||||
self.bot.answer_callback_query(call.id, "Invalid booking selection.")
|
||||
self.bot.answer_callback_query(
|
||||
call.id, "Invalid booking selection."
|
||||
)
|
||||
except (IndexError, ValueError):
|
||||
self.bot.answer_callback_query(call.id, "Invalid data.")
|
||||
|
||||
@ -434,6 +448,10 @@ class TelegramBot:
|
||||
call.message.chat.id, call.message.message_id
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
self.bot.reply_to(call.message, f"Error: {str(e)}")
|
||||
return
|
||||
|
||||
def manage_watchlist(self, message):
|
||||
chat_id = message.chat.id
|
||||
|
||||
|
||||
28
xclient.py
28
xclient.py
@ -11,7 +11,9 @@ from selenium.webdriver.chrome.service import Service
|
||||
from webdriver_manager.chrome import ChromeDriverManager
|
||||
|
||||
|
||||
service = Service(ChromeDriverManager().install())
|
||||
class LoginFailedException(Exception):
|
||||
def __init__(self, *args: object) -> None:
|
||||
super().__init__(*args)
|
||||
|
||||
|
||||
class XClient:
|
||||
@ -32,19 +34,16 @@ class XClient:
|
||||
|
||||
def fetch_access_token(self):
|
||||
# Set up the WebDriver (make sure to use the correct path for your WebDriver)
|
||||
print("starting chromedriver")
|
||||
service = Service(executable_path=config.CHROMEDRIVER_PATH)
|
||||
|
||||
options = webdriver.ChromeOptions()
|
||||
options.add_argument("--headless=new")
|
||||
options.add_argument("--no-sandbox")
|
||||
|
||||
print("started chromedriver")
|
||||
|
||||
driver = webdriver.Chrome(options=options, service=service)
|
||||
|
||||
driver.get("https://x.tudelft.nl")
|
||||
|
||||
print("Check1")
|
||||
|
||||
button = WebDriverWait(driver, 30).until(
|
||||
EC.element_to_be_clickable(
|
||||
(By.XPATH, "//span[contains(text(), 'TUDelft')]")
|
||||
@ -61,7 +60,6 @@ class XClient:
|
||||
)
|
||||
)
|
||||
|
||||
print("Check2")
|
||||
button.click()
|
||||
|
||||
# Input the username
|
||||
@ -75,11 +73,23 @@ class XClient:
|
||||
|
||||
time.sleep(1)
|
||||
|
||||
delcom_auth = json.loads(
|
||||
driver.execute_script("return window.localStorage.getItem('delcom_auth');")
|
||||
cookie = driver.execute_script(
|
||||
"return window.localStorage.getItem('delcom_auth');"
|
||||
)
|
||||
|
||||
if cookie is None:
|
||||
raise LoginFailedException("Logging in to X has failed")
|
||||
|
||||
delcom_auth = json.loads(cookie)
|
||||
print(cookie, delcom_auth)
|
||||
|
||||
driver.quit()
|
||||
|
||||
if delcom_auth.get("tokenResponse") is None:
|
||||
raise LoginFailedException(
|
||||
"Logging in to X has failed, missing tokenResponse"
|
||||
)
|
||||
|
||||
access_token = delcom_auth["tokenResponse"].get("accessToken", None)
|
||||
return access_token
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user