The first bot version
Can connect to voice, recognize youtube.com and youtu.be urls and has cool gifs
This commit is contained in:
parent
8a2209346b
commit
3b0f478bb5
4 changed files with 92 additions and 0 deletions
1
.env.example
Normal file
1
.env.example
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
DISCORD_TOKEN=YourDiscordToken
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -160,3 +160,6 @@ cython_debug/
|
||||||
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
||||||
#.idea/
|
#.idea/
|
||||||
|
|
||||||
|
# Emacs
|
||||||
|
\#*#
|
||||||
|
*~
|
||||||
85
main.py
Normal file
85
main.py
Normal file
|
|
@ -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 <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
#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)
|
||||||
3
requirements.txt
Normal file
3
requirements.txt
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
discord.py[voice]
|
||||||
|
python-dotenv
|
||||||
|
PyNaCl
|
||||||
Loading…
Add table
Reference in a new issue