Fix bot Discord and add new command for send image school time table - Finish upload homework on MongoDB (there is a small bug but it is not a big deal)
This commit is contained in:
parent
815f3fc0d6
commit
62b9c93a2c
|
@ -44,13 +44,14 @@ bot = discord.Bot()
|
||||||
async def on_ready():
|
async def on_ready():
|
||||||
print('We have logged in as {0.user}'.format(bot))
|
print('We have logged in as {0.user}'.format(bot))
|
||||||
bot.loop.create_task(orario())
|
bot.loop.create_task(orario())
|
||||||
|
orario.start()
|
||||||
|
|
||||||
# Search on MongoDB the subject and send a message on Discord if the subject is found
|
# Search on MongoDB the subject and send a message on Discord if the subject is found
|
||||||
@tasks.loop(seconds=1)
|
@tasks.loop(seconds=10)
|
||||||
async def orario():
|
async def orario():
|
||||||
documents = collection.find()
|
documents = collection.find()
|
||||||
send_screenshot = 0
|
send_screenshot = 0
|
||||||
|
print("Searching for subject...")
|
||||||
# Iterate through the documents
|
# Iterate through the documents
|
||||||
for document in documents:
|
for document in documents:
|
||||||
for day in document['School Subject']:
|
for day in document['School Subject']:
|
||||||
|
@ -64,7 +65,6 @@ async def orario():
|
||||||
driver = webdriver.Firefox(options=options)
|
driver = webdriver.Firefox(options=options)
|
||||||
driver.get('http://127.0.0.1:4999/orario')
|
driver.get('http://127.0.0.1:4999/orario')
|
||||||
time.sleep(5)
|
time.sleep(5)
|
||||||
|
|
||||||
driver.get_screenshot_as_file("screenshot.png")
|
driver.get_screenshot_as_file("screenshot.png")
|
||||||
driver.quit()
|
driver.quit()
|
||||||
channel = bot.get_channel(int(GENERAL_ID))
|
channel = bot.get_channel(int(GENERAL_ID))
|
||||||
|
@ -159,7 +159,17 @@ async def change_school_time(
|
||||||
@bot.slash_command(name='confirm', description='Confirm change school time')
|
@bot.slash_command(name='confirm', description='Confirm change school time')
|
||||||
async def confirm(ctx : ApplicationContext):
|
async def confirm(ctx : ApplicationContext):
|
||||||
await ctx.respond(f"Confirm")
|
await ctx.respond(f"Confirm")
|
||||||
collection_email.update_one({}, {"$set": {"Send on Whatsapp": "yes"}})
|
options = Options() # Set options
|
||||||
|
options.add_argument("--headless") # Headless mode (so you don't see the browser)
|
||||||
|
options.add_argument('--disable-gpu') # Disable GPU
|
||||||
|
driver = webdriver.Firefox(options=options)
|
||||||
|
driver.get('http://127.0.0.1:4999/orario')
|
||||||
|
driver.get_screenshot_as_file("screenshot.png")
|
||||||
|
driver.quit()
|
||||||
|
channel = bot.get_channel(int(GENERAL_ID))
|
||||||
|
await channel.send(file=discord.File("screenshot.png"))
|
||||||
|
os.remove("screenshot.png")
|
||||||
|
|
||||||
#@bot.slash_command()
|
#@bot.slash_command()
|
||||||
#@discord.default_permissions(ban_members = True, administrator = True)
|
#@discord.default_permissions(ban_members = True, administrator = True)
|
||||||
#async def ban(ctx, member: Option(discord.Member, description="Select a member", required=True), reason: Option(str, description="Reason", required=True)):
|
#async def ban(ctx, member: Option(discord.Member, description="Select a member", required=True), reason: Option(str, description="Reason", required=True)):
|
||||||
|
@ -176,4 +186,6 @@ async def confirm(ctx : ApplicationContext):
|
||||||
#async def clear(ctx, messages: Option(int, description="Amount of messages to delete", required=True)):
|
#async def clear(ctx, messages: Option(int, description="Amount of messages to delete", required=True)):
|
||||||
# clear_msg.clear_messages(ctx, amount = messages)
|
# clear_msg.clear_messages(ctx, amount = messages)
|
||||||
|
|
||||||
bot.run(DISCORD_TOKEN)
|
while True:
|
||||||
|
bot.run(DISCORD_TOKEN)
|
||||||
|
orario.start()
|
|
@ -58,32 +58,162 @@ WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, "/html/b
|
||||||
# Click on the "Next Day" button to go to the next day's tasks
|
# Click on the "Next Day" button to go to the next day's tasks
|
||||||
next_day_button = WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]')))
|
next_day_button = WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]')))
|
||||||
|
|
||||||
def wait_recheck():
|
def wait_homework():
|
||||||
|
browser.quit()
|
||||||
time.sleep(10800)
|
time.sleep(10800)
|
||||||
|
check_homework()
|
||||||
|
|
||||||
def check_homework():
|
def check_homework():
|
||||||
for i in range(1, 10):
|
for i in range(0, 10):
|
||||||
try:
|
try:
|
||||||
|
print(i)
|
||||||
|
date = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[1]"))).text)
|
||||||
|
subject = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[1]/h2"))).text)
|
||||||
|
teacher = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[1]/span"))).text)
|
||||||
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[1]/div/ul/li/p"))).text)
|
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[1]/div/ul/li/p"))).text)
|
||||||
|
print(date)
|
||||||
|
print(subject)
|
||||||
print(text1)
|
print(text1)
|
||||||
|
# Search on MongoDB if the date is already present on the database
|
||||||
|
if collection.find_one({"Date": date}) is None:
|
||||||
|
collection.insert_one({"Date": date, "Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
collection.update_one(
|
||||||
|
{"Date": date},
|
||||||
|
{"$addToSet": {"Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}}
|
||||||
|
)
|
||||||
|
|
||||||
|
subject = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[2]/h2"))).text)
|
||||||
|
teacher = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[2]/span"))).text)
|
||||||
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[2]/div/ul/li/p"))).text)
|
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[2]/div/ul/li/p"))).text)
|
||||||
|
print(subject)
|
||||||
|
print(teacher)
|
||||||
print(text1)
|
print(text1)
|
||||||
|
if collection.find_one({"Date": date}) is None:
|
||||||
|
collection.insert_one({"Date": date, "Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
collection.update_one(
|
||||||
|
{"Date": date},
|
||||||
|
{"$addToSet": {"Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}}
|
||||||
|
)
|
||||||
|
try:
|
||||||
|
subject = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[3]/h2"))).text)
|
||||||
|
teacher = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[3]/span"))).text)
|
||||||
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[3]/div/ul/li/p"))).text)
|
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[3]/div/ul/li/p"))).text)
|
||||||
|
print(subject)
|
||||||
|
print(teacher)
|
||||||
print(text1)
|
print(text1)
|
||||||
|
if collection.find_one({"Date": date}) is None:
|
||||||
|
collection.insert_one({"Date": date, "Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
collection.update_one(
|
||||||
|
{"Date": date},
|
||||||
|
{"$addToSet": {"Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}}
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
subject = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[4]/h2"))).text)
|
||||||
|
teacher = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[4]/span"))).text)
|
||||||
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[4]/div/ul/li/p"))).text)
|
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[4]/div/ul/li/p"))).text)
|
||||||
|
print(subject)
|
||||||
|
print(teacher)
|
||||||
print(text1)
|
print(text1)
|
||||||
|
if collection.find_one({"Date": date}) is None:
|
||||||
|
collection.insert_one({"Date": date, "Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
collection.update_one(
|
||||||
|
{"Date": date},
|
||||||
|
{"$addToSet": {"Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}}
|
||||||
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
subject = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[5]/h2"))).text)
|
||||||
|
teacher = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[5]/span"))).text)
|
||||||
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[5]/div/ul/li/p"))).text)
|
text1 = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div[2]/div/ul/li[5]/div/ul/li/p"))).text)
|
||||||
|
print(subject)
|
||||||
|
print(teacher)
|
||||||
print(text1)
|
print(text1)
|
||||||
|
if collection.find_one({"Date": date}) is None:
|
||||||
|
collection.insert_one({"Date": date, "Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
collection.update_one(
|
||||||
|
{"Date": date},
|
||||||
|
{"$addToSet": {"Homework":
|
||||||
|
{
|
||||||
|
"Subject": subject,
|
||||||
|
"Description": text1,
|
||||||
|
"Teacher": teacher}
|
||||||
|
}}
|
||||||
|
)
|
||||||
WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]'))).click() # Click on next day button
|
WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]'))).click() # Click on next day button
|
||||||
|
except:
|
||||||
|
WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]'))).click()
|
||||||
except:
|
except:
|
||||||
try:
|
try:
|
||||||
|
date = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[1]"))).text)
|
||||||
text = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/p"))).text)
|
text = str(WebDriverWait(browser, 250).until(EC.visibility_of_element_located((By.XPATH, "/html/body/div/div/main/div/p"))).text)
|
||||||
|
print(date)
|
||||||
print(text)
|
print(text)
|
||||||
|
if collection.find_one({"Date": date}) is None:
|
||||||
|
collection.insert_one({"Date": date, "Homework": [text]})
|
||||||
|
else:
|
||||||
|
collection.update_one(
|
||||||
|
{"Date": date},
|
||||||
|
{"$addToSet": {"Homework": text}}
|
||||||
|
)
|
||||||
WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]'))).click() # Click on next day button
|
WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]'))).click() # Click on next day button
|
||||||
except:
|
except:
|
||||||
WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]'))).click() # Click on next day button
|
WebDriverWait(browser, 250).until(EC.element_to_be_clickable((By.XPATH, '/html/body/div/div/main/div/div/div[1]/div[1]/div[1]/button[3]'))).click() # Click on next day button
|
||||||
|
|
||||||
browser.quit()
|
wait_homework()
|
||||||
wait_recheck()
|
|
||||||
|
|
||||||
check_homework()
|
check_homework()
|
Loading…
Reference in New Issue