Compare commits

45 Commits

Author SHA1 Message Date
Lukas Blacha
a3c818a963 Changed version and branch (0.2, main) 2023-02-08 13:16:51 +01:00
Lukas Blacha
be24384610 Added Youtube Search-Command 2023-02-08 13:14:23 +01:00
Lukas Blacha
e1f1fedfdf Added youtube_search method 2023-02-08 12:54:36 +01:00
Lukas Blacha
4aabde261b Added youtube_search method 2023-02-08 12:48:01 +01:00
Lukas Blacha
53f175379f Added youtube_search method 2023-02-08 12:47:08 +01:00
Lukas Blacha
6993fde7d8 Changed Google-Search to Youtube (fix) 2023-02-08 12:42:49 +01:00
Lukas Blacha
bc8b212504 Changed Google-Search to Youtube (fix) 2023-02-08 12:42:14 +01:00
Lukas Blacha
e51f75c57c Changed Google-Search to Youtube (fix) 2023-02-08 12:39:56 +01:00
Lukas Blacha
08934559b8 Changed Google-Search to Youtube (fix) 2023-02-08 12:16:41 +01:00
Lukas Blacha
93fdfb1f77 Changed Google-Search to Youtube (fix) 2023-02-08 12:15:27 +01:00
Lukas Blacha
9b1e473ec1 Changed Google-Search to Youtube (fix) 2023-02-08 12:15:03 +01:00
Lukas Blacha
7ffc356b1c Changed Google-Search to Youtube (fix) 2023-02-08 12:14:00 +01:00
Lukas Blacha
71bd1f6ae5 Changed Google-Search to Youtube (fix) 2023-02-08 12:11:04 +01:00
Lukas Blacha
5d58d05668 Changed Google-Search to Youtube 2023-02-08 12:10:18 +01:00
Lukas Blacha
c1e731aa4d Added branch variable 2023-02-08 11:45:52 +01:00
Lukas Blacha
c08bad409f Added Google-Command 2023-02-08 11:42:24 +01:00
Lukas Blacha
fadb42bbf6 Removed help-Command 2023-02-07 23:18:57 +01:00
Lukas Blacha
5fddad561d Removed help-Command 2023-02-07 23:16:02 +01:00
Lukas Blacha
651cf70885 Removed help-Command 2023-02-07 23:14:07 +01:00
Lukas Blacha
02609a65e5 Added Shutdown-Command with cleanup 2023-02-07 23:12:03 +01:00
Lukas Blacha
837686c71d Added Shutdown-Command with cleanup 2023-02-07 23:10:05 +01:00
Lukas Blacha
6b8a8a0dfc Added Shutdown-Command with cleanup 2023-02-07 23:05:31 +01:00
Lukas Blacha
9540f37d06 Added Shutdown-Command 2023-02-07 23:02:51 +01:00
Lukas Blacha
f87f878ca4 Added threads flag 2023-02-07 22:58:10 +01:00
Gitea
52cf259c20 Made the bot working again... 2023-02-07 21:55:41 +00:00
Gitea
3893e6ddc0 Removed maxrate flag 2023-02-07 21:48:25 +00:00
Gitea
de2779b61f Removed OPUS decoder 2023-02-07 21:47:20 +00:00
Lukas Blacha
6070780b0a Added threads flag 2023-02-07 22:45:19 +01:00
Lukas Blacha
c2e3081995 Added threads flag 2023-02-07 22:42:04 +01:00
Lukas Blacha
7e0a927c2b Added threads flag 2023-02-07 22:35:48 +01:00
Lukas Blacha
ba14c23ed9 Switched back to ffmepgPCM 2023-02-07 22:32:28 +01:00
Lukas Blacha
e770272bc4 Switched back to ffmepgPCM 2023-02-07 22:31:08 +01:00
Lukas Blacha
f6439245c6 Switched back to ffmepgPCM 2023-02-07 22:27:45 +01:00
Lukas Blacha
3496e0e5a7 Switched to OpusVoice 2023-02-07 22:24:06 +01:00
Lukas Blacha
22e74ff829 Switched to OpusVoice 2023-02-07 22:23:01 +01:00
Lukas Blacha
467f2dd00b Switched to OpusVoice 2023-02-07 22:21:01 +01:00
Lukas Blacha
dec4be3d1b Switched to OpusVoice 2023-02-07 22:14:00 +01:00
Lukas Blacha
7a09c752e9 Switched to OpusVoice 2023-02-07 22:09:38 +01:00
Lukas Blacha
93ec9ca2ec Switched to OpusVoice 2023-02-07 22:08:20 +01:00
Lukas Blacha
9f61462777 Switched to OpusVoice 2023-02-07 22:07:41 +01:00
Lukas Blacha
1d5e32eec0 Switched to OpusVoice 2023-02-07 22:04:51 +01:00
Lukas Blacha
b286d8338e Switched to OpusVoice 2023-02-07 22:01:19 +01:00
Lukas Blacha
9735a408c9 Added bot=True, reconnect=True 2023-02-07 21:37:27 +01:00
Lukas
e9bcaa210c Deleted compiled version 2023-02-07 15:42:23 +00:00
Lukas Blacha
ede2a02bb7 Fixes 2023-02-07 16:38:48 +01:00
3 changed files with 66 additions and 19 deletions

View File

@@ -1,9 +1,13 @@
import asyncio
import re
from datetime import timedelta
import aiohttp
import yt_dlp
import discord
import logging
import argparse
import os
from discord.ext import commands
from discord import Embed
@@ -13,10 +17,12 @@ banner = """
| | | | \__ \ | ( _____| | | ( | |
_| _| \__,_| ____/ _| \___| ____/ \___/ \__|
"""
version = "0.1"
version = "0.2"
branch = "main"
success = "**Success ✅**\n"
warning = "**Warning **\n"
error = "**Error ❗️**\n"
cache_dir = "cache"
logging.basicConfig(level=logging.INFO)
parser = argparse.ArgumentParser()
parser.add_argument("-t", "--token", help="Bot TOKEN")
@@ -33,7 +39,7 @@ else:
ytdl_format_options = {
"format": "bestaudio/mp3",
"outtmpl": "cache/%(extractor)s-%(id)s-%(title)s.mp3",
"outtmpl": f"{cache_dir}/%(extractor)s-%(id)s-%(title)s.mp3",
"restrictfilenames": True,
"noplaylist": True,
"nocheckcertificate": True,
@@ -76,7 +82,20 @@ else:
data = data["entries"][0]
filename = data["url"] if stream else ytdl.prepare_filename(data)
return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data)
return cls(discord.FFmpegPCMAudio(source=filename, executable="ffmpeg", pipe=False, stderr=False,
before_options="-threads 2", options=ffmpeg_options), data=data)
async def youtube_search(search: str):
p = {"search_query": search}
# Spoof a user agent header or the request will immediately fail
h = {"User-Agent": "Mozilla/5.0"}
async with aiohttp.ClientSession() as client:
async with client.get("https://www.youtube.com/results", params=p, headers=h) as resp:
dom = await resp.text()
found = re.findall(r"watch\?v=(\S{11})", dom)[0]
url = f"https://www.youtube.com/watch?v={found}"
return url
intents = discord.Intents.default()
@@ -85,33 +104,44 @@ else:
bot = commands.Bot(
command_prefix=commands.when_mentioned_or("!"),
description="Relatively simple music bot example",
intents=intents,
intents=intents, help_command=None
)
@bot.event
async def on_ready():
print(banner)
print(f"Bot Version: {version}")
print(f"Bot Version: {version} ({branch})")
print(f"Bot: {bot.user} (ID: {bot.user.id})")
print(
f"Invitation LINK: https://discord.com/api/oauth2/authorize?client_id={bot.user.id}&permissions=968552344896&scope=bot%20applications.commands")
print("------")
@bot.command(name="shutdown")
@commands.is_owner()
async def _shutdown(ctx):
files = os.listdir(cache_dir)
async with ctx.channel.typing():
for file in files:
os.remove(f"{cache_dir}/{file}")
await ctx.send(f"{warning}Cleaned up {len(files)} Files...\n\n{success}Shutting down...")
await bot.close()
@bot.slash_command(name="join", description="Summon the bot into your channel")
async def join(ctx: commands.Context):
try:
channel = ctx.author.voice.channel
if channel is None:
await ctx.send(f"{error}You are not in a voice-channel! Could not join...")
if ctx.voice_client is not None:
return await ctx.voice_client.move_to(channel)
await ctx.respond(f"{success}Connected to `{channel.name}`")
await channel.connect()
except Exception as err:
print(err)
if channel is None:
await ctx.send(f"{error}You are not in a voice-channel! Could not join...")
if ctx.voice_client is not None:
return await ctx.voice_client.move_to(channel)
await ctx.respond(f"{success}Connected to `{channel.name}`")
await channel.connect()
@bot.slash_command(name="nowplaying", descriprion="Show details what the bot is currently playing")
@@ -184,8 +214,25 @@ else:
await ctx.voice_client.disconnect(force=True)
@bot.slash_command(name="youtube", description="Searches YouTube for a given string and plays the first result")
async def youtube(ctx, *, search: str):
url = await youtube_search(search=search)
async with ctx.typing():
await ctx.respond("🤖 Your song is queued for download... please wait ", ephemeral=True)
try:
player = await YTDLSource.from_url(url, loop=bot.loop)
ctx.voice_client.play(
player, after=lambda e: print(f"Player error: {e}") if e else None
)
except discord.HTTPException as err:
raise commands.CommandError(err)
finally:
await ctx.send(f"{success}Now playing: `{player.title}`\nRequested by {ctx.author.mention}")
@play.before_invoke
@stream.before_invoke
@youtube.before_invoke
async def ensure_voice(ctx: commands.Context):
if ctx.voice_client is None:
if ctx.author.voice:
@@ -200,15 +247,16 @@ else:
async def on_application_command_error(ctx, error):
print(f"[on_application_command_error]\n{ctx.author}\n{error}")
if isinstance(error, discord.ext.commands.CommandError):
cool_down_time = int(error.cooldown.get_retry_after())
td = timedelta(seconds=cool_down_time)
embed = Embed(title=f"{warning}Dieser Command befindet sich im Cool Down!\n Versuche es in `{td}` nochmal!",
embed = Embed(title=f"{warning}{error}",
color=15158332)
elif isinstance(error, discord.ext.commands.CommandOnCooldown):
cool_down_time = int(error.cooldown.get_retry_after())
td = timedelta(seconds=cool_down_time)
embed = Embed(title=f"{warning}Dieser Command befindet sich im Cool Down!\n Versuche es in `{td}` nochmal!",
color=15158332)
elif isinstance(error, discord.ext.commands.is_owner()):
embed = Embed(title=f"{warning}{error}",
color=15158332)
else:
embed = Embed(title=f"{error}", color=15158332)
await ctx.respond(embed=embed)
@@ -220,5 +268,4 @@ else:
embed = Embed(title=f"{error}", color=15158332)
await ctx.send(embed=embed)
bot.run(args.token)
bot.run(token=args.token, reconnect=True)

Binary file not shown.

View File

@@ -10,7 +10,7 @@ Simple Music-Bot for Discord written in Python with <3
## How to start
1. Clone the repository
2. cd into it
3. Run the **compiled** version: python3 Music-Bot.pyc -t TOKEN
3. Run : python3 Music-Bot.pyc -t TOKEN
4. Click on the invitation-Link in the terminal
5. DONE <3
@@ -27,4 +27,4 @@ Simple Music-Bot for Discord written in Python with <3
- Permissions-System
- Song-Queue
- SoundCloud support
- Spotify Support
- Spotify Support