Discord.py Bot

MusicPlayerBot

napravi discord bota muzika ja ukucam pesmu muziku ime sa yt i kad ukucam pusti se muzika i peva voice imam skip stop i tako coamnde

main.py
import asyncio
import logging
import os

import discord
from discord.ext import commands

from config import settings
from database import Database

logging.basicConfig(
    level=logging.INFO,
    format="[%(asctime)s] [%(levelname)-8s] %(name)s: %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
    handlers=[logging.StreamHandler(), logging.FileHandler("bot.log", encoding="utf-8")],
)
logger = logging.getLogger("bot")

TOKEN = os.environ.get("DISCORD_TOKEN") or os.environ.get("BOT_TOKEN") or os.environ.get("TOKEN")

intents = discord.Intents.default()
intents.message_content = True
intents.members = True
intents.voice_states = True


class MusicBot(commands.Bot):
    def __init__(self) -> None:
        super().__init__(command_prefix="!", intents=intents)
        self.settings = settings
        self.database = Database(settings.database_path)

    async def setup_hook(self) -> None:
        await self.database.initialize()
        for extension in ("cogs.music", "cogs.errors"):
            await self.load_extension(extension)

    async def close(self) -> None:
        await self.database.close()
        await super().close()


bot = MusicBot()


@bot.event
async def on_ready() -> None:
    try:
        synced = await bot.tree.sync()
        logger.info("Slash komande sinhronizovane: %s", len(synced))
    except discord.DiscordException:
        logger.exception("Sinhronizacija slash komandi nije uspela")
    logger.info("Bot online kao %s | %s servera", bot.user, len(bot.guilds))


async def main() -> None:
    if not TOKEN:
        raise RuntimeError("Nedostaje Discord token u hosting environment promenljivama.")
    async with bot:
        await bot.start(TOKEN)