174 lines
5.4 KiB
Python
174 lines
5.4 KiB
Python
import json
|
|
import time
|
|
import requests
|
|
import discord
|
|
from discord.ext import commands
|
|
|
|
|
|
class Edu_Info(commands.Cog):
|
|
|
|
def __init__(self, client):
|
|
self.client = client
|
|
|
|
@commands.command()
|
|
@commands.has_permissions(administrator=True)
|
|
async def teachers(self, ctx):
|
|
update_database(ctx)
|
|
|
|
with open("/home/dietpi/Edu-kun_v.2.0/saves/edu.json", "r") as f:
|
|
edu = json.load(f)
|
|
edu = edu[str(ctx.guild.id)]
|
|
|
|
for teacher in edu["dbi"]["teachers"].keys():
|
|
t = edu['dbi']['teachers'][teacher]
|
|
teacher = discord.Embed(title=f"{t['firstname']} {t['lastname']}",
|
|
description="profile")
|
|
teacher.add_field(name="Gender",
|
|
value=f"{t['gender']}")
|
|
teacher.add_field(name="Started",
|
|
value=f"{t['datefrom']}")
|
|
|
|
await ctx.send(content=None, embed=teacher)
|
|
|
|
@commands.command()
|
|
@commands.has_permissions(administrator=True)
|
|
async def classes(self, ctx):
|
|
update_database(ctx)
|
|
|
|
with open("/home/dietpi/Edu-kun_v.2.0/saves/edu.json", "r") as f:
|
|
edu = json.load(f)
|
|
edu = edu[str(ctx.guild.id)]
|
|
|
|
for classroom in edu["dbi"]["classes"].keys():
|
|
cr = edu["dbi"]["classes"][classroom]
|
|
teacher_id = cr["teacherid"]
|
|
teach = "None"
|
|
|
|
# getting the teacher
|
|
for teacher in edu["dbi"]["teachers"].keys():
|
|
t = edu['dbi']['teachers'][teacher]
|
|
|
|
if t["id"] == teacher_id:
|
|
teach = f"{t['firstname']} {t['lastname']}"
|
|
|
|
embed = discord.Embed(title=f"{cr['name']}",
|
|
description="info")
|
|
embed.add_field(name="Teacher",
|
|
value=teach)
|
|
|
|
await ctx.send(content=None, embed=embed)
|
|
|
|
@commands.command()
|
|
async def periods(self, ctx):
|
|
update_database(ctx)
|
|
|
|
with open("/home/dietpi/Edu-kun_v.2.0/saves/edu.json", "r") as f:
|
|
edu = json.load(f)
|
|
edu = edu[str(ctx.guild.id)]
|
|
|
|
periods = edu["dbi"]["periods"]
|
|
|
|
periodX = discord.Embed(title="Periods",
|
|
description="hours")
|
|
|
|
for period in periods:
|
|
|
|
periodX.add_field(name=f"{period['name']}",
|
|
value=f"{period['starttime']} - {period['endtime']}")
|
|
|
|
await ctx.send(content=None, embed=periodX)
|
|
|
|
@commands.command()
|
|
async def authors(self, ctx):
|
|
authors = discord.Embed(title="Authors",
|
|
description="Tucan444, UntriexTv")
|
|
|
|
authors.add_field(name="Tucan444",
|
|
value="https://tucan444.itch.io/")
|
|
authors.add_field(name="UntriexTv",
|
|
value="https://github.com/UntriexTv")
|
|
await ctx.send(content=None, embed=authors)
|
|
|
|
|
|
def update_database(ctx):
|
|
# getting accounts
|
|
with open("/home/dietpi/Edu-kun_v.2.0/saves/accounts.json") as f:
|
|
accounts = json.load(f)[str(ctx.guild.id)]
|
|
|
|
for account in accounts.keys():
|
|
for i in range(6):
|
|
try:
|
|
url = 'https://spspb.edupage.org/login/edubarLogin.php'
|
|
headers = {
|
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0"}
|
|
values = {'username': f"{accounts[account]['name']}",
|
|
'password': f"{weird_shuffle(accounts[account]['password'])}"}
|
|
edupage = requests.session()
|
|
edupage.post(url, data=values, headers=headers)
|
|
r = edupage.get("https://spspb.edupage.org/timeline/", headers=headers)
|
|
x = r.text.split("\n")
|
|
lines_to_del = []
|
|
for line in x:
|
|
if len(line) < 10000:
|
|
lines_to_del.append(line)
|
|
|
|
for line in lines_to_del:
|
|
del x[x.index(line)]
|
|
|
|
x = list(x[0])
|
|
while x[0] != "{":
|
|
del x[0]
|
|
while x[-1] != "}":
|
|
del x[-1]
|
|
x = "".join(x)
|
|
x = x.replace("false", "False").replace("true", "True").replace("null", "None")
|
|
var = eval(x)
|
|
|
|
with open(f"/home/dietpi/Edu-kun_v.2.0/saves/{accounts[account]['file']}", "r") as f:
|
|
save = json.load(f)
|
|
|
|
save[str(ctx.guild.id)] = var
|
|
|
|
with open(f"/home/dietpi/Edu-kun_v.2.0/saves/{accounts[account]['file']}", "w") as f:
|
|
json.dump(save, f, indent=4)
|
|
break
|
|
except:
|
|
time.sleep(0.5)
|
|
|
|
|
|
def weird_shuffle(message):
|
|
x = message
|
|
o = []
|
|
e = []
|
|
ind = []
|
|
gug = 0
|
|
for i in x:
|
|
o.append(i)
|
|
f = len(x) / 2
|
|
if f % 1 == 0:
|
|
o.append(" ")
|
|
gug = 1
|
|
p = len(o)
|
|
for u in range(0, p):
|
|
ind.append(u)
|
|
for ef in range(0, p):
|
|
if max(ind) - ef * 2 < 0:
|
|
break
|
|
e.append(o[max(ind) - ef * 2])
|
|
if min(ind) + 1 + (ef * 2) > max(ind):
|
|
break
|
|
e.append(o[min(ind) + 1 + (ef * 2)])
|
|
zet = ["", p]
|
|
if gug == 1:
|
|
e.remove(e[0])
|
|
zet[0] = " "
|
|
zet[1] = p - 1
|
|
gug = ""
|
|
for ups in range(0, zet[1]):
|
|
gug += e[ups]
|
|
return zet[0] + gug
|
|
|
|
|
|
def setup(client):
|
|
client.add_cog(Edu_Info(client))
|