1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
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
from google.cloud import translate_v2 as translate
translate_client = translate.Client()
import random
async def translateMsg(text, target="en"):
# Text can also be a sequence of strings, in which case this method
# will return a sequence of results for each text.
result = translate_client.translate(
text, target_language=target)
print(u'Text: {}'.format(result['input']))
print(u'Translation: {}'.format(result['translatedText']))
print(u'Detected source language: {}'.format(
result['detectedSourceLanguage']))
return result;
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 Utils(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def ping(self, ctx):
# """Shows the Client Latency."""
await ctx.send(f'Pong! {round(self.bot.latency*1000)}ms')
@commands.command()
async def test(self, ctx):
await ctx.send(ctx.message.channel)
@commands.command()
@commands.guild_only()
async def pending(self, ctx):
await clear(self)
await pendingRuns(self, ctx)
@commands.command()
async def translate(self, ctx, *, message):
response = await translateMsg(message)
embed=discord.Embed(title="Translation",description=f"{ctx.message.author.mention} says:", timestamp=ctx.message.created_at, color=0x4d9aff)
embed.add_field(name=f"[{response['detectedSourceLanguage']}] Source:" , value=response['input'], inline=False)
embed.add_field(name="Translation", value=response['translatedText'], inline=True)
await ctx.send(embed=embed)
@commands.command()
async def trans(self, ctx, lan, *, message):
response = await translateMsg(message, lan)
embed=discord.Embed(title="Translation",description=f"{ctx.message.author.mention} says:", timestamp=ctx.message.created_at, color=0x4d9aff)
embed.add_field(name=f"[{response['detectedSourceLanguage']}] Source:" , value=response['input'], inline=False)
embed.add_field(name="Translation", value=response['translatedText'], inline=True)
await ctx.send(embed=embed)
@commands.command()
async def verify(self, ctx, apiKey=None):
if apiKey == None:
await ctx.send("Please try again this command by getting an apiKey from https://www.speedrun.com/api/auth then do `/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")
elif ctx.guild != None:
await ctx.message.delete()
await verifyRole(self, ctx, apiKey)
@commands.command()
async def findseed(self, ctx):
totalEyes = 0
for i in range(12):
randomness = random.randint(1,10)
if randomness == 1:
totalEyes += randomness
else:
continue
await ctx.send(f"{ctx.message.author.name} -> your seed is a {totalEyes} eye")
def setup(bot):
bot.add_cog(Utils(bot))
|