From 0bff043d6e11f033288277c4bc0c4f3f042dd0d8 Mon Sep 17 00:00:00 2001 From: HappyTanuki Date: Sat, 30 Aug 2025 02:51:58 +0900 Subject: [PATCH] =?UTF-8?q?ytdlp=20=EC=9E=90=EB=8F=99=20=EB=8B=A4=EC=9A=B4?= =?UTF-8?q?=EB=A1=9C=EB=93=9C=20=EB=B0=8F=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/c_cpp_properties.json | 5 +- .vscode/settings.json | 49 +--- CMakeLists.txt | 28 +- include/Audio/MusicPlayManager.hpp | 67 ----- include/Audio/MusicPlayerThreadManager.hpp | 18 -- include/BumbleBee.hpp | 54 ---- include/Commands/BumbleBeeCommand.hpp | 69 ----- include/Queue/MusicQueue.hpp | 51 ---- include/Queue/MusicQueueElement.hpp | 20 -- include/Settings/SettingsManager.hpp | 34 --- include/Utils/AsyncDownloadManager.hpp | 56 ---- include/Utils/ConsoleUtils.hpp | 46 ---- .../Utils/QueuedMusicListEmbedProvider.hpp | 77 ------ include/Utils/VersionsCheckUtils.hpp | 83 ------ include/precomp.h | 23 ++ include/utils/console.h | 38 +++ include/utils/file_downloader.h | 10 + include/utils/update_checker.h | 14 + src/Audio/MusicPlayManager.cpp | 138 ---------- src/BumbleBee.cpp | 80 ------ src/Commands/Delete.cpp | 32 --- src/Commands/Leave.cpp | 23 -- src/Commands/Play.cpp | 240 ------------------ src/Commands/Queue.cpp | 73 ------ src/Commands/Repeat.cpp | 16 -- src/Commands/Shuffle.cpp | 11 - src/Commands/Skip.cpp | 19 -- src/Manager/ThreadManager.cpp | 0 src/Queue/MusicQueue.cpp | 115 --------- src/Settings/SettingsManager.cpp | 124 --------- src/Utils/AsyncDownloadManager.cpp | 103 -------- src/main.cc | 35 +++ src/main.cpp | 12 - src/utils/console.cc | 53 ++++ src/utils/file_downloader.cc | 109 ++++++++ src/utils/update_checker.cc | 51 ++++ 36 files changed, 351 insertions(+), 1625 deletions(-) delete mode 100644 include/Audio/MusicPlayManager.hpp delete mode 100644 include/Audio/MusicPlayerThreadManager.hpp delete mode 100644 include/BumbleBee.hpp delete mode 100644 include/Commands/BumbleBeeCommand.hpp delete mode 100644 include/Queue/MusicQueue.hpp delete mode 100644 include/Queue/MusicQueueElement.hpp delete mode 100644 include/Settings/SettingsManager.hpp delete mode 100644 include/Utils/AsyncDownloadManager.hpp delete mode 100644 include/Utils/ConsoleUtils.hpp delete mode 100644 include/Utils/QueuedMusicListEmbedProvider.hpp delete mode 100644 include/Utils/VersionsCheckUtils.hpp create mode 100644 include/precomp.h create mode 100644 include/utils/console.h create mode 100644 include/utils/file_downloader.h create mode 100644 include/utils/update_checker.h delete mode 100644 src/Audio/MusicPlayManager.cpp delete mode 100644 src/BumbleBee.cpp delete mode 100644 src/Commands/Delete.cpp delete mode 100644 src/Commands/Leave.cpp delete mode 100644 src/Commands/Play.cpp delete mode 100644 src/Commands/Queue.cpp delete mode 100644 src/Commands/Repeat.cpp delete mode 100644 src/Commands/Shuffle.cpp delete mode 100644 src/Commands/Skip.cpp delete mode 100644 src/Manager/ThreadManager.cpp delete mode 100644 src/Queue/MusicQueue.cpp delete mode 100644 src/Settings/SettingsManager.cpp delete mode 100644 src/Utils/AsyncDownloadManager.cpp create mode 100644 src/main.cc delete mode 100644 src/main.cpp create mode 100644 src/utils/console.cc create mode 100644 src/utils/file_downloader.cc create mode 100644 src/utils/update_checker.cc diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index b4a26e9..ab4cd9e 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -12,10 +12,7 @@ "compilerPath": "/usr/bin/gcc", "cStandard": "c17", "cppStandard": "c++20", - "intelliSenseMode": "linux-gcc-x64", - "compilerArgs": [ - "-DDPP_CORO" - ] + "intelliSenseMode": "linux-gcc-x64" } ], "version": 4 diff --git a/.vscode/settings.json b/.vscode/settings.json index 1c22ffa..cdc8dc4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,11 +1,9 @@ { + "C_Cpp.default.compileCommands": "${workspaceFolder}/build/compile_commands.json", "files.associations": { - "iosfwd": "cpp", - "sstream": "cpp", "cctype": "cpp", "clocale": "cpp", "cmath": "cpp", - "csignal": "cpp", "cstdarg": "cpp", "cstddef": "cpp", "cstdio": "cpp", @@ -14,27 +12,20 @@ "ctime": "cpp", "cwchar": "cpp", "cwctype": "cpp", - "any": "cpp", "array": "cpp", "atomic": "cpp", - "strstream": "cpp", "bit": "cpp", - "*.tcc": "cpp", "bitset": "cpp", "charconv": "cpp", "chrono": "cpp", - "codecvt": "cpp", "compare": "cpp", - "complex": "cpp", "concepts": "cpp", "condition_variable": "cpp", - "coroutine": "cpp", "cstdint": "cpp", "deque": "cpp", "forward_list": "cpp", "list": "cpp", "map": "cpp", - "set": "cpp", "string": "cpp", "unordered_map": "cpp", "vector": "cpp", @@ -44,66 +35,36 @@ "iterator": "cpp", "memory": "cpp", "memory_resource": "cpp", - "numeric": "cpp", "optional": "cpp", "random": "cpp", "ratio": "cpp", - "source_location": "cpp", "string_view": "cpp", "system_error": "cpp", "tuple": "cpp", "type_traits": "cpp", "utility": "cpp", + "format": "cpp", "fstream": "cpp", "future": "cpp", "initializer_list": "cpp", "iomanip": "cpp", + "iosfwd": "cpp", "iostream": "cpp", "istream": "cpp", "limits": "cpp", "mutex": "cpp", "new": "cpp", - "numbers": "cpp", "ostream": "cpp", - "ranges": "cpp", "semaphore": "cpp", "shared_mutex": "cpp", + "sstream": "cpp", "stdexcept": "cpp", "stop_token": "cpp", "streambuf": "cpp", "thread": "cpp", - "cinttypes": "cpp", - "typeindex": "cpp", "typeinfo": "cpp", - "valarray": "cpp", "variant": "cpp", - "*.ipp": "cpp", - "format": "cpp", - "span": "cpp", - "__bit_reference": "cpp", - "__bits": "cpp", "__config": "cpp", - "__debug": "cpp", - "__errc": "cpp", - "__hash_table": "cpp", - "__locale": "cpp", - "__mutex_base": "cpp", - "__node_handle": "cpp", - "__nullptr": "cpp", - "__split_buffer": "cpp", - "__string": "cpp", - "__threading_support": "cpp", - "__tree": "cpp", - "__tuple": "cpp", - "ios": "cpp", - "locale": "cpp", - "queue": "cpp", - "hash_map": "cpp", - "hash_set": "cpp", - "regex": "cpp", - "stack": "cpp", - "__memory": "cpp", - "__verbose_abort": "cpp", - "print": "cpp" + "rope": "cpp" } } \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index b1bff6e..e1153c3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -92,24 +92,18 @@ if(NOT AVCODEC_LIBRARY OR NOT AVFORMAT_LIBRARY OR NOT AVUTIL_LIBRARY) message(FATAL_ERROR "FFmpeg 라이브러리를 찾을 수 없습니다. 다운로드 경로를 확인해주세요.") endif() -#file(GLOB_RECURSE CORES "src/*.cpp" "src/*.cxx" "src/*.cc") -#file(GLOB_RECURSE AUDIO_SOURCES "src/Audio/*.cpp" "src/Audio/*.cxx" "src/Audio/*.cc") -#file(GLOB_RECURSE COMMANDS_SOURCES "src/Commands/*.cpp" "src/Commands/*.cxx" "src/Commands/*.cc") -#file(GLOB_RECURSE QUEUE_SOURCES "src/Queue/*.cpp" "src/Queue/*.cxx" "src/Queue/*.cc") -#file(GLOB_RECURSE SETTINGS_SOURCES "src/Settings/*.cpp" "src/Settings/*.cxx" "src/Settings/*.cc") -#file(GLOB_RECURSE UTILS_SOURCES "src/Utils/*.cpp" "src/Utils/*.cxx" "src/Utils/*.cc") +file(GLOB_RECURSE CORES "src/*.cpp" "src/*.cxx" "src/*.cc") -# Combine all found source files into a single list -#set(ALL_SOURCE_FILES -# ${CORES} -# ${AUDIO_SOURCES} -# ${COMMANDS_SOURCES} -# ${QUEUE_SOURCES} -# ${SETTINGS_SOURCES} -# ${UTILS_SOURCES} -#) +set(ALL_SOURCE_FILES + ${CORES} + ${AUDIO_SOURCES} + ${COMMANDS_SOURCES} + ${QUEUE_SOURCES} + ${SETTINGS_SOURCES} + ${UTILS_SOURCES} +) -add_executable(${BOT_NAME} src/main.cpp) +add_executable(${BOT_NAME} ${ALL_SOURCE_FILES}) target_link_libraries(${BOT_NAME} PRIVATE dpp) target_link_libraries(${BOT_NAME} PRIVATE Boost::filesystem) @@ -140,6 +134,8 @@ target_include_directories(${BOT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/includ target_include_directories(${BOT_NAME} PRIVATE ${OpenSSL_INCLUDE_DIRS}) target_include_directories(${BOT_NAME} PRIVATE ${FFMPEG_INCLUDE_PATH}) +target_precompile_headers(${BOT_NAME} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include/precomp.h") + add_custom_command(TARGET ${BOT_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "$" diff --git a/include/Audio/MusicPlayManager.hpp b/include/Audio/MusicPlayManager.hpp deleted file mode 100644 index dfb78c6..0000000 --- a/include/Audio/MusicPlayManager.hpp +++ /dev/null @@ -1,67 +0,0 @@ -#pragma once -#include -#include -#include - -namespace bumbleBee { -class MusicPlayManager { -public: - MusicPlayManager(std::shared_ptr cluster, std::vector GIDs) : - cluster(cluster), GIDs(GIDs) { - queueMap = std::unordered_map>(); - queueEmptyMutex = std::unordered_map>(); - - cluster->on_voice_ready([this](const dpp::voice_ready_t &event){on_voice_ready(event);}); - cluster->on_voice_track_marker([this](const dpp::voice_track_marker_t &event){on_voice_track_marker(event);}); - cluster->on_voice_client_disconnect([this](const dpp::voice_client_disconnect_t& event){on_voice_client_disconnect(event);}); - - for (auto GID : GIDs) { - queueMap[GID] = std::make_shared(); - queueEmptyMutex[GID] = std::make_shared(); - } - } - - /** - * @brief voice_ready 이벤트 인지시 콜백되는 함수 - * @param event const dpp::voice_ready_t& - **/ - void on_voice_ready(const dpp::voice_ready_t& event); - /** - * @brief voice_track_marker 이벤트 인지시 콜백되는 함수 - * @param event const dpp::voice_track_marker_t& - **/ - void on_voice_track_marker(const dpp::voice_track_marker_t& event); - /** - * @brief voice_client_disconnect 이벤트 인지시 콜백되는 함수 - * @param event const dpp::voice_client_disconnect_t& - **/ - void on_voice_client_disconnect(const dpp::voice_client_disconnect_t& event); - - void play(dpp::discord_voice_client* client); - - void queue_music(const dpp::snowflake guildId, const std::shared_ptr music); - - void clear(const dpp::snowflake guildId); - std::shared_ptr remove(const dpp::snowflake guildId, dpp::discord_voice_client* client, int index); - int size(const dpp::snowflake guildId); - - void setRepeat(const dpp::snowflake guildId, const bool value); - bool getRepeat(const dpp::snowflake guildId); - - std::pair>>, std::list>::iterator> getQueue(const dpp::snowflake guildId); - MusicQueueElement getNowPlaying(const dpp::snowflake guildId); - - std::condition_variable queuedCondition; - -private: - std::shared_ptr cluster; - - std::vector GIDs; - /// @brief 음악 큐 - std::unordered_map> queueMap; - - std::unordered_map> queueEmptyMutex; - - void send_audio_to_voice(std::shared_ptr music, dpp::discord_voice_client* client); -}; -} \ No newline at end of file diff --git a/include/Audio/MusicPlayerThreadManager.hpp b/include/Audio/MusicPlayerThreadManager.hpp deleted file mode 100644 index 5afa3c9..0000000 --- a/include/Audio/MusicPlayerThreadManager.hpp +++ /dev/null @@ -1,18 +0,0 @@ -#pragma once -#include -#include -#include -#include "Utils/ThreadPool.hpp" - -namespace bumbleBee { -class ThreadManager : public ThreadPool { -public: - bool addMusic(std::shared_ptr music, dpp::discord_voice_client* client); - void stopSending(dpp::snowflake gid); -private: - // GID, 쓰레드 - std::unordered_map threadPool; - // GID, 쓰레드 종료 - std::unordered_map terminating; -}; -} \ No newline at end of file diff --git a/include/BumbleBee.hpp b/include/BumbleBee.hpp deleted file mode 100644 index bc35d55..0000000 --- a/include/BumbleBee.hpp +++ /dev/null @@ -1,54 +0,0 @@ -#pragma once -#ifndef _BUMBLEBEE_HPP_ -#define _BUMBLEBEE_HPP_ -#include -#include -#include -#include - -namespace bumbleBee { -/** - * @file BumbleBee.hpp - * @brief 메인 봇 클래스 -**/ -class BumbleBee { -public: - /** - * @brief 생성자 - **/ - BumbleBee(); - /** - * @brief 파괴자 - * @details BumbleBee의 모든 Property를 책임지고 파괴합니다 - **/ - ~BumbleBee() {} - - /** - * @brief 봇 시작 - **/ - void start(); - - /** - * @brief slashcommand 이벤트 인지시 콜백되는 함수 - * @param event const dpp::slashcommand_t& - **/ - void on_slashcommand(const dpp::slashcommand_t& event); - /** - * @brief ready 이벤트 인지시 콜백되는 함수 - * @param event const dpp::ready_t& - **/ - void on_ready(const dpp::ready_t& event); - - /// @brief DPP 기본 클러스터 객체 - std::shared_ptr cluster; - /// @brief guild id 배열 - std::vector GIDs; - -private: - /// @brief Command 목록 - std::unordered_map> commands; - /// @brief voiceclient 관련 event 처리기 - std::shared_ptr musicManager; -}; -} -#endif \ No newline at end of file diff --git a/include/Commands/BumbleBeeCommand.hpp b/include/Commands/BumbleBeeCommand.hpp deleted file mode 100644 index 8ee6e36..0000000 --- a/include/Commands/BumbleBeeCommand.hpp +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once -#include -#include