diff --git a/bot/__init__.py b/bot/__init__.py new file mode 100644 index 0000000..c9dd72f --- /dev/null +++ b/bot/__init__.py @@ -0,0 +1,17 @@ +import discord + +__version__ = "1.0.0" +__author__ = "Kartoniarz" + + +class Bot(discord.Bot): + def __init__(self): + intents = discord.Intents.default() + intents.message_content = True + intents.members = True + + super().__init__(intents=intents) + + async def on_ready(self): + print(f"Zalogowano jako {self.user} (ID: {self.user.id})") + print(f" Pycord {discord.__version__} | Bot v{__version__}") diff --git a/bot/cogs/__init__.py b/bot/cogs/__init__.py new file mode 100644 index 0000000..001d854 --- /dev/null +++ b/bot/cogs/__init__.py @@ -0,0 +1,7 @@ +import os + +def setup(bot): + for filename in os.listdir(os.path.dirname(__file__)): + if filename.endswith(".py") and not filename.startswith("_"): + bot.load_extension(f"bot.cogs.{filename[:-3]}") + print(f"ZaƂadowano: {filename[:-3]}") diff --git a/bot/cogs/mateusz.py b/bot/cogs/mateusz.py new file mode 100644 index 0000000..03af15e --- /dev/null +++ b/bot/cogs/mateusz.py @@ -0,0 +1,19 @@ +import discord +from ..utils import helpers +from discord.ext import commands + + +class Simp(commands.Cog): + def __init__(self, bot: discord.Bot): + self.bot = bot + + @discord.slash_command(description="Nie, nie jestem pantoflem") + async def pantofel(self, ctx: discord.ApplicationContext, url: str): + await ctx.defer() + + filename = helpers.download_video(url) + await ctx.respond(file=discord.File(filename)) + + +def setup(bot: discord.Bot): + bot.add_cog(Simp(bot)) diff --git a/bot/utils/helpers.py b/bot/utils/helpers.py new file mode 100644 index 0000000..5e74ea3 --- /dev/null +++ b/bot/utils/helpers.py @@ -0,0 +1,20 @@ +import os +import yt_dlp + + +def download_video(yt_url: str) -> str: + BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + DOWNLOADS = os.path.join(BASE_DIR, "downloads") + + ydl_opts = { + 'format': 'bestvideo+bestaudio/best', + 'merge_output_format': 'mp4', + 'outtmpl': f'{DOWNLOADS}/%(title)s.%(ext)s', + } + + with yt_dlp.YoutubeDL(ydl_opts) as ydl: + os.makedirs(DOWNLOADS, exist_ok=True) + info = ydl.extract_info(yt_url, download=True) + filename = ydl.prepare_filename(info) + + return filename diff --git a/main.py b/main.py new file mode 100644 index 0000000..edc7b64 --- /dev/null +++ b/main.py @@ -0,0 +1,13 @@ +import asyncio +import os +from dotenv import load_dotenv +from bot import Bot + +load_dotenv() + +asyncio.set_event_loop(asyncio.new_event_loop()) +bot = Bot() + +bot.load_extension("bot.cogs") + +bot.run(os.getenv("TOKEN"))