From 8496b23cf940d56fa9f600e94bb083f4193eb85f Mon Sep 17 00:00:00 2001 From: Mylloon Date: Mon, 13 Sep 2021 22:19:27 +0200 Subject: [PATCH] Adding new Discord Feature: Party Games --- requirements.txt | 3 +- src/cogs/partygames.py | 93 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 src/cogs/partygames.py diff --git a/requirements.txt b/requirements.txt index 216d93b..a6b7ce5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,4 +6,5 @@ lyricsgenius==3.0.1 # lyrics feedparser==6.0.8 # rss feed (news) discord-py-slash-command==3.0.1 # slash commands python_dotenv==0.19.0 # using .env file -wavelink==0.9.10 # music | to know the version of lavalink used, see the repo +wavelink==0.9.10 # music | to know the version of lavalink used, see the repo +discord-together==1.1.1 # for the party games diff --git a/src/cogs/partygames.py b/src/cogs/partygames.py new file mode 100644 index 0000000..6be2b9d --- /dev/null +++ b/src/cogs/partygames.py @@ -0,0 +1,93 @@ +import discord +from discord.ext import commands +import discordTogether +from discord_slash import cog_ext +from discordTogether import DiscordTogether +from utils.core import mySendHidden + +def setup(client): + """Adding Cog to bot""" + client.add_cog(PartyGames(client)) + +class PartyGames(commands.Cog, name="Partygames"): + """Discord beta "party games" dispo uniquement sur PC.""" + def __init__(self, client): + self.client = client + self.togetherControl = DiscordTogether(client) + self.appList = { # appNameForDiscord - (AppNameForConsumer, AppImage) + "youtube": ("Youtube Together", "https://logo-logos.com/wp-content/uploads/2016/11/YouTube_icon_logo.png"), + "poker": ("Poker Night", None), + "chess": ("Chess in the Park", None), + "betrayal": ("Betrayal.io", None), + "fishing": ("Fishington.io", None) + } + + @commands.command(name='app', hidden = True) + async def linkCreator(self, ctx, app: str = None, fromSlash = None): + """Renvoie l'embed de l'app selectionée\n ➡ Syntaxe: {PREFIX}app """ + if app == None: + return await mySendHidden(ctx, fromSlash, f"Aucune application renseignée, merci d'en renseigner une (`{ctx.prefix}app `).") + appName = app + appImage = None + try: + appName = self.appList[app][0] + appImage = self.appList[app][1] + except: + pass + try: + link = await self.togetherControl.create_link(ctx.author.voice.channel.id, app) + except AttributeError: + return await mySendHidden(ctx, fromSlash, "Vous devez d'abord être dans un salon vocal avant de faire cette commande.") + except discordTogether.errors.InvalidActivityChoice: + return await mySendHidden(ctx, fromSlash, "Cette application n'est pas reconnu par Discord.") + embed = discord.Embed(title = "Party Games", description = f"[Lancer *{appName}*]({link})") + if appImage: + embed.set_thumbnail(url = appImage) + embed.set_footer(text = "Ne fonctionne que sur PC pour le moment.") + return await ctx.send(embed = embed) + + + @commands.command(name='youtube') + async def _youtube(self, ctx, fromSlash = None): + """Créer une instance "Youtube Together".""" + return await ctx.invoke(self.client.get_command("app"), "youtube", fromSlash) + @cog_ext.cog_slash(name="youtube", description = "Créer une instance \"Youtube Together\".") + async def __youtube(self, ctx): + """Slash command""" + return await self._youtube(ctx, True) + + @commands.command(name='poker') + async def _poker(self, ctx, fromSlash = None): + """Créer une instance "Poker Night".""" + return await ctx.invoke(self.client.get_command("app"), "poker", fromSlash) + @cog_ext.cog_slash(name="poker", description = "Créer une instance \"Poker Night\".") + async def __poker(self, ctx): + """Slash command""" + return await self._poker(ctx, True) + + @commands.command(name='chess') + async def _chess(self, ctx, fromSlash = None): + """Créer une instance "Chess in the Park".""" + return await ctx.invoke(self.client.get_command("app"), "chess", fromSlash) + @cog_ext.cog_slash(name="chess", description = "Créer une instance \"Chess in the Park\".") + async def __chess(self, ctx): + """Slash command""" + return await self._chess(ctx, True) + + @commands.command(name='betrayal') + async def _betrayal(self, ctx, fromSlash = None): + """Créer une instance "Betrayal.io".""" + return await ctx.invoke(self.client.get_command("app"), "betrayal", fromSlash) + @cog_ext.cog_slash(name="betrayal", description = "Créer une instance \"Betrayal.io\".") + async def __betrayal(self, ctx): + """Slash command""" + return await self._betrayal(ctx, True) + + @commands.command(name='fishing') + async def _fishing(self, ctx, fromSlash = None): + """Créer une instance "Fishington.io".""" + return await ctx.invoke(self.client.get_command("app"), "fishing", fromSlash) + @cog_ext.cog_slash(name="fishing", description = "Créer une instance \"Fishington.io\".") + async def __fishing(self, ctx): + """Slash command""" + return await self._fishing(ctx, True)