From 190f754d71c4b85ef76a96680ed30870370d0966 Mon Sep 17 00:00:00 2001 From: Oceanlight Date: Thu, 23 Jul 2020 20:53:57 -0500 Subject: fixed mention bug in multiple places --- cogs/utils.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'cogs') diff --git a/cogs/utils.py b/cogs/utils.py index bacf5e6..ab9bc42 100755 --- a/cogs/utils.py +++ b/cogs/utils.py @@ -118,7 +118,7 @@ class Utils(commands.Cog): return else: await ctx.send(error) - #await ctx.send(f"{ctx.message.author.display_name}, you have to wait {round(error.retry_after, 7)} seconds before using this again.") + #await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)}, you have to wait {round(error.retry_after, 7)} seconds before using this again.") @commands.command() async def findsleep(self, ctx): @@ -147,15 +147,15 @@ class Utils(commands.Cog): # Add extra comment based on number of sleepHrs if sleepHrs == 0: - await ctx.send(f"{ctx.message.author.display_name} -> your sleep is 0 hours long - nice try \:D") + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)} -> your sleep is 0 hours long - nice try \:D") elif sleepHrs <= 5: if sleepHrs == 1: s = '' else: s = 's' - await ctx.send(f"{ctx.message.author.display_name} -> your sleep is {sleepHrs} hour{s} long - {lessSleepMsg[randint(0, len(lessSleepMsg) - 1)]}") + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)} -> your sleep is {sleepHrs} hour{s} long - {lessSleepMsg[randint(0, len(lessSleepMsg) - 1)]}") else: - await ctx.send(f"{ctx.message.author.display_name} -> your sleep is {sleepHrs} hours long - {moreSleepMsg[randint(0, len(moreSleepMsg) - 1)]}") + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)} -> your sleep is {sleepHrs} hours long - {moreSleepMsg[randint(0, len(moreSleepMsg) - 1)]}") @commands.Cog.listener() async def on_member_join(self, member): @@ -234,7 +234,7 @@ class Utils(commands.Cog): async def leaderboard_handler(self,ctx,error): if isinstance(error, commands.CommandOnCooldown): #return - await ctx.send(f"{ctx.message.author.display_name}, you have to wait {round(error.retry_after, 2)} seconds before using this again.") + await ctx.send(f"{discord.utils.escape_mentions(ctx.message.author.display_name)}, you have to wait {round(error.retry_after, 2)} seconds before using this again.") @commands.cooldown(1, 60, commands.BucketType.guild) @commands.command() -- cgit v1.2.3 From 8e00c354735617e8140f2c14306e498c3442cd41 Mon Sep 17 00:00:00 2001 From: Mango0x45 Date: Fri, 24 Jul 2020 13:26:18 +0200 Subject: Auto reject blacklisted urls --- cogs/src.py | 134 +++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 83 insertions(+), 51 deletions(-) (limited to 'cogs') diff --git a/cogs/src.py b/cogs/src.py index bf776e7..8afe1b5 100755 --- a/cogs/src.py +++ b/cogs/src.py @@ -9,84 +9,90 @@ import asyncio import dateutil.parser from pathlib import Path + async def rejectRun(self, apiKey, ctx, run, reason): await ctx.message.delete() run = run.split('/')[-1] - reject = { - "status": { - "status": "rejected", - "reason": reason - } - } - r = requests.put(f"https://www.speedrun.com/api/v1/runs/{run}/status", headers={ - "X-API-Key": apiKey, "Accept": "application/json", "User-Agent": "mcbeDiscordBot/1.0"}, data=json.dumps(reject)) + reject = {"status": {"status": "rejected", "reason": reason}} + r = requests.put(f"https://www.speedrun.com/api/v1/runs/{run}/status", + headers={ + "X-API-Key": apiKey, + "Accept": "application/json", + "User-Agent": "mcbeDiscordBot/1.0" + }, + data=json.dumps(reject)) if r.status_code == 200 or r.status_code == 204: await ctx.send("Run rejected succesfully") else: await ctx.send("Something went wrong") - await ctx.message.author.send(f"```json\n{json.dumps(json.loads(r.text),indent=4)}```") + await ctx.message.author.send( + f"```json\n{json.dumps(json.loads(r.text),indent=4)}```") async def approveRun(self, apiKey, ctx, run, reason=None): await ctx.message.delete() run = run.split('/')[-1] if reason == None: - approve = { - "status": { - "status": "verified" - } - } + approve = {"status": {"status": "verified"}} else: - approve = { - "status": { - "status": "verified", - "reason":reason - } - } - r = requests.put(f"https://www.speedrun.com/api/v1/runs/{run}/status", headers={ - "X-API-Key": apiKey, "Accept": "application/json", "User-Agent": "mcbeDiscordBot/1.0"}, data=json.dumps(approve)) + approve = {"status": {"status": "verified", "reason": reason}} + r = requests.put(f"https://www.speedrun.com/api/v1/runs/{run}/status", + headers={ + "X-API-Key": apiKey, + "Accept": "application/json", + "User-Agent": "mcbeDiscordBot/1.0" + }, + data=json.dumps(approve)) if r.status_code == 200 or r.status_code == 204: await ctx.send("Run approved succesfully") else: await ctx.send("Something went wrong") - await ctx.message.author.send(f"```json\n{json.dumps(json.loads(r.text),indent=4)}```") + await ctx.message.author.send( + f"```json\n{json.dumps(json.loads(r.text),indent=4)}```") async def deleteRun(self, apiKey, ctx, run): await ctx.message.delete() run = run.split('/')[-1] - r = requests.delete(f"https://www.speedrun.com/api/v1/runs/{run}", headers={ - "X-API-Key": apiKey, "Accept": "application/json", "User-Agent": "mcbeDiscordBot/1.0"}) + r = requests.delete(f"https://www.speedrun.com/api/v1/runs/{run}", + headers={ + "X-API-Key": apiKey, + "Accept": "application/json", + "User-Agent": "mcbeDiscordBot/1.0" + }) if r.status_code == 200 or r.status_code == 204: await ctx.send("Run deleted succesfully") else: await ctx.send("Something went wrong") - await ctx.message.author.send(f"```json\n{json.dumps(json.loads(r.text),indent=4)}```") + await ctx.message.author.send( + f"```json\n{json.dumps(json.loads(r.text),indent=4)}```") + async def pendingRuns(self, ctx): mcbe_runs = 0 mcbeil_runs = 0 mcbece_runs = 0 - head = { - "Accept": "application/json", - "User-Agent":"mcbeDiscordBot/1.0" - } + 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,level&orderby=submitted', headers=head) + f'https://www.speedrun.com/api/v1/runs?game={gameID}&status=new&max=200&embed=category,players,level&orderby=submitted', + 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,level&orderby=submitted', headers=head) + f'https://www.speedrun.com/api/v1/runs?game={gameID2}&status=new&max=200&embed=category,players,level&orderby=submitted', + 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): - leaderboard = '' # A little ugly but prevents name not defined error + leaderboard = '' # A little ugly but prevents name not defined error level = False try: for key, value in runs['data'][i].items(): + if key == 'id': + run_id = value if key == 'weblink': link = value if key == 'level': @@ -95,6 +101,11 @@ async def pendingRuns(self, ctx): categoryName = value["data"]["name"] if key == 'category' and not level: categoryName = value["data"]["name"] + if key == 'videos': + if value['links'][0]['uri'] in self.bot.video_blacklist: + await rejectRun( + self, self.bot.config['api_key'], ctx, run_id, + 'Detected as spam by our automatic filter') if key == 'players': if value["data"][0]['rel'] == 'guest': player = value["data"][0]['name'] @@ -113,30 +124,44 @@ async def pendingRuns(self, ctx): leaderboard = 'Individual Level Run' else: mcbe_runs += 1 - leaderboard = "Full Game Run" # If this doesn't work I'm starting a genocide + leaderboard = "Full Game Run" # If this doesn't work I'm starting a genocide elif game == 1: leaderboard = "Category Extension Run" mcbece_runs += 1 embed = discord.Embed( - title=leaderboard, url=link, description=f"{categoryName} in `{str(rta).replace('000','')}` by **{player}**", color=16711680+i*60, timestamp=timestamp) - await self.bot.get_channel(int(self.bot.config[str(ctx.message.guild.id)]["pending_channel"])).send(embed=embed) + title=leaderboard, + url=link, + description= + f"{categoryName} in `{str(rta).replace('000','')}` by **{player}**", + color=16711680 + i * 60, + timestamp=timestamp) + await self.bot.get_channel( + int(self.bot.config[str( + ctx.message.guild.id)]["pending_channel"]) + ).send(embed=embed) runs = runs2 gameID = gameID2 - embed_stats = discord.Embed(title='Pending Run Stats', description=f"Full Game Runs: {mcbe_runs}\nIndividual Level Runs: {mcbeil_runs}\nCategory Extension Runs: {mcbece_runs}", color=16711680 + i * 60) - await self.bot.get_channel(int(self.bot.config[str(ctx.message.guild.id)]["pending_channel"])).send(embed=embed_stats) + embed_stats = discord.Embed( + title='Pending Run Stats', + description= + f"Full Game Runs: {mcbe_runs}\nIndividual Level Runs: {mcbeil_runs}\nCategory Extension Runs: {mcbece_runs}", + color=16711680 + i * 60) + await self.bot.get_channel( + int(self.bot.config[str(ctx.message.guild.id)]["pending_channel"]) + ).send(embed=embed_stats) async def verifyNew(self, apiKey=None, userID=None): - if apiKey==None: + if apiKey == None: head = { - "Accept": "application/json", - "User-Agent": "mcbeDiscordBot/1.0" + "Accept": "application/json", + "User-Agent": "mcbeDiscordBot/1.0" } else: head = { - "X-API-Key": apiKey, - "Accept": "application/json", - "User-Agent": "mcbeDiscordBot/1.0" + "X-API-Key": apiKey, + "Accept": "application/json", + "User-Agent": "mcbeDiscordBot/1.0" } server = self.bot.get_guild(574267523869179904) # Troll is mentally challenged I guess ¯\_(ツ)_/¯ @@ -149,11 +174,13 @@ async def verifyNew(self, apiKey=None, userID=None): data = json.loads(Path('./api_keys.json').read_text()) if str(user.id) in data: - pbs = requests.get(f"https://www.speedrun.com/api/v1/users/{data[str(user.id)]}/personal-bests", headers=head) + pbs = requests.get( + f"https://www.speedrun.com/api/v1/users/{data[str(user.id)]}/personal-bests", + headers=head) pbs = json.loads(pbs.text) else: - r = requests.get( - 'https://www.speedrun.com/api/v1/profile', headers=head) + r = requests.get('https://www.speedrun.com/api/v1/profile', + headers=head) # print(r.text) if r.status_code >= 400: await user.send(f"```json\n{r.text}```") @@ -190,8 +217,8 @@ async def verifyNew(self, apiKey=None, userID=None): else: await server.get_member(user.id).remove_roles(RunneRole) -class Src(commands.Cog): +class Src(commands.Cog): def __init__(self, bot): self.bot = bot self.checker.start() @@ -203,7 +230,10 @@ class Src(commands.Cog): @commands.guild_only() async def pending(self, ctx): async with ctx.typing(): - await self.bot.get_channel(int(self.bot.config[str(ctx.message.guild.id)]["pending_channel"])).purge(limit=500) + await self.bot.get_channel( + int(self.bot.config[str( + ctx.message.guild.id)]["pending_channel"])).purge(limit=500 + ) await pendingRuns(self, ctx) @commands.command(description="Reject runs quickly") @@ -230,7 +260,9 @@ class Src(commands.Cog): if apiKey == None: data = json.loads(Path('./api_keys.json').read_text()) if not str(ctx.author.id) in data: - 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 ` 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") + 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 ` 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 if ctx.guild != None: await ctx.message.delete() @@ -242,7 +274,7 @@ class Src(commands.Cog): @tasks.loop(minutes=10.0) async def checker(self): data = json.loads(Path('./api_keys.json').read_text()) - for key,value in data.items(): + for key, value in data.items(): await verifyNew(self, None, key) -- cgit v1.2.3 From 4bab18fd38f00549fdca8b4e0d2971cafa8413b3 Mon Sep 17 00:00:00 2001 From: Mango0x45 Date: Fri, 24 Jul 2020 17:05:04 +0200 Subject: Added blacklistvideo() and video_blacklist() --- cogs/admin.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'cogs') diff --git a/cogs/admin.py b/cogs/admin.py index 3a6299f..8164790 100755 --- a/cogs/admin.py +++ b/cogs/admin.py @@ -237,6 +237,23 @@ class Admin(commands.Cog): """Print a config variable, use for testing""" await ctx.send(self.bot.config[str(ctx.message.guild.id)][key]) + @commands.command() + @commands.check(is_mod) + async def blacklistvideo(self, ctx, uri): + """Set runs from a specific url to be auto rejected""" + with open('video_blacklist.json', 'w') as f: + self.bot.video_blacklist.append(uri) + json.dump(self.bot.video_blacklist, f, indent=4) + await ctx.send(f'Blacklisted runs from `{uri}`') + + @commands.command() + @commands.check(is_mod) + async def video_blacklist(self, ctx): + """Sends a list of blacklisted uris""" + message = '```The following URIs are blacklisted:\n' + for uri in self.bot.video_blacklist: + message += f'{uri}, ' + await ctx.send(f'{message[:-2]}```') def setup(bot): bot.add_cog(Admin(bot)) -- cgit v1.2.3 From 8e8b10e2875fb384887239a3e05964b9504e127d Mon Sep 17 00:00:00 2001 From: Thomas Voss <57815710+Mango0x45@users.noreply.github.com> Date: Sun, 26 Jul 2020 01:19:38 +0200 Subject: Bold pls --- cogs/logs.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'cogs') diff --git a/cogs/logs.py b/cogs/logs.py index c1b3a49..fd34b77 100755 --- a/cogs/logs.py +++ b/cogs/logs.py @@ -24,10 +24,10 @@ class Logs(commands.Cog): timestamp=message.created_at ) embed.add_field( - name='User', value=message.author.mention, inline=True) + name='**User**', value=message.author.mention, inline=True) embed.add_field( - name='Channel', value=message.channel.mention, inline=True) - embed.add_field(name='Message', value=message.content, inline=False) + name='**Channel**', value=message.channel.mention, inline=True) + embed.add_field(name='**Message**', value=message.content, inline=False) await channel.send(embed=embed) @commands.Cog.listener() @@ -48,12 +48,12 @@ class Logs(commands.Cog): timestamp=after.edited_at ) embed.add_field( - name='User', value=before.author.mention, inline=True) + name='**User**', value=before.author.mention, inline=True) embed.add_field( - name='Channel', value=before.channel.mention, inline=True) - embed.add_field(name='Original Message', + name='**Channel**', value=before.channel.mention, inline=True) + embed.add_field(name='**Original Message**', value=before.content, inline=False) - embed.add_field(name='New Message', value=after.content, inline=False) + embed.add_field(name='**New Message**', value=after.content, inline=False) await channel.send(embed=embed) -- cgit v1.2.3 From 85779b58d4b3b4b37ead36a68c8beacf0e2c554e Mon Sep 17 00:00:00 2001 From: Thomas Voss <57815710+Mango0x45@users.noreply.github.com> Date: Sun, 26 Jul 2020 01:23:15 +0200 Subject: Update logs.py --- cogs/logs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'cogs') diff --git a/cogs/logs.py b/cogs/logs.py index fd34b77..4f6aab1 100755 --- a/cogs/logs.py +++ b/cogs/logs.py @@ -19,7 +19,7 @@ class Logs(commands.Cog): color = message.author.color channel = self.bot.get_channel(int(self.bot.config[str(message.guild.id)]["logs_channel"])) embed = discord.Embed( - title='Deleted Message', + title='**Deleted Message**', color=color, timestamp=message.created_at ) @@ -43,7 +43,7 @@ class Logs(commands.Cog): else: color = before.author.color embed = discord.Embed( - title='Edited Message', + title='**Edited Message**', color=color, timestamp=after.edited_at ) -- cgit v1.2.3