aboutsummaryrefslogtreecommitdiff
path: root/cogs/src.py
diff options
context:
space:
mode:
authorAnInternetTroll <lucafulger@gmail.com>2020-05-12 21:07:26 +0000
committerAnInternetTroll <lucafulger@gmail.com>2020-05-12 21:07:26 +0000
commitc59e677819055e5322898063332368b575088552 (patch)
treed0ef240a5beff246e18294cf1b42c1fb7f29cf74 /cogs/src.py
parentefa99965c4390bca433999c6ff5c188a84b2dbe5 (diff)
downloadsteve-bot-c59e677819055e5322898063332368b575088552.tar
steve-bot-c59e677819055e5322898063332368b575088552.tar.gz
steve-bot-c59e677819055e5322898063332368b575088552.tar.bz2
steve-bot-c59e677819055e5322898063332368b575088552.tar.lz
steve-bot-c59e677819055e5322898063332368b575088552.tar.xz
steve-bot-c59e677819055e5322898063332368b575088552.tar.zst
steve-bot-c59e677819055e5322898063332368b575088552.zip
Cleanup
Diffstat (limited to 'cogs/src.py')
-rwxr-xr-xcogs/src.py109
1 files changed, 109 insertions, 0 deletions
diff --git a/cogs/src.py b/cogs/src.py
new file mode 100755
index 0000000..708d3fc
--- /dev/null
+++ b/cogs/src.py
@@ -0,0 +1,109 @@
+from discord.ext import commands
+from discord.ext import tasks
+from discord.utils import get
+import discord
+import requests
+import json
+import asyncio
+from datetime import timedelta
+
+async def verifyRole(self, ctx, apiKey):
+ server = self.bot.get_guild(574267523869179904)
+ RunneRole = server.get_role(574268937454223361)
+ WrRole = server.get_role(583622436378116107)
+ head = {
+ "X-API-Key":apiKey,
+ "Accept": "application/json",
+ "User-Agent":"mcbeDiscordBot/1.0"
+ }
+ r = requests.get('https://www.speedrun.com/api/v1/profile', headers=head)
+
+ #print(profile.text)
+ profile = json.loads(r.text)
+ pbs = requests.get(profile["data"]["links"][3]["uri"])
+ pbs = json.loads(pbs.text)
+
+ for i in pbs["data"]:
+ if i["place"] == 1:
+ if i["run"]["game"] == "yd4ovvg1" or i["run"]["game"] == "v1po7r76":
+ await ctx.send("WR boi")
+ await server.get_member(ctx.message.author.id).add_roles(WrRole)
+ print("WR boi")
+ if i["run"]["game"] == "yd4ovvg1" or i["run"]["game"] == "v1po7r76":
+ #print(i)
+ await ctx.send("Runner")
+ await server.get_member(ctx.message.author.id).add_roles(RunneRole)
+ #print("minecraft")
+
+ print(r.status_code)
+ #print(json.dumps(pbs,sort_keys=True, indent=4))
+
+async def clear(self):
+ async for msg in self.bot.get_channel(699713639866957905).history():
+ await msg.delete()
+
+
+async def pendingRuns(self, ctx):
+ head = {
+ "Accept": "application/json",
+ "User-Agent":"mcbeDiscordBot/1.0"
+ }
+ gameID = 'yd4ovvg1' # ID of Minecraft bedrock
+ gameID2 = 'v1po7r76' # ID of Category extension
+ runsRequest = requests.get(
+ f'https://www.speedrun.com/api/v1/runs?game={gameID}&status=new&max=200&embed=category,players', headers=head)
+ runs = json.loads(runsRequest.text)
+ runsRequest2 = requests.get(
+ f'https://www.speedrun.com/api/v1/runs?game={gameID2}&status=new&max=200&embed=category,players', headers=head)
+ runs2 = json.loads(runsRequest2.text)
+ # Use https://www.speedrun.com/api/v1/games?abbreviation=mcbe for ID
+
+ for game in range(2):
+ for i in range(200):
+ try:
+ for key, value in runs['data'][i].items():
+ if key == 'weblink':
+ link = value
+ if key == 'category':
+ categoryName = value["data"]["name"]
+ if key == 'players':
+ if value["data"][0]['rel'] == 'guest':
+ player = value["data"][0]['name']
+ else:
+ player = value["data"][0]["names"]["international"]
+ if key == 'times':
+ rta = timedelta(seconds=value['realtime_t'])
+ except Exception as e:
+ break
+ if game == 0:
+ leaderboard = "Minecraft bedrock"
+ elif game == 1:
+ leaderboard = "Minecraft Bedrock category extensions"
+ embed = discord.Embed(
+ title=leaderboard, url=link, description=f"{categoryName} in `{str(rta).replace('000','')}` by **{player}**", color=16711680+i*60)
+ await self.bot.get_channel(699713639866957905).send(embed=embed)
+ runs = runs2
+ gameID = gameID2
+
+class Src(commands.Cog):
+
+ def __init__(self, bot):
+ self.bot = bot
+
+ @commands.command(description="Posts all pending runs to #pending-runs")
+ @commands.guild_only()
+ async def pending(self, ctx):
+ await clear(self)
+ await pendingRuns(self, ctx)
+
+ @commands.command()
+ async def verify(self, ctx, apiKey=None):
+ if apiKey == None:
+ await ctx.send(f"Please try again this command by getting an apiKey from https://www.speedrun.com/api/auth then do `{ctx.prefix}verify <apiKey>` in my DMs or anywhere in this server. \nBe careful who you share this key with. To learn more check out https://github.com/speedruncomorg/api/blob/master/authentication.md")
+ return
+ elif ctx.guild != None:
+ await ctx.message.delete()
+ await verifyRole(self, ctx, apiKey)
+
+def setup(bot):
+ bot.add_cog(Src(bot)) \ No newline at end of file