2023-05-06 01:16:26 +00:00
|
|
|
from os import mkdir, path
|
|
|
|
|
2023-04-23 15:38:19 +00:00
|
|
|
from discord import Bot, Intents
|
2023-05-06 01:16:26 +00:00
|
|
|
from toml import TomlDecodeError
|
2023-04-23 15:38:19 +00:00
|
|
|
|
2023-05-06 01:16:26 +00:00
|
|
|
from cog import Greetings, Music
|
2023-04-23 15:38:19 +00:00
|
|
|
from config import Config
|
2023-05-16 23:04:16 +00:00
|
|
|
from framework import DiscordPlayer, Downloader, Redis, Spotify, Youtube
|
2023-04-23 22:48:31 +00:00
|
|
|
from logger import Logger
|
2023-05-16 23:04:16 +00:00
|
|
|
from service import FileManager, PlaybackManager, QueueManager
|
2023-04-27 23:19:18 +00:00
|
|
|
from usecase import Sources
|
2023-04-23 15:38:19 +00:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
# Read Config
|
|
|
|
try:
|
|
|
|
config = Config("config.toml")
|
|
|
|
except TomlDecodeError as error:
|
|
|
|
print("Config/DecodeError : %s" % error)
|
2023-04-23 22:48:31 +00:00
|
|
|
exit(1)
|
|
|
|
except KeyError as error:
|
|
|
|
print("Config/KeyError : %s" % error)
|
2023-04-23 15:38:19 +00:00
|
|
|
exit(2)
|
|
|
|
|
2023-05-06 01:16:26 +00:00
|
|
|
if not path.isdir(config.downloadDirectory):
|
|
|
|
mkdir(config.downloadDirectory)
|
|
|
|
|
2023-04-23 15:38:19 +00:00
|
|
|
# Set Logger
|
2023-04-23 22:48:31 +00:00
|
|
|
logger = Logger(config.logging)()
|
|
|
|
|
|
|
|
# Redis Client
|
2023-05-06 01:16:26 +00:00
|
|
|
redis = Redis(logger, config.redis, config.appName)
|
2023-04-27 23:19:18 +00:00
|
|
|
|
2023-05-16 23:04:16 +00:00
|
|
|
# Discord Player
|
|
|
|
discordPlayer = DiscordPlayer()
|
|
|
|
|
|
|
|
# Playback Manager
|
|
|
|
playbackManager = PlaybackManager(discordPlayer)
|
|
|
|
|
2023-04-27 23:19:18 +00:00
|
|
|
# Queue Manager
|
|
|
|
queueManager = QueueManager(redis)
|
|
|
|
|
|
|
|
# Bot Init
|
|
|
|
bot = Bot(intents=Intents.default())
|
2023-04-23 15:38:19 +00:00
|
|
|
|
2023-04-27 23:19:18 +00:00
|
|
|
# Youtube Client
|
2023-05-06 01:16:26 +00:00
|
|
|
youtube = Youtube(bot.loop, config.youtube, config.downloadDirectory)
|
|
|
|
|
|
|
|
# Spotify Client
|
|
|
|
spotify = Spotify(bot.loop, config.spotify)
|
|
|
|
|
|
|
|
# Downloader
|
|
|
|
downloader = Downloader(bot.loop)
|
|
|
|
|
|
|
|
# File Manager
|
|
|
|
fileManager = FileManager(youtube, downloader, config.downloadDirectory)
|
2023-04-27 23:19:18 +00:00
|
|
|
|
|
|
|
# Sources
|
2023-05-06 01:16:26 +00:00
|
|
|
sources = Sources(fileManager, youtube, spotify)
|
2023-04-27 23:19:18 +00:00
|
|
|
|
|
|
|
# Add Cogs
|
2023-04-23 22:48:31 +00:00
|
|
|
bot.add_cog(Greetings(bot, logger, redis))
|
2023-05-16 23:04:16 +00:00
|
|
|
bot.add_cog(Music(bot, logger, queueManager, playbackManager, sources))
|
2023-04-27 23:19:18 +00:00
|
|
|
|
|
|
|
# Run
|
2023-04-23 15:38:19 +00:00
|
|
|
bot.run(config.discord.token)
|