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.
|
||||
#.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