You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
#!/usr/bin/python3
|
|
|
|
import os
|
|
from datetime import datetime, timezone
|
|
import requests
|
|
|
|
schedule_start = datetime.fromisoformat("2021-11-12T10:00")
|
|
|
|
since_start = datetime.utcnow() - schedule_start
|
|
|
|
if since_start.days < 0:
|
|
exit()
|
|
|
|
hour = since_start.days * 24 + since_start.seconds // 3600
|
|
|
|
filename = '/DB15-Volunteer-Schedule-raw.csv'
|
|
|
|
coming_online = []
|
|
going_offline = []
|
|
|
|
with open(filename, 'r') as schedule_file:
|
|
for line in schedule_file:
|
|
cells = line.split(",")
|
|
if cells[hour] != cells[hour - 1]:
|
|
if cells[hour] == "":
|
|
going_offline.append((cells[0], cells[hour - 1]))
|
|
else:
|
|
coming_online.append((cells[0], cells[hour]))
|
|
|
|
print(coming_online)
|
|
print(going_offline)
|
|
|
|
message = f"**Shift changes for <time:{datetime.now(timezone.utc).isoformat(timespec='minutes')}>:**\n"
|
|
message += "\n---\n"
|
|
message += "Coming online:\n"
|
|
for (person, role) in coming_online:
|
|
message += f"- *{person}* - {role}\n"
|
|
message += "\n---\n"
|
|
message += "Going offline:\n"
|
|
for (person, role) in going_offline:
|
|
message += f"- *{person}* - {role}\n"
|
|
|
|
print(message)
|
|
|
|
bot_email = os.environ["BOT_EMAIL"]
|
|
api_key = os.environ["BOT_API_KEY"]
|
|
|
|
message_request = {
|
|
"type": "stream",
|
|
"to": "technical",
|
|
"topic": "Schedule bot",
|
|
"content": message,
|
|
}
|
|
|
|
r = requests.post('https://chat.videostrike.team/api/v1/messages',
|
|
data=message_request,
|
|
auth=(bot_email, api_key)
|
|
)
|
|
print(r.status_code)
|