diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ea722b1 --- /dev/null +++ b/.env.example @@ -0,0 +1 @@ +DISCORD_TOKEN=YourDiscordToken \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5d381cc..a034cac 100644 --- a/.gitignore +++ b/.gitignore @@ -160,3 +160,6 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +# Emacs +\#*# +*~ \ No newline at end of file diff --git a/main.py b/main.py new file mode 100644 index 0000000..e7e3d16 --- /dev/null +++ b/main.py @@ -0,0 +1,85 @@ +#Polarobot is a discord bot designed mainly to play music +#Copyright (C) 2022 Louis Lacoste + +#This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +#This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . + +#Also add information on how to contact you by electronic and paper mail. + +import os, sys +import re +import random +import discord +from discord.ext import commands +from discord.utils import get + +from dotenv import load_dotenv +load_dotenv() +TOKEN = os.getenv('DISCORD_TOKEN') + +intents = discord.Intents.default() +intents.message_content = True +intents.members = True + +bot = commands.Bot(command_prefix="!p ", intents=intents) + +youtubeUrlRegex = "https?:\/\/(www\.)?(youtu|youtube)\.(com|be)" + +def is_a_youtube_url(url: str): + return bool(re.match(youtubeUrlRegex, url)) + +def random_playing_gif(): + gifList = ["https://media.tenor.com/Ra6rkhDtYPwAAAAd/anime-dj.gif", + "https://media.tenor.com/7o_Y0qCQaJQAAAAM/howan-anime.gif", + "https://media.tenor.com/_OA-44hy1-4AAAAM/anime-music.gif", + "https://media.tenor.com/rJpCgvQJgsEAAAAj/music.gif", + "https://media.tenor.com/sEKdNnp9tmoAAAAM/music-dog.gif", + "https://media.tenor.com/6z00WD2k8foAAAAM/boombox-jamming.gif"] + return random.choice(gifList) + +@bot.event +async def on_ready(): + print("Starting") + await bot.change_presence(activity= discord.Activity(type = discord.ActivityType.playing, name = 'PolaroBot | !p to call')) + +def restart_bot(): + os.execv(sys.executable, ['python'] + sys.argv) + +@bot.command(aliases=['reboot']) +async def restart(ctx): + """Reboot bot""" + print("Rebooting...") + embedDeco=discord.Embed(title="~~⚗️ ModBot~~ PolaroBot Statut.. 🛠️ ", description="""~~Modbot~~ PolaroBot Redémarre : Patientez quelques secondes.. """, color=0xF1D50E) + await ctx.send(embed=embedDeco) + restart_bot() + +@bot.command(aliases=['play_music'],pass_context=True) +async def play(ctx, url: str): + """Playing a song""" + if is_a_youtube_url(url): + embedPlaying=discord.Embed(title="P0l4r0B0T is playing", description=f"Je sais pas encore jouer de musique mais tkt frère, vla ton URL mon reuf : {url}") + embedPlaying.set_image(url=random_playing_gif()) + else: + embedPlaying=discord.Embed(title="PolaroBot veut casser ta gueule", description=f"FREROT ?! C'EST QUOI {url} ? C'EST DE LA MERDE ! !") + embedPlaying.set_image(url="https://media.tenor.com/wQH1Lm24wLwAAAAM/de-la-merde-jean.gif") + await ctx.send(embed=embedPlaying) + +@bot.command() +async def join(ctx): + channel = ctx.author.voice.channel + print(f"Voice : connecting to {channel.id}") + bot.voice_channel = await channel.connect() + +@bot.command() +async def leave(ctx): + print(f"Voice : leaving {bot.voice_channel.id}") + await ctx.voice_client.disconnect() + +@bot.event +async def on_command_error(ctx, error): + channel = ctx.message.channel + if isinstance(error, commands.MissingRequiredArgument): + await ctx.send("Missing required argument: {}".format(error.param)) + elif isinstance(error, commands.BadArgument): + ctx.send(channel, "Could not parse commands argument.") +bot.run(TOKEN) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..058cec3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +discord.py[voice] +python-dotenv +PyNaCl