diff --git a/audiotrivia/audiotrivia.py b/audiotrivia/audiotrivia.py index 394e1d1..586f5b7 100644 --- a/audiotrivia/audiotrivia.py +++ b/audiotrivia/audiotrivia.py @@ -5,13 +5,15 @@ from typing import List import lavalink import yaml from redbot.cogs.audio import Audio +from redbot.cogs.audio.core.utilities import validation from redbot.cogs.trivia import LOG from redbot.cogs.trivia.trivia import InvalidListError, Trivia from redbot.core import commands, Config, checks from redbot.core.bot import Red from redbot.core.data_manager import cog_data_path from redbot.core.utils.chat_formatting import box -from redbot.cogs.audio.utils import userlimit +# from redbot.cogs.audio.utils import userlimit + from .audiosession import AudioSession @@ -106,7 +108,7 @@ class AudioTrivia(Trivia): try: if not ctx.author.voice.channel.permissions_for( ctx.me - ).connect or userlimit(ctx.author.voice.channel): + ).connect or self.audio.is_vc_full(ctx.author.voice.channel): return await ctx.send("I don't have permission to connect to your channel.") await lavalink.connect(ctx.author.voice.channel) lavaplayer = lavalink.get_player(ctx.guild.id) @@ -117,7 +119,7 @@ class AudioTrivia(Trivia): lavaplayer = lavalink.get_player(ctx.guild.id) lavaplayer.store("channel", ctx.channel.id) # What's this for? I dunno - await self.audio._data_check(ctx) + await self.audio.set_player_settings(ctx) if not ctx.author.voice or ctx.author.voice.channel != lavaplayer.channel: return await ctx.send( diff --git a/audiotrivia/data/lists/nhlgoalhorns.yaml b/audiotrivia/data/lists/nhlgoalhorns.yaml new file mode 100644 index 0000000..689f478 --- /dev/null +++ b/audiotrivia/data/lists/nhlgoalhorns.yaml @@ -0,0 +1,125 @@ +AUTHOR: Lazar +https://youtu.be/6OejNXrGkK0: +- Anaheim Ducks +- Anaheim +- Ducks +https://youtu.be/RbUxSPoU9Yg: +- Arizona Coyotes +- Arizona +- Coyotes +https://youtu.be/DsI0PgWADks: +- Boston Bruins +- Boston +- Bruins +https://youtu.be/hjFTd3MJOHc: +- Buffalo Sabres +- Buffalo +- Sabres +https://youtu.be/sn1PliBCRDY: +- Calgary Flames +- Calgary +- Flames +https://youtu.be/3exZm6Frd18: +- Carolina Hurricanes +- Carolina +- Hurricanes +https://youtu.be/sBeXPMkqR80: +- Chicago Blackhawks +- Chicago +- Blackhawks +https://youtu.be/MARxzs_vCPI: +- Colorado Avalanche +- Colorado +- Avalanche +https://youtu.be/6yYbQfOWw4k: +- Columbus Blue Jackets +- Columbus +- Blue Jackets +https://youtu.be/Af8_9NP5lyw: +- Dallas +- Stars +- Dallas Stars +https://youtu.be/JflfvLvY7ks: +- Detroit Red Wings +- Detroit +- Red wings +https://youtu.be/xc422k5Tcqc: +- Edmonton Oilers +- Edmonton +- Oilers +https://youtu.be/Dm1bjUB9HLE: +- Florida Panthers +- Florida +- Panthers +https://youtu.be/jSgd3aIepY4: +- Los Angeles Kings +- Los Angeles +- Kings +https://youtu.be/4Pj8hWPR9VI: +- Minnesota Wild +- Minnesota +- Wild +https://youtu.be/rRGlUFWEBMk: +- Montreal Canadiens +- Montreal +- Canadiens +https://youtu.be/fHTehdlMwWQ: +- Nashville Predators +- Nashville +- Predators +https://youtu.be/4q0eNg-AbrQ: +- New Jersey Devils +- New Jersey +- Devils +https://youtu.be/ZC514zGrL80: +- New York +- Islanders +- New York Islanders +https://youtu.be/Zzfks2A2n38: +- New York Rangers +- New York +- Rangers +https://youtu.be/fHlWxPRNVBc: +- Ottawa Senators +- Ottawa +- Senators +https://youtu.be/0LsXpMiVD1E: +- Philadelphia Flyers +- Philadelphia +- Flyers +https://youtu.be/Llw3adcNuzI: +- Pittsburgh Penguins +- Pittsburgh +- Penguins +https://youtu.be/NZqSBkmpbLw: +- San Jose Sharks +- San Jose +- Sharks +https://youtu.be/Q23TDOJsY1s: +- St. Louis Blues +- St. Louis +- Blues +https://youtu.be/bdhDXxM20iM: +- Tampa Bay Lightning +- Tampa Bay +- Lightning +https://youtu.be/2cyekaemZgs: +- Toronto Maple Leafs +- Toronto +- Maple Leafs +https://youtu.be/CPozN-ZHpAo: +- Vancouver +- Canucks +- Vancouver Canucks +https://youtu.be/zheGI316WXg: +- Vegas Golden Knights +- Vegas +- Golden Knights +https://youtu.be/BH_CC1RxtfU: +- Washington Capitals +- Washington +- Capitals +https://youtu.be/3gcahU_i9WE: +- Winnipeg Jets +- Winnipeg +- Jets diff --git a/ccrole/ccrole.py b/ccrole/ccrole.py index 3f3be5e..2d662d3 100644 --- a/ccrole/ccrole.py +++ b/ccrole/ccrole.py @@ -1,10 +1,13 @@ import asyncio +import json import re from typing import Any import discord +from discord.ext.commands.view import StringView from redbot.core import Config, checks from redbot.core import commands +from redbot.core.bot import Red from redbot.core.utils.chat_formatting import pagify, box Cog: Any = getattr(commands, "Cog", object) @@ -16,7 +19,7 @@ class CCRole(Cog): Creates commands used to display text and adjust roles """ - def __init__(self, bot): + def __init__(self, bot: Red): self.bot = bot self.config = Config.get_conf(self, identifier=9999114111108101) default_guild = {"cmdlist": {}, "settings": {}} @@ -115,9 +118,7 @@ class CCRole(Cog): return # Selfrole - await ctx.send( - "Is this a targeted command?(yes/no)\nNo will make this a selfrole command" - ) + await ctx.send("Is this a targeted command?(yes/no)\nNo will make this a selfrole command") try: answer = await self.bot.wait_for("message", timeout=120, check=check) @@ -235,24 +236,41 @@ class CCRole(Cog): for page in pagify(cmd_list, delims=[" ", "\n"]): await ctx.author.send(box(page)) await ctx.send("Command list DM'd") - - @commands.Cog.listener() - async def on_message(self, message): - if len(message.content) < 2 or message.guild is None: - return - guild = message.guild - try: - prefix = await self.get_prefix(message) - except ValueError: - return + @commands.Cog.listener() + async def on_command_error(self, ctx: commands.Context, exception): + cmd = ctx.invoked_with + guild = ctx.guild + message = ctx.message cmdlist = self.config.guild(guild).cmdlist - cmd = message.content[len(prefix) :].split()[0].lower() + # cmd = message.content[len(prefix) :].split()[0].lower() cmd = await cmdlist.get_raw(cmd, default=None) if cmd is not None: - await self.eval_cc(cmd, message) + await self.eval_cc(cmd, message, ctx) + + # @commands.Cog.listener() + # async def on_message(self, message: discord.Message): + # if len(message.content) < 2 or message.guild is None: + # return + # + # ctx: commands.Context = await self.bot.get_context(message) + # cmd = ctx.invoked_with + # guild = message.guild + # # try: + # # prefix = await self.get_prefix(message) + # # except ValueError: + # # return + # + # # prefix = ctx.prefix + # + # cmdlist = self.config.guild(guild).cmdlist + # # cmd = message.content[len(prefix) :].split()[0].lower() + # cmd = await cmdlist.get_raw(cmd, default=None) + # + # if cmd is not None: + # await self.eval_cc(cmd, message, ctx) async def _get_roles_from_content(self, ctx, content): content_list = content.split(",") @@ -284,7 +302,7 @@ class CCRole(Cog): return p raise ValueError - async def eval_cc(self, cmd, message): + async def eval_cc(self, cmd, message, ctx): """Does all the work""" if cmd["proles"] and not ( set(role.id for role in message.author.roles) & set(cmd["proles"]) @@ -292,16 +310,45 @@ class CCRole(Cog): return # Not authorized, do nothing if cmd["targeted"]: - try: - target = discord.utils.get( - message.guild.members, mention=message.content.split(maxsplit=1)[1] - ) - except IndexError: # .split() return list of len<2 + # try: + # arg1 = message.content.split(maxsplit=1)[1] + # except IndexError: # .split() return list of len<2 + # target = None + # else: + # target = discord.utils.get( + # message.guild.members, mention=arg1 + # ) + + view: StringView = ctx.view + view.skip_ws() + + guild: discord.Guild = ctx.guild + # print(f"Guild: {guild}") + + target = view.get_quoted_word() + # print(f"Target: {target}") + + if target: + # target = discord.utils.get(guild.members, mention=target) + try: + target = await commands.MemberConverter().convert(ctx, target) + except commands.BadArgument: + target = None + else: target = None + # try: + # arg1 = ctx.args[1] + # except IndexError: # args is list of len<2 + # target = None + # else: + # target = discord.utils.get( + # message.guild.members, mention=arg1 + # ) + if not target: out_message = "This custom command is targeted! @mention a target\n`{} <target>`".format( - message.content.split()[0] + ctx.invoked_with ) await message.channel.send(out_message) return diff --git a/qrinvite/qrinvite.py b/qrinvite/qrinvite.py index 0960c14..67d895b 100644 --- a/qrinvite/qrinvite.py +++ b/qrinvite/qrinvite.py @@ -60,7 +60,7 @@ class QRInvite(Cog): ) return - eextention = pathlib.Path(image_url).parts[-1].replace(".", "?").split("?")[1] + extension = pathlib.Path(image_url).parts[-1].replace(".", "?").split("?")[1] path: pathlib.Path = cog_data_path(self) image_path = path / (ctx.guild.icon + "." + extension) @@ -72,9 +72,15 @@ class QRInvite(Cog): file.write(image) if extension == "webp": - new_path = convert_png(str(image_path)) - else: + new_path = convert_webp_to_png(str(image_path)) + elif extension == "gif": + await ctx.send("gif is not supported yet, stay tuned") + return + elif extension == "png": new_path = str(image_path) + else: + await ctx.send(f"{extension} is not supported yet, stay tuned") + return myqr.run( invite, @@ -89,7 +95,7 @@ class QRInvite(Cog): await ctx.send(file=discord.File(png_fp.read(), "qrcode.png")) -def convert_png(path): +def convert_webp_to_png(path): im = Image.open(path) im.load() alpha = im.split()[-1] diff --git a/scp/scp.py b/scp/scp.py index 9827dad..7ffba0c 100644 --- a/scp/scp.py +++ b/scp/scp.py @@ -25,7 +25,7 @@ class SCP(Cog): msg = "http://www.scp-wiki.net/scp-{:03}".format(num) c = discord.Color.green() else: - msg = "You must specify a number between 1 and 4999." + msg = "You must specify a number between 1 and 5999." c = discord.Color.red() if await ctx.embed_requested():