From 4b6af0e4efe78a79d78ec9f387233bfe6f24029c Mon Sep 17 00:00:00 2001 From: Kwoth Date: Sun, 2 Jan 2022 03:49:54 +0100 Subject: [PATCH] Fixed some crashes in response strings source generator, reorganized more submodules into their folders --- .../Command/CommandAttributesGenerator.cs | 148 ++++++++++-------- .../LocalizedStringsGenerator.cs | 49 ++++-- src/NadekoBot/Modules/Gambling/Gambling.cs | 2 +- .../{Common => }/Acrophobia/Acrophobia.cs | 0 .../{Common => }/Acrophobia/AcrophobiaUser.cs | 0 .../{ => Acrophobia}/AcropobiaCommands.cs | 0 .../ChatterbotService.cs | 0 .../{ => ChatterBot}/CleverBotCommands.cs | 0 .../_Common}/ChatterBotResponse.cs | 0 .../_Common}/ChatterBotSession.cs | 0 .../_Common}/CleverbotResponse.cs | 0 .../_Common}/IChatterBotSession.cs | 0 .../_Common}/OfficialCleverbotSession.cs | 0 .../Modules/Games/Connect4Commands.cs | 1 - .../Modules/Games/{Common => }/GamesConfig.cs | 0 .../{Services => }/GamesConfigService.cs | 0 .../Games/{Services => }/GamesService.cs | 0 .../Modules/Games/{Common => }/GirlRating.cs | 0 .../Hangman/DefaultHangmanSource.cs | 0 .../Games/{ => Hangman}/HangmanCommands.cs | 0 .../Games/{Common => }/Hangman/HangmanGame.cs | 0 .../{Common => }/Hangman/HangmanService.cs | 0 .../Games/{Common => }/Hangman/HangmanTerm.cs | 0 .../{Common => }/Hangman/IHangmanService.cs | 0 .../{Common => }/Hangman/IHangmanSource.cs | 0 .../Games/{Common => }/Nunchi/Nunchi.cs | 0 .../Games/{ => Nunchi}/NunchiCommands.cs | 0 .../Modules/Games/{ => Polls}/PollCommands.cs | 0 .../Games/{Common => Polls}/PollRunner.cs | 0 .../Games/{Services => Polls}/PollService.cs | 0 .../{ => SpeedTyping}/SpeedTypingCommands.cs | 0 .../{Common => SpeedTyping}/TypingArticle.cs | 0 .../{Common => SpeedTyping}/TypingGame.cs | 0 .../Games/{Common => TicTacToe}/TicTacToe.cs | 0 .../{ => TicTacToe}/TicTacToeCommands.cs | 0 .../Games/{ => Trivia}/TriviaCommands.cs | 0 .../Games/{Common => }/Trivia/TriviaGame.cs | 0 .../{Common => }/Trivia/TriviaOptions.cs | 0 .../{Common => }/Trivia/TriviaQuestion.cs | 0 .../{Common => }/Trivia/TriviaQuestionPool.cs | 0 .../Help/{Common => }/CommandsOptions.cs | 0 .../Help/{Services => }/HelpService.cs | 0 .../{Common => _Common}/ICachableTrackData.cs | 0 .../ILocalTrackResolver.cs | 0 .../Music/{Common => _Common}/IMusicPlayer.cs | 0 .../Music/{Common => _Common}/IMusicQueue.cs | 0 .../IPlatformQueryResolver.cs | 0 .../{Common => _Common}/IQueuedTrackInfo.cs | 0 .../{Common => _Common}/IRadioResolver.cs | 0 .../ISoundcloudResolver.cs | 0 .../Music/{Common => _Common}/ITrackCacher.cs | 0 .../Music/{Common => _Common}/ITrackInfo.cs | 0 .../ITrackResolveProvider.cs | 0 .../Music/{Common => _Common}/IVoiceProxy.cs | 0 .../{Common => _Common}/IYoutubeResolver.cs | 0 .../Impl/CachableTrackData.cs | 0 .../Impl/MultimediaTimer.cs | 0 .../Impl/MusicExtensions.cs | 0 .../{Common => _Common}/Impl/MusicPlatform.cs | 0 .../{Common => _Common}/Impl/MusicPlayer.cs | 0 .../{Common => _Common}/Impl/MusicQueue.cs | 0 .../Impl/RedisTrackCacher.cs | 0 .../Impl/RemoteTrackInfo.cs | 0 .../Impl/SimpleTrackInfo.cs | 0 .../{Common => _Common}/Impl/VoiceProxy.cs | 0 .../Resolvers/LocalTrackResolver.cs | 0 .../Resolvers/RadioResolveStrategy.cs | 0 .../Resolvers/SoundcloudResolver.cs | 0 .../Resolvers/TrackResolveProvider.cs | 0 .../Resolvers/YtdlYoutubeResolver.cs | 0 .../Modules/Nsfw/{Common => _Common}/Booru.cs | 0 .../{Common => _Common}/DapiImageObject.cs | 0 .../Nsfw/{Common => _Common}/DapiTag.cs | 0 .../{Common => _Common}/DerpiContainer.cs | 0 .../Downloaders/DanbooruImageDownloader.cs | 0 .../Downloaders/DapiImageDownloader.cs | 0 .../Downloaders/DerpibooruImageDownloader.cs | 0 .../Downloaders/E621ImageDownloader.cs | 0 .../Downloaders/E621Response.cs | 0 .../Downloaders/GelbooruImageDownloader.cs | 0 .../Downloaders/IImageDownloader.cs | 0 .../Downloaders/ImageDownloader.cs | 0 .../Downloaders/ImageDownloaderHelper.cs | 0 .../Downloaders/KonachanImageDownloader.cs | 0 .../Downloaders/Rule34ImageDownloader.cs | 0 .../Downloaders/SafebooruImageDownloader.cs | 0 .../Downloaders/SankakuImageDownloader.cs | 0 .../Downloaders/YandereImageDownloader.cs | 0 .../Nsfw/{Common => _Common}/E621Object.cs | 0 .../Nsfw/{Common => _Common}/IImageData.cs | 0 .../Nsfw/{Common => _Common}/ImageData.cs | 0 .../Nsfw/{Common => _Common}/Rule34Object.cs | 0 .../{Common => _Common}/SafebooruElement.cs | 0 .../{Common => _Common}/SankakuImageObject.cs | 0 .../{ => Blacklist}/BlacklistCommands.cs | 0 .../BlacklistService.cs | 0 .../CmdCdService.cs | 0 .../{ => CommandCooldown}/CmdCdsCommands.cs | 0 .../{ => Filter}/FilterCommands.cs | 0 .../{Services => Filter}/FilterService.cs | 0 .../GlobalPermissionCommands.cs | 0 .../GlobalPermissionService.cs | 0 .../{Services => }/PermissionsService.cs | 0 .../{Common => _Common}/PermissionCache.cs | 0 .../PermissionExtensions.cs | 0 .../PermissionsCollection.cs | 0 .../Searches/{Common => Anime}/AnimeResult.cs | 0 .../{ => Anime}/AnimeSearchCommands.cs | 0 .../{Services => Anime}/AnimeSearchService.cs | 0 .../Searches/{Common => Anime}/MangaResult.cs | 0 .../Searches/{ => Crypto}/CryptoCommands.cs | 0 .../{Services => Crypto}/CryptoService.cs | 0 .../Searches/{ => Feeds}/FeedCommands.cs | 0 .../{Services => Feeds}/FeedsService.cs | 0 .../{Services => }/SearchesService.cs | 0 .../StreamNotificationCommands.cs | 0 .../StreamNotificationService.cs | 0 .../ITranslateService.cs | 0 .../TranslateService.cs | 0 .../{ => Translate}/TranslatorCommands.cs | 0 .../YtTrackService.cs | 0 .../{ => YoutubeTrack}/YtUploadCommands.cs | 0 .../{Common => _Common}/BibleVerses.cs | 0 .../{Common => _Common}/CryptoData.cs | 0 .../{Common => _Common}/DefineModel.cs | 0 .../{Common => _Common}/E621Object.cs | 0 .../Exceptions/StreamNotFoundException.cs | 0 .../Searches/{Common => _Common}/Gallery.cs | 0 .../{Common => _Common}/GatariUserResponse.cs | 0 .../GatariUserStatsResponse.cs | 0 .../{Common => _Common}/GoogleSearchResult.cs | 0 .../HearthstoneCardData.cs | 0 .../{Common => _Common}/ImageCacherObject.cs | 0 .../LowerCaseNamingPolicy.cs | 0 .../Searches/{Common => _Common}/MagicItem.cs | 0 .../Searches/{Common => _Common}/MtgData.cs | 0 .../{Common => _Common}/NhentaiApiModel.cs | 0 .../Searches/{Common => _Common}/NovelData.cs | 0 .../Searches/{Common => _Common}/OmdbMovie.cs | 0 .../{Common => _Common}/OsuUserData.cs | 0 .../{Common => _Common}/PathOfExileModels.cs | 0 .../{Common => _Common}/SteamGameId.cs | 0 .../Models/PicartoChannelResponse.cs | 0 .../StreamNotifications/Models/StreamData.cs | 0 .../Models/StreamDataKey.cs | 0 .../Models/TwitchResponseHelix.cs | 0 .../Models/TwitchResponseV5.cs | 0 .../Models/TwitchUsersResponseV5.cs | 0 .../StreamNotifications/NotifChecker.cs | 0 .../Providers/PicartoProvider.cs | 0 .../StreamNotifications/Providers/Provider.cs | 0 .../Providers/TwitchHelixProvider.cs | 0 .../Providers/TwitchProvider.cs | 0 .../Searches/{Common => _Common}/TimeData.cs | 0 .../{Common => _Common}/TimeModels.cs | 0 .../Searches/{Common => _Common}/UrbanDef.cs | 0 .../{Common => _Common}/WeatherModels.cs | 0 .../{Common => _Common}/WikipediaApiModel.cs | 0 .../Searches/{Common => _Common}/WoWJoke.cs | 0 .../Utility/{ => Calc}/CalcCommands.cs | 0 .../{ => CommandMap}/CommandMapCommands.cs | 0 .../CommandMapService.cs | 0 .../Utility/{ => Info}/InfoCommands.cs | 0 .../Utility/{ => Info}/InviteCommands.cs | 0 .../{Services => Invite}/InviteService.cs | 0 .../PatreonRewardsService.cs | 0 .../Utility/{ => Quote}/QuoteCommands.cs | 0 .../Utility/{ => Remind}/RemindCommands.cs | 0 .../{Services => Remind}/RemindService.cs | 0 .../Utility/{ => Repeater}/RepeatCommands.cs | 0 .../{Services => Repeater}/RepeaterService.cs | 0 .../{ => StreamRole}/StreamRoleCommands.cs | 0 .../StreamRoleService.cs | 0 .../UnitConversionCommands.cs | 0 .../VerboseErrorCommands.cs | 0 .../VerboseErrorsService.cs | 0 .../{Common => _Common}/ConvertUnit.cs | 0 .../Exceptions/StreamRoleNotFoundException.cs | 0 .../StreamRolePermissionException.cs | 0 .../Patreon/PatreonData.cs | 0 .../{Common => _Common}/StreamRoleListType.cs | 0 src/NadekoBot/Modules/Xp/{ => Club}/Club.cs | 0 .../Xp/{Services => Club}/ClubService.cs | 0 .../Modules/Xp/{Common => }/XpConfig.cs | 0 .../Xp/{Services => }/XpConfigService.cs | 0 .../Modules/Xp/{Services => }/XpService.cs | 0 .../Xp/{Extensions => _Common}/Extensions.cs | 0 .../Xp/{Common => _Common}/FullUserStats.cs | 0 .../Xp/{Common => _Common}/LevelStats.cs | 0 .../Xp/{Services => _Common}/UserCacheItem.cs | 0 .../Xp/{Common => _Common}/XpTemplate.cs | 0 191 files changed, 120 insertions(+), 80 deletions(-) rename src/NadekoBot/Modules/Games/{Common => }/Acrophobia/Acrophobia.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Acrophobia/AcrophobiaUser.cs (100%) rename src/NadekoBot/Modules/Games/{ => Acrophobia}/AcropobiaCommands.cs (100%) rename src/NadekoBot/Modules/Games/{Services => ChatterBot}/ChatterbotService.cs (100%) rename src/NadekoBot/Modules/Games/{ => ChatterBot}/CleverBotCommands.cs (100%) rename src/NadekoBot/Modules/Games/{Common/ChatterBot => ChatterBot/_Common}/ChatterBotResponse.cs (100%) rename src/NadekoBot/Modules/Games/{Common/ChatterBot => ChatterBot/_Common}/ChatterBotSession.cs (100%) rename src/NadekoBot/Modules/Games/{Common/ChatterBot => ChatterBot/_Common}/CleverbotResponse.cs (100%) rename src/NadekoBot/Modules/Games/{Common/ChatterBot => ChatterBot/_Common}/IChatterBotSession.cs (100%) rename src/NadekoBot/Modules/Games/{Common/ChatterBot => ChatterBot/_Common}/OfficialCleverbotSession.cs (100%) delete mode 100644 src/NadekoBot/Modules/Games/Connect4Commands.cs rename src/NadekoBot/Modules/Games/{Common => }/GamesConfig.cs (100%) rename src/NadekoBot/Modules/Games/{Services => }/GamesConfigService.cs (100%) rename src/NadekoBot/Modules/Games/{Services => }/GamesService.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/GirlRating.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Hangman/DefaultHangmanSource.cs (100%) rename src/NadekoBot/Modules/Games/{ => Hangman}/HangmanCommands.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Hangman/HangmanGame.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Hangman/HangmanService.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Hangman/HangmanTerm.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Hangman/IHangmanService.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Hangman/IHangmanSource.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Nunchi/Nunchi.cs (100%) rename src/NadekoBot/Modules/Games/{ => Nunchi}/NunchiCommands.cs (100%) rename src/NadekoBot/Modules/Games/{ => Polls}/PollCommands.cs (100%) rename src/NadekoBot/Modules/Games/{Common => Polls}/PollRunner.cs (100%) rename src/NadekoBot/Modules/Games/{Services => Polls}/PollService.cs (100%) rename src/NadekoBot/Modules/Games/{ => SpeedTyping}/SpeedTypingCommands.cs (100%) rename src/NadekoBot/Modules/Games/{Common => SpeedTyping}/TypingArticle.cs (100%) rename src/NadekoBot/Modules/Games/{Common => SpeedTyping}/TypingGame.cs (100%) rename src/NadekoBot/Modules/Games/{Common => TicTacToe}/TicTacToe.cs (100%) rename src/NadekoBot/Modules/Games/{ => TicTacToe}/TicTacToeCommands.cs (100%) rename src/NadekoBot/Modules/Games/{ => Trivia}/TriviaCommands.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Trivia/TriviaGame.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Trivia/TriviaOptions.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Trivia/TriviaQuestion.cs (100%) rename src/NadekoBot/Modules/Games/{Common => }/Trivia/TriviaQuestionPool.cs (100%) rename src/NadekoBot/Modules/Help/{Common => }/CommandsOptions.cs (100%) rename src/NadekoBot/Modules/Help/{Services => }/HelpService.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/ICachableTrackData.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/ILocalTrackResolver.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/IMusicPlayer.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/IMusicQueue.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/IPlatformQueryResolver.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/IQueuedTrackInfo.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/IRadioResolver.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/ISoundcloudResolver.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/ITrackCacher.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/ITrackInfo.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/ITrackResolveProvider.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/IVoiceProxy.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/IYoutubeResolver.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/CachableTrackData.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/MultimediaTimer.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/MusicExtensions.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/MusicPlatform.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/MusicPlayer.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/MusicQueue.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/RedisTrackCacher.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/RemoteTrackInfo.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/SimpleTrackInfo.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Impl/VoiceProxy.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Resolvers/LocalTrackResolver.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Resolvers/RadioResolveStrategy.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Resolvers/SoundcloudResolver.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Resolvers/TrackResolveProvider.cs (100%) rename src/NadekoBot/Modules/Music/{Common => _Common}/Resolvers/YtdlYoutubeResolver.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Booru.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/DapiImageObject.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/DapiTag.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/DerpiContainer.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/DanbooruImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/DapiImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/DerpibooruImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/E621ImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/E621Response.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/GelbooruImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/IImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/ImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/ImageDownloaderHelper.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/KonachanImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/Rule34ImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/SafebooruImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/SankakuImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Downloaders/YandereImageDownloader.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/E621Object.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/IImageData.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/ImageData.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/Rule34Object.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/SafebooruElement.cs (100%) rename src/NadekoBot/Modules/Nsfw/{Common => _Common}/SankakuImageObject.cs (100%) rename src/NadekoBot/Modules/Permissions/{ => Blacklist}/BlacklistCommands.cs (100%) rename src/NadekoBot/Modules/Permissions/{Services => Blacklist}/BlacklistService.cs (100%) rename src/NadekoBot/Modules/Permissions/{Services => CommandCooldown}/CmdCdService.cs (100%) rename src/NadekoBot/Modules/Permissions/{ => CommandCooldown}/CmdCdsCommands.cs (100%) rename src/NadekoBot/Modules/Permissions/{ => Filter}/FilterCommands.cs (100%) rename src/NadekoBot/Modules/Permissions/{Services => Filter}/FilterService.cs (100%) rename src/NadekoBot/Modules/Permissions/{ => GlobalPermissions}/GlobalPermissionCommands.cs (100%) rename src/NadekoBot/Modules/Permissions/{Services => GlobalPermissions}/GlobalPermissionService.cs (100%) rename src/NadekoBot/Modules/Permissions/{Services => }/PermissionsService.cs (100%) rename src/NadekoBot/Modules/Permissions/{Common => _Common}/PermissionCache.cs (100%) rename src/NadekoBot/Modules/Permissions/{Common => _Common}/PermissionExtensions.cs (100%) rename src/NadekoBot/Modules/Permissions/{Common => _Common}/PermissionsCollection.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => Anime}/AnimeResult.cs (100%) rename src/NadekoBot/Modules/Searches/{ => Anime}/AnimeSearchCommands.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => Anime}/AnimeSearchService.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => Anime}/MangaResult.cs (100%) rename src/NadekoBot/Modules/Searches/{ => Crypto}/CryptoCommands.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => Crypto}/CryptoService.cs (100%) rename src/NadekoBot/Modules/Searches/{ => Feeds}/FeedCommands.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => Feeds}/FeedsService.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => }/SearchesService.cs (100%) rename src/NadekoBot/Modules/Searches/{ => StreamNotification}/StreamNotificationCommands.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => StreamNotification}/StreamNotificationService.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => Translate}/ITranslateService.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => Translate}/TranslateService.cs (100%) rename src/NadekoBot/Modules/Searches/{ => Translate}/TranslatorCommands.cs (100%) rename src/NadekoBot/Modules/Searches/{Services => YoutubeTrack}/YtTrackService.cs (100%) rename src/NadekoBot/Modules/Searches/{ => YoutubeTrack}/YtUploadCommands.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/BibleVerses.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/CryptoData.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/DefineModel.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/E621Object.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/Exceptions/StreamNotFoundException.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/Gallery.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/GatariUserResponse.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/GatariUserStatsResponse.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/GoogleSearchResult.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/HearthstoneCardData.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/ImageCacherObject.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/LowerCaseNamingPolicy.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/MagicItem.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/MtgData.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/NhentaiApiModel.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/NovelData.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/OmdbMovie.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/OsuUserData.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/PathOfExileModels.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/SteamGameId.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Models/PicartoChannelResponse.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Models/StreamData.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Models/StreamDataKey.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Models/TwitchResponseHelix.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Models/TwitchResponseV5.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Models/TwitchUsersResponseV5.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/NotifChecker.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Providers/PicartoProvider.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Providers/Provider.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Providers/TwitchHelixProvider.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/StreamNotifications/Providers/TwitchProvider.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/TimeData.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/TimeModels.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/UrbanDef.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/WeatherModels.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/WikipediaApiModel.cs (100%) rename src/NadekoBot/Modules/Searches/{Common => _Common}/WoWJoke.cs (100%) rename src/NadekoBot/Modules/Utility/{ => Calc}/CalcCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{ => CommandMap}/CommandMapCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{Services => CommandMap}/CommandMapService.cs (100%) rename src/NadekoBot/Modules/Utility/{ => Info}/InfoCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{ => Info}/InviteCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{Services => Invite}/InviteService.cs (100%) rename src/NadekoBot/Modules/Utility/{Services => Patreon}/PatreonRewardsService.cs (100%) rename src/NadekoBot/Modules/Utility/{ => Quote}/QuoteCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{ => Remind}/RemindCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{Services => Remind}/RemindService.cs (100%) rename src/NadekoBot/Modules/Utility/{ => Repeater}/RepeatCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{Services => Repeater}/RepeaterService.cs (100%) rename src/NadekoBot/Modules/Utility/{ => StreamRole}/StreamRoleCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{Services => StreamRole}/StreamRoleService.cs (100%) rename src/NadekoBot/Modules/Utility/{ => UnitConversion}/UnitConversionCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{ => VerboseErrors}/VerboseErrorCommands.cs (100%) rename src/NadekoBot/Modules/Utility/{Services => VerboseErrors}/VerboseErrorsService.cs (100%) rename src/NadekoBot/Modules/Utility/{Common => _Common}/ConvertUnit.cs (100%) rename src/NadekoBot/Modules/Utility/{Common => _Common}/Exceptions/StreamRoleNotFoundException.cs (100%) rename src/NadekoBot/Modules/Utility/{Common => _Common}/Exceptions/StreamRolePermissionException.cs (100%) rename src/NadekoBot/Modules/Utility/{Common => _Common}/Patreon/PatreonData.cs (100%) rename src/NadekoBot/Modules/Utility/{Common => _Common}/StreamRoleListType.cs (100%) rename src/NadekoBot/Modules/Xp/{ => Club}/Club.cs (100%) rename src/NadekoBot/Modules/Xp/{Services => Club}/ClubService.cs (100%) rename src/NadekoBot/Modules/Xp/{Common => }/XpConfig.cs (100%) rename src/NadekoBot/Modules/Xp/{Services => }/XpConfigService.cs (100%) rename src/NadekoBot/Modules/Xp/{Services => }/XpService.cs (100%) rename src/NadekoBot/Modules/Xp/{Extensions => _Common}/Extensions.cs (100%) rename src/NadekoBot/Modules/Xp/{Common => _Common}/FullUserStats.cs (100%) rename src/NadekoBot/Modules/Xp/{Common => _Common}/LevelStats.cs (100%) rename src/NadekoBot/Modules/Xp/{Services => _Common}/UserCacheItem.cs (100%) rename src/NadekoBot/Modules/Xp/{Common => _Common}/XpTemplate.cs (100%) diff --git a/src/NadekoBot.Generators/Command/CommandAttributesGenerator.cs b/src/NadekoBot.Generators/Command/CommandAttributesGenerator.cs index a86b1fbcd..d094aacf7 100644 --- a/src/NadekoBot.Generators/Command/CommandAttributesGenerator.cs +++ b/src/NadekoBot.Generators/Command/CommandAttributesGenerator.cs @@ -1,7 +1,8 @@ -using System.CodeDom.Compiler; -using System.Collections; +#nullable enable +using System.CodeDom.Compiler; using System.Collections.Generic; using System.Collections.Immutable; +using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; @@ -29,18 +30,34 @@ public class CmdAttribute : System.Attribute public class MethodModel { - public string Namespace { get; set; } - public IReadOnlyCollection Classes { get; set; } - public string ReturnType { get; set; } - public string MethodName { get; set; } - public IEnumerable Params { get; set; } + public string? Namespace { get; } + public IReadOnlyCollection Classes { get; } + public string ReturnType { get; } + public string MethodName { get; } + public IEnumerable Params { get; } + + public MethodModel(string? ns, IReadOnlyCollection classes, string returnType, string methodName, IEnumerable @params) + { + Namespace = ns; + Classes = classes; + ReturnType = returnType; + MethodName = methodName; + Params = @params; + } } public class FileModel { - public string Namespace { get; set; } - public IReadOnlyCollection ClassHierarchy { get; set; } - public IReadOnlyCollection Methods { get; set; } + public string? Namespace { get; } + public IReadOnlyCollection ClassHierarchy { get; } + public IReadOnlyCollection Methods { get; } + + public FileModel(string? ns, IReadOnlyCollection classHierarchy, IReadOnlyCollection methods) + { + Namespace = ns; + ClassHierarchy = classHierarchy; + Methods = methods; + } } public void Initialize(IncrementalGeneratorInitializationContext context) @@ -53,13 +70,13 @@ public class CmdAttribute : System.Attribute .CreateSyntaxProvider( static (node, _) => node is MethodDeclarationSyntax { AttributeLists.Count: > 0 }, static (ctx, cancel) => Transform(ctx, cancel)) - .Where(static m => m != default) - .Where(static m => m.ChildTokens().Any(static x => x.IsKind(SyntaxKind.PublicKeyword))); + .Where(static m => m is not null) + .Where(static m => m!.ChildTokens().Any(static x => x.IsKind(SyntaxKind.PublicKeyword))); var compilationMethods = context.CompilationProvider.Combine(methods.Collect()); context.RegisterSourceOutput(compilationMethods, - static (ctx, tuple) => RegisterAction(in ctx, tuple.Left, in tuple.Right)); + static (ctx, tuple) => RegisterAction(in ctx, tuple.Left, in tuple.Right!)); } private static void RegisterAction(in SourceProductionContext ctx, @@ -137,8 +154,13 @@ public class CmdAttribute : System.Attribute tw.WriteLine("// "); tw.WriteLine("#pragma warning disable CS1066"); - tw.WriteLine($"namespace {model.Namespace};"); - + + if (model.Namespace is not null) + { + tw.WriteLine($"namespace {model.Namespace};"); + tw.WriteLine(); + } + foreach (var className in model.ClassHierarchy) { tw.WriteLine($"public partial class {className}"); @@ -176,13 +198,15 @@ public class CmdAttribute : System.Attribute foreach (var group in groups) { + if (cancel.IsCancellationRequested) + return new Collection(); + var elems = group.ToList(); - var model = new FileModel() - { - Methods = elems, - Namespace = elems[0].Namespace, - ClassHierarchy = elems[0].Classes - }; + var model = new FileModel( + methods: elems, + ns: elems[0].Namespace, + classHierarchy: elems[0].Classes + ); models.Add(model); } @@ -195,53 +219,53 @@ public class CmdAttribute : System.Attribute { // SpinWait.SpinUntil(static () => Debugger.IsAttached); - var methodModel = new MethodModel(); var semanticModel = comp.GetSemanticModel(decl.SyntaxTree); - methodModel.Params = decl.ParameterList.Parameters - .Select(p => - { - var prefix = p.Modifiers.Any(static x => x.IsKind(SyntaxKind.ParamsKeyword)) - ? "params " - : string.Empty; - - var type = semanticModel - .GetTypeInfo(p.Type!) - .Type! - .ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat); - - - var name = p.Identifier.Text; - - var suffix = string.Empty; - if (p.Default is not null) + var methodModel = new MethodModel( + @params: decl.ParameterList.Parameters + .Select(p => { - if (p.Default.Value is LiteralExpressionSyntax) + var prefix = p.Modifiers.Any(static x => x.IsKind(SyntaxKind.ParamsKeyword)) + ? "params " + : string.Empty; + + var type = semanticModel + .GetTypeInfo(p.Type!) + .Type! + .ToDisplayString(SymbolDisplayFormat.FullyQualifiedFormat); + + + var name = p.Identifier.Text; + + var suffix = string.Empty; + if (p.Default is not null) { - suffix = " = " + p.Default.Value; - } - else if (p.Default.Value is MemberAccessExpressionSyntax maes) - { - var maesSemModel = comp.GetSemanticModel(maes.SyntaxTree); - var sym = maesSemModel.GetSymbolInfo(maes.Name); - if (sym.Symbol is null) + if (p.Default.Value is LiteralExpressionSyntax) { suffix = " = " + p.Default.Value; } - else + else if (p.Default.Value is MemberAccessExpressionSyntax maes) { - suffix = " = " + sym.Symbol.ToDisplayString(); + var maesSemModel = comp.GetSemanticModel(maes.SyntaxTree); + var sym = maesSemModel.GetSymbolInfo(maes.Name); + if (sym.Symbol is null) + { + suffix = " = " + p.Default.Value; + } + else + { + suffix = " = " + sym.Symbol.ToDisplayString(); + } } } - } - return $"{prefix}{type} {name}{suffix}"; - }) - .ToList(); - - methodModel.MethodName = decl.Identifier.Text; - methodModel.ReturnType = decl.ReturnType.ToString(); - methodModel.Namespace = GetNamespace(decl); - methodModel.Classes = GetClasses(decl); + return $"{prefix}{type} {name}{suffix}"; + }) + .ToList(), + methodName: decl.Identifier.Text, + returnType: decl.ReturnType.ToString(), + ns: GetNamespace(decl), + classes: GetClasses(decl) + ); return methodModel; } @@ -266,10 +290,10 @@ public class CmdAttribute : System.Attribute // } //https://github.com/andrewlock/NetEscapades.EnumGenerators/blob/main/src/NetEscapades.EnumGenerators/EnumGenerator.cs - static string GetNamespace(MethodDeclarationSyntax declarationSyntax) + static string? GetNamespace(MethodDeclarationSyntax declarationSyntax) { // determine the namespace the class is declared in, if any - var nameSpace = string.Empty; + string? nameSpace = null; var parentOfInterest = declarationSyntax.Parent; while (parentOfInterest is not null) { @@ -294,7 +318,7 @@ public class CmdAttribute : System.Attribute } - return default; + return nameSpace; } static IReadOnlyCollection GetClasses(MethodDeclarationSyntax declarationSyntax) @@ -317,7 +341,7 @@ public class CmdAttribute : System.Attribute return classes; } - private static MethodDeclarationSyntax Transform(GeneratorSyntaxContext ctx, CancellationToken cancel) + private static MethodDeclarationSyntax? Transform(GeneratorSyntaxContext ctx, CancellationToken cancel) { var methodDecl = (MethodDeclarationSyntax)ctx.Node; diff --git a/src/NadekoBot.Generators/LocalizedStringsGenerator.cs b/src/NadekoBot.Generators/LocalizedStringsGenerator.cs index 3a65fbff8..ff491fdca 100644 --- a/src/NadekoBot.Generators/LocalizedStringsGenerator.cs +++ b/src/NadekoBot.Generators/LocalizedStringsGenerator.cs @@ -1,6 +1,8 @@ -using System; +#nullable enable +using System; using System.CodeDom.Compiler; using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Text.RegularExpressions; @@ -9,10 +11,16 @@ using Newtonsoft.Json; namespace NadekoBot.Generators { - internal class TranslationPair + internal readonly struct TranslationPair { - public string Name { get; set; } - public string Value { get; set; } + public string Name { get; } + public string Value { get; } + + public TranslationPair(string name, string value) + { + Name = name; + Value = value; + } } [Generator] @@ -48,8 +56,7 @@ namespace NadekoBot.Generators using (var sw = new IndentedTextWriter(stringWriter)) { sw.WriteLine("namespace NadekoBot"); - sw.WriteLine("{"); - sw.Indent++; + sw.WriteLine(); sw.WriteLine("public static class strs"); sw.WriteLine("{"); @@ -82,8 +89,6 @@ namespace NadekoBot.Generators sw.Indent--; sw.WriteLine("}"); - sw.Indent--; - sw.WriteLine("}"); sw.Flush(); @@ -93,21 +98,33 @@ namespace NadekoBot.Generators context.AddSource("LocStr.g.cs", LOC_STR_SOURCE); } - private List GetFields(string dataText) + private List GetFields(string? dataText) { if (string.IsNullOrWhiteSpace(dataText)) - throw new ArgumentNullException(nameof(dataText)); + return new(); - var data = JsonConvert.DeserializeObject>(dataText); + Dictionary data; + try + { + var output = JsonConvert.DeserializeObject>(dataText!); + if (output is null) + return new(); + + data = output; + } + catch + { + Debug.WriteLine("Failed parsing responses file."); + return new(); + } var list = new List(); foreach (var entry in data) { - list.Add(new TranslationPair() - { - Name = entry.Key, - Value = entry.Value - }); + list.Add(new( + entry.Key, + entry.Value + )); } return list; diff --git a/src/NadekoBot/Modules/Gambling/Gambling.cs b/src/NadekoBot/Modules/Gambling/Gambling.cs index fa3659da9..9550c4877 100644 --- a/src/NadekoBot/Modules/Gambling/Gambling.cs +++ b/src/NadekoBot/Modules/Gambling/Gambling.cs @@ -200,7 +200,7 @@ public partial class Gambling : GamblingModule if (--page < 0) return; - var trs = new List(); + List trs; await using (var uow = _db.GetDbContext()) { trs = uow.CurrencyTransactions.GetPageFor(userId, page); diff --git a/src/NadekoBot/Modules/Games/Common/Acrophobia/Acrophobia.cs b/src/NadekoBot/Modules/Games/Acrophobia/Acrophobia.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Acrophobia/Acrophobia.cs rename to src/NadekoBot/Modules/Games/Acrophobia/Acrophobia.cs diff --git a/src/NadekoBot/Modules/Games/Common/Acrophobia/AcrophobiaUser.cs b/src/NadekoBot/Modules/Games/Acrophobia/AcrophobiaUser.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Acrophobia/AcrophobiaUser.cs rename to src/NadekoBot/Modules/Games/Acrophobia/AcrophobiaUser.cs diff --git a/src/NadekoBot/Modules/Games/AcropobiaCommands.cs b/src/NadekoBot/Modules/Games/Acrophobia/AcropobiaCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/AcropobiaCommands.cs rename to src/NadekoBot/Modules/Games/Acrophobia/AcropobiaCommands.cs diff --git a/src/NadekoBot/Modules/Games/Services/ChatterbotService.cs b/src/NadekoBot/Modules/Games/ChatterBot/ChatterbotService.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Services/ChatterbotService.cs rename to src/NadekoBot/Modules/Games/ChatterBot/ChatterbotService.cs diff --git a/src/NadekoBot/Modules/Games/CleverBotCommands.cs b/src/NadekoBot/Modules/Games/ChatterBot/CleverBotCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/CleverBotCommands.cs rename to src/NadekoBot/Modules/Games/ChatterBot/CleverBotCommands.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotResponse.cs b/src/NadekoBot/Modules/Games/ChatterBot/_Common/ChatterBotResponse.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotResponse.cs rename to src/NadekoBot/Modules/Games/ChatterBot/_Common/ChatterBotResponse.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotSession.cs b/src/NadekoBot/Modules/Games/ChatterBot/_Common/ChatterBotSession.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/ChatterBotSession.cs rename to src/NadekoBot/Modules/Games/ChatterBot/_Common/ChatterBotSession.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/CleverbotResponse.cs b/src/NadekoBot/Modules/Games/ChatterBot/_Common/CleverbotResponse.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/CleverbotResponse.cs rename to src/NadekoBot/Modules/Games/ChatterBot/_Common/CleverbotResponse.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/IChatterBotSession.cs b/src/NadekoBot/Modules/Games/ChatterBot/_Common/IChatterBotSession.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/IChatterBotSession.cs rename to src/NadekoBot/Modules/Games/ChatterBot/_Common/IChatterBotSession.cs diff --git a/src/NadekoBot/Modules/Games/Common/ChatterBot/OfficialCleverbotSession.cs b/src/NadekoBot/Modules/Games/ChatterBot/_Common/OfficialCleverbotSession.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/ChatterBot/OfficialCleverbotSession.cs rename to src/NadekoBot/Modules/Games/ChatterBot/_Common/OfficialCleverbotSession.cs diff --git a/src/NadekoBot/Modules/Games/Connect4Commands.cs b/src/NadekoBot/Modules/Games/Connect4Commands.cs deleted file mode 100644 index f9233c190..000000000 --- a/src/NadekoBot/Modules/Games/Connect4Commands.cs +++ /dev/null @@ -1 +0,0 @@ -#nullable disable \ No newline at end of file diff --git a/src/NadekoBot/Modules/Games/Common/GamesConfig.cs b/src/NadekoBot/Modules/Games/GamesConfig.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/GamesConfig.cs rename to src/NadekoBot/Modules/Games/GamesConfig.cs diff --git a/src/NadekoBot/Modules/Games/Services/GamesConfigService.cs b/src/NadekoBot/Modules/Games/GamesConfigService.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Services/GamesConfigService.cs rename to src/NadekoBot/Modules/Games/GamesConfigService.cs diff --git a/src/NadekoBot/Modules/Games/Services/GamesService.cs b/src/NadekoBot/Modules/Games/GamesService.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Services/GamesService.cs rename to src/NadekoBot/Modules/Games/GamesService.cs diff --git a/src/NadekoBot/Modules/Games/Common/GirlRating.cs b/src/NadekoBot/Modules/Games/GirlRating.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/GirlRating.cs rename to src/NadekoBot/Modules/Games/GirlRating.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/DefaultHangmanSource.cs b/src/NadekoBot/Modules/Games/Hangman/DefaultHangmanSource.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/DefaultHangmanSource.cs rename to src/NadekoBot/Modules/Games/Hangman/DefaultHangmanSource.cs diff --git a/src/NadekoBot/Modules/Games/HangmanCommands.cs b/src/NadekoBot/Modules/Games/Hangman/HangmanCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/HangmanCommands.cs rename to src/NadekoBot/Modules/Games/Hangman/HangmanCommands.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/HangmanGame.cs b/src/NadekoBot/Modules/Games/Hangman/HangmanGame.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/HangmanGame.cs rename to src/NadekoBot/Modules/Games/Hangman/HangmanGame.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/HangmanService.cs b/src/NadekoBot/Modules/Games/Hangman/HangmanService.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/HangmanService.cs rename to src/NadekoBot/Modules/Games/Hangman/HangmanService.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/HangmanTerm.cs b/src/NadekoBot/Modules/Games/Hangman/HangmanTerm.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/HangmanTerm.cs rename to src/NadekoBot/Modules/Games/Hangman/HangmanTerm.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/IHangmanService.cs b/src/NadekoBot/Modules/Games/Hangman/IHangmanService.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/IHangmanService.cs rename to src/NadekoBot/Modules/Games/Hangman/IHangmanService.cs diff --git a/src/NadekoBot/Modules/Games/Common/Hangman/IHangmanSource.cs b/src/NadekoBot/Modules/Games/Hangman/IHangmanSource.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Hangman/IHangmanSource.cs rename to src/NadekoBot/Modules/Games/Hangman/IHangmanSource.cs diff --git a/src/NadekoBot/Modules/Games/Common/Nunchi/Nunchi.cs b/src/NadekoBot/Modules/Games/Nunchi/Nunchi.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Nunchi/Nunchi.cs rename to src/NadekoBot/Modules/Games/Nunchi/Nunchi.cs diff --git a/src/NadekoBot/Modules/Games/NunchiCommands.cs b/src/NadekoBot/Modules/Games/Nunchi/NunchiCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/NunchiCommands.cs rename to src/NadekoBot/Modules/Games/Nunchi/NunchiCommands.cs diff --git a/src/NadekoBot/Modules/Games/PollCommands.cs b/src/NadekoBot/Modules/Games/Polls/PollCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/PollCommands.cs rename to src/NadekoBot/Modules/Games/Polls/PollCommands.cs diff --git a/src/NadekoBot/Modules/Games/Common/PollRunner.cs b/src/NadekoBot/Modules/Games/Polls/PollRunner.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/PollRunner.cs rename to src/NadekoBot/Modules/Games/Polls/PollRunner.cs diff --git a/src/NadekoBot/Modules/Games/Services/PollService.cs b/src/NadekoBot/Modules/Games/Polls/PollService.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Services/PollService.cs rename to src/NadekoBot/Modules/Games/Polls/PollService.cs diff --git a/src/NadekoBot/Modules/Games/SpeedTypingCommands.cs b/src/NadekoBot/Modules/Games/SpeedTyping/SpeedTypingCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/SpeedTypingCommands.cs rename to src/NadekoBot/Modules/Games/SpeedTyping/SpeedTypingCommands.cs diff --git a/src/NadekoBot/Modules/Games/Common/TypingArticle.cs b/src/NadekoBot/Modules/Games/SpeedTyping/TypingArticle.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/TypingArticle.cs rename to src/NadekoBot/Modules/Games/SpeedTyping/TypingArticle.cs diff --git a/src/NadekoBot/Modules/Games/Common/TypingGame.cs b/src/NadekoBot/Modules/Games/SpeedTyping/TypingGame.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/TypingGame.cs rename to src/NadekoBot/Modules/Games/SpeedTyping/TypingGame.cs diff --git a/src/NadekoBot/Modules/Games/Common/TicTacToe.cs b/src/NadekoBot/Modules/Games/TicTacToe/TicTacToe.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/TicTacToe.cs rename to src/NadekoBot/Modules/Games/TicTacToe/TicTacToe.cs diff --git a/src/NadekoBot/Modules/Games/TicTacToeCommands.cs b/src/NadekoBot/Modules/Games/TicTacToe/TicTacToeCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/TicTacToeCommands.cs rename to src/NadekoBot/Modules/Games/TicTacToe/TicTacToeCommands.cs diff --git a/src/NadekoBot/Modules/Games/TriviaCommands.cs b/src/NadekoBot/Modules/Games/Trivia/TriviaCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Games/TriviaCommands.cs rename to src/NadekoBot/Modules/Games/Trivia/TriviaCommands.cs diff --git a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaGame.cs b/src/NadekoBot/Modules/Games/Trivia/TriviaGame.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Trivia/TriviaGame.cs rename to src/NadekoBot/Modules/Games/Trivia/TriviaGame.cs diff --git a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaOptions.cs b/src/NadekoBot/Modules/Games/Trivia/TriviaOptions.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Trivia/TriviaOptions.cs rename to src/NadekoBot/Modules/Games/Trivia/TriviaOptions.cs diff --git a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestion.cs b/src/NadekoBot/Modules/Games/Trivia/TriviaQuestion.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestion.cs rename to src/NadekoBot/Modules/Games/Trivia/TriviaQuestion.cs diff --git a/src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestionPool.cs b/src/NadekoBot/Modules/Games/Trivia/TriviaQuestionPool.cs similarity index 100% rename from src/NadekoBot/Modules/Games/Common/Trivia/TriviaQuestionPool.cs rename to src/NadekoBot/Modules/Games/Trivia/TriviaQuestionPool.cs diff --git a/src/NadekoBot/Modules/Help/Common/CommandsOptions.cs b/src/NadekoBot/Modules/Help/CommandsOptions.cs similarity index 100% rename from src/NadekoBot/Modules/Help/Common/CommandsOptions.cs rename to src/NadekoBot/Modules/Help/CommandsOptions.cs diff --git a/src/NadekoBot/Modules/Help/Services/HelpService.cs b/src/NadekoBot/Modules/Help/HelpService.cs similarity index 100% rename from src/NadekoBot/Modules/Help/Services/HelpService.cs rename to src/NadekoBot/Modules/Help/HelpService.cs diff --git a/src/NadekoBot/Modules/Music/Common/ICachableTrackData.cs b/src/NadekoBot/Modules/Music/_Common/ICachableTrackData.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/ICachableTrackData.cs rename to src/NadekoBot/Modules/Music/_Common/ICachableTrackData.cs diff --git a/src/NadekoBot/Modules/Music/Common/ILocalTrackResolver.cs b/src/NadekoBot/Modules/Music/_Common/ILocalTrackResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/ILocalTrackResolver.cs rename to src/NadekoBot/Modules/Music/_Common/ILocalTrackResolver.cs diff --git a/src/NadekoBot/Modules/Music/Common/IMusicPlayer.cs b/src/NadekoBot/Modules/Music/_Common/IMusicPlayer.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/IMusicPlayer.cs rename to src/NadekoBot/Modules/Music/_Common/IMusicPlayer.cs diff --git a/src/NadekoBot/Modules/Music/Common/IMusicQueue.cs b/src/NadekoBot/Modules/Music/_Common/IMusicQueue.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/IMusicQueue.cs rename to src/NadekoBot/Modules/Music/_Common/IMusicQueue.cs diff --git a/src/NadekoBot/Modules/Music/Common/IPlatformQueryResolver.cs b/src/NadekoBot/Modules/Music/_Common/IPlatformQueryResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/IPlatformQueryResolver.cs rename to src/NadekoBot/Modules/Music/_Common/IPlatformQueryResolver.cs diff --git a/src/NadekoBot/Modules/Music/Common/IQueuedTrackInfo.cs b/src/NadekoBot/Modules/Music/_Common/IQueuedTrackInfo.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/IQueuedTrackInfo.cs rename to src/NadekoBot/Modules/Music/_Common/IQueuedTrackInfo.cs diff --git a/src/NadekoBot/Modules/Music/Common/IRadioResolver.cs b/src/NadekoBot/Modules/Music/_Common/IRadioResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/IRadioResolver.cs rename to src/NadekoBot/Modules/Music/_Common/IRadioResolver.cs diff --git a/src/NadekoBot/Modules/Music/Common/ISoundcloudResolver.cs b/src/NadekoBot/Modules/Music/_Common/ISoundcloudResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/ISoundcloudResolver.cs rename to src/NadekoBot/Modules/Music/_Common/ISoundcloudResolver.cs diff --git a/src/NadekoBot/Modules/Music/Common/ITrackCacher.cs b/src/NadekoBot/Modules/Music/_Common/ITrackCacher.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/ITrackCacher.cs rename to src/NadekoBot/Modules/Music/_Common/ITrackCacher.cs diff --git a/src/NadekoBot/Modules/Music/Common/ITrackInfo.cs b/src/NadekoBot/Modules/Music/_Common/ITrackInfo.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/ITrackInfo.cs rename to src/NadekoBot/Modules/Music/_Common/ITrackInfo.cs diff --git a/src/NadekoBot/Modules/Music/Common/ITrackResolveProvider.cs b/src/NadekoBot/Modules/Music/_Common/ITrackResolveProvider.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/ITrackResolveProvider.cs rename to src/NadekoBot/Modules/Music/_Common/ITrackResolveProvider.cs diff --git a/src/NadekoBot/Modules/Music/Common/IVoiceProxy.cs b/src/NadekoBot/Modules/Music/_Common/IVoiceProxy.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/IVoiceProxy.cs rename to src/NadekoBot/Modules/Music/_Common/IVoiceProxy.cs diff --git a/src/NadekoBot/Modules/Music/Common/IYoutubeResolver.cs b/src/NadekoBot/Modules/Music/_Common/IYoutubeResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/IYoutubeResolver.cs rename to src/NadekoBot/Modules/Music/_Common/IYoutubeResolver.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/CachableTrackData.cs b/src/NadekoBot/Modules/Music/_Common/Impl/CachableTrackData.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/CachableTrackData.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/CachableTrackData.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/MultimediaTimer.cs b/src/NadekoBot/Modules/Music/_Common/Impl/MultimediaTimer.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/MultimediaTimer.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/MultimediaTimer.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/MusicExtensions.cs b/src/NadekoBot/Modules/Music/_Common/Impl/MusicExtensions.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/MusicExtensions.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/MusicExtensions.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/MusicPlatform.cs b/src/NadekoBot/Modules/Music/_Common/Impl/MusicPlatform.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/MusicPlatform.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/MusicPlatform.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/MusicPlayer.cs b/src/NadekoBot/Modules/Music/_Common/Impl/MusicPlayer.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/MusicPlayer.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/MusicPlayer.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/MusicQueue.cs b/src/NadekoBot/Modules/Music/_Common/Impl/MusicQueue.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/MusicQueue.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/MusicQueue.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/RedisTrackCacher.cs b/src/NadekoBot/Modules/Music/_Common/Impl/RedisTrackCacher.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/RedisTrackCacher.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/RedisTrackCacher.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/RemoteTrackInfo.cs b/src/NadekoBot/Modules/Music/_Common/Impl/RemoteTrackInfo.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/RemoteTrackInfo.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/RemoteTrackInfo.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/SimpleTrackInfo.cs b/src/NadekoBot/Modules/Music/_Common/Impl/SimpleTrackInfo.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/SimpleTrackInfo.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/SimpleTrackInfo.cs diff --git a/src/NadekoBot/Modules/Music/Common/Impl/VoiceProxy.cs b/src/NadekoBot/Modules/Music/_Common/Impl/VoiceProxy.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Impl/VoiceProxy.cs rename to src/NadekoBot/Modules/Music/_Common/Impl/VoiceProxy.cs diff --git a/src/NadekoBot/Modules/Music/Common/Resolvers/LocalTrackResolver.cs b/src/NadekoBot/Modules/Music/_Common/Resolvers/LocalTrackResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Resolvers/LocalTrackResolver.cs rename to src/NadekoBot/Modules/Music/_Common/Resolvers/LocalTrackResolver.cs diff --git a/src/NadekoBot/Modules/Music/Common/Resolvers/RadioResolveStrategy.cs b/src/NadekoBot/Modules/Music/_Common/Resolvers/RadioResolveStrategy.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Resolvers/RadioResolveStrategy.cs rename to src/NadekoBot/Modules/Music/_Common/Resolvers/RadioResolveStrategy.cs diff --git a/src/NadekoBot/Modules/Music/Common/Resolvers/SoundcloudResolver.cs b/src/NadekoBot/Modules/Music/_Common/Resolvers/SoundcloudResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Resolvers/SoundcloudResolver.cs rename to src/NadekoBot/Modules/Music/_Common/Resolvers/SoundcloudResolver.cs diff --git a/src/NadekoBot/Modules/Music/Common/Resolvers/TrackResolveProvider.cs b/src/NadekoBot/Modules/Music/_Common/Resolvers/TrackResolveProvider.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Resolvers/TrackResolveProvider.cs rename to src/NadekoBot/Modules/Music/_Common/Resolvers/TrackResolveProvider.cs diff --git a/src/NadekoBot/Modules/Music/Common/Resolvers/YtdlYoutubeResolver.cs b/src/NadekoBot/Modules/Music/_Common/Resolvers/YtdlYoutubeResolver.cs similarity index 100% rename from src/NadekoBot/Modules/Music/Common/Resolvers/YtdlYoutubeResolver.cs rename to src/NadekoBot/Modules/Music/_Common/Resolvers/YtdlYoutubeResolver.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Booru.cs b/src/NadekoBot/Modules/Nsfw/_Common/Booru.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Booru.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Booru.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/DapiImageObject.cs b/src/NadekoBot/Modules/Nsfw/_Common/DapiImageObject.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/DapiImageObject.cs rename to src/NadekoBot/Modules/Nsfw/_Common/DapiImageObject.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/DapiTag.cs b/src/NadekoBot/Modules/Nsfw/_Common/DapiTag.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/DapiTag.cs rename to src/NadekoBot/Modules/Nsfw/_Common/DapiTag.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/DerpiContainer.cs b/src/NadekoBot/Modules/Nsfw/_Common/DerpiContainer.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/DerpiContainer.cs rename to src/NadekoBot/Modules/Nsfw/_Common/DerpiContainer.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/DanbooruImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/DanbooruImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/DanbooruImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/DanbooruImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/DapiImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/DapiImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/DapiImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/DapiImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/DerpibooruImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/DerpibooruImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/DerpibooruImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/DerpibooruImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/E621ImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/E621ImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/E621ImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/E621ImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/E621Response.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/E621Response.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/E621Response.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/E621Response.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/GelbooruImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/GelbooruImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/GelbooruImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/GelbooruImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/IImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/IImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/IImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/IImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/ImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/ImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/ImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/ImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/ImageDownloaderHelper.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/ImageDownloaderHelper.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/ImageDownloaderHelper.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/ImageDownloaderHelper.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/KonachanImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/KonachanImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/KonachanImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/KonachanImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/Rule34ImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/Rule34ImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/Rule34ImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/Rule34ImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/SafebooruImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/SafebooruImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/SafebooruImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/SafebooruImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/SankakuImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/SankakuImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/SankakuImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/SankakuImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Downloaders/YandereImageDownloader.cs b/src/NadekoBot/Modules/Nsfw/_Common/Downloaders/YandereImageDownloader.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Downloaders/YandereImageDownloader.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Downloaders/YandereImageDownloader.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/E621Object.cs b/src/NadekoBot/Modules/Nsfw/_Common/E621Object.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/E621Object.cs rename to src/NadekoBot/Modules/Nsfw/_Common/E621Object.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/IImageData.cs b/src/NadekoBot/Modules/Nsfw/_Common/IImageData.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/IImageData.cs rename to src/NadekoBot/Modules/Nsfw/_Common/IImageData.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/ImageData.cs b/src/NadekoBot/Modules/Nsfw/_Common/ImageData.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/ImageData.cs rename to src/NadekoBot/Modules/Nsfw/_Common/ImageData.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/Rule34Object.cs b/src/NadekoBot/Modules/Nsfw/_Common/Rule34Object.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/Rule34Object.cs rename to src/NadekoBot/Modules/Nsfw/_Common/Rule34Object.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/SafebooruElement.cs b/src/NadekoBot/Modules/Nsfw/_Common/SafebooruElement.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/SafebooruElement.cs rename to src/NadekoBot/Modules/Nsfw/_Common/SafebooruElement.cs diff --git a/src/NadekoBot/Modules/Nsfw/Common/SankakuImageObject.cs b/src/NadekoBot/Modules/Nsfw/_Common/SankakuImageObject.cs similarity index 100% rename from src/NadekoBot/Modules/Nsfw/Common/SankakuImageObject.cs rename to src/NadekoBot/Modules/Nsfw/_Common/SankakuImageObject.cs diff --git a/src/NadekoBot/Modules/Permissions/BlacklistCommands.cs b/src/NadekoBot/Modules/Permissions/Blacklist/BlacklistCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/BlacklistCommands.cs rename to src/NadekoBot/Modules/Permissions/Blacklist/BlacklistCommands.cs diff --git a/src/NadekoBot/Modules/Permissions/Services/BlacklistService.cs b/src/NadekoBot/Modules/Permissions/Blacklist/BlacklistService.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Services/BlacklistService.cs rename to src/NadekoBot/Modules/Permissions/Blacklist/BlacklistService.cs diff --git a/src/NadekoBot/Modules/Permissions/Services/CmdCdService.cs b/src/NadekoBot/Modules/Permissions/CommandCooldown/CmdCdService.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Services/CmdCdService.cs rename to src/NadekoBot/Modules/Permissions/CommandCooldown/CmdCdService.cs diff --git a/src/NadekoBot/Modules/Permissions/CmdCdsCommands.cs b/src/NadekoBot/Modules/Permissions/CommandCooldown/CmdCdsCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/CmdCdsCommands.cs rename to src/NadekoBot/Modules/Permissions/CommandCooldown/CmdCdsCommands.cs diff --git a/src/NadekoBot/Modules/Permissions/FilterCommands.cs b/src/NadekoBot/Modules/Permissions/Filter/FilterCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/FilterCommands.cs rename to src/NadekoBot/Modules/Permissions/Filter/FilterCommands.cs diff --git a/src/NadekoBot/Modules/Permissions/Services/FilterService.cs b/src/NadekoBot/Modules/Permissions/Filter/FilterService.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Services/FilterService.cs rename to src/NadekoBot/Modules/Permissions/Filter/FilterService.cs diff --git a/src/NadekoBot/Modules/Permissions/GlobalPermissionCommands.cs b/src/NadekoBot/Modules/Permissions/GlobalPermissions/GlobalPermissionCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/GlobalPermissionCommands.cs rename to src/NadekoBot/Modules/Permissions/GlobalPermissions/GlobalPermissionCommands.cs diff --git a/src/NadekoBot/Modules/Permissions/Services/GlobalPermissionService.cs b/src/NadekoBot/Modules/Permissions/GlobalPermissions/GlobalPermissionService.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Services/GlobalPermissionService.cs rename to src/NadekoBot/Modules/Permissions/GlobalPermissions/GlobalPermissionService.cs diff --git a/src/NadekoBot/Modules/Permissions/Services/PermissionsService.cs b/src/NadekoBot/Modules/Permissions/PermissionsService.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Services/PermissionsService.cs rename to src/NadekoBot/Modules/Permissions/PermissionsService.cs diff --git a/src/NadekoBot/Modules/Permissions/Common/PermissionCache.cs b/src/NadekoBot/Modules/Permissions/_Common/PermissionCache.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Common/PermissionCache.cs rename to src/NadekoBot/Modules/Permissions/_Common/PermissionCache.cs diff --git a/src/NadekoBot/Modules/Permissions/Common/PermissionExtensions.cs b/src/NadekoBot/Modules/Permissions/_Common/PermissionExtensions.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Common/PermissionExtensions.cs rename to src/NadekoBot/Modules/Permissions/_Common/PermissionExtensions.cs diff --git a/src/NadekoBot/Modules/Permissions/Common/PermissionsCollection.cs b/src/NadekoBot/Modules/Permissions/_Common/PermissionsCollection.cs similarity index 100% rename from src/NadekoBot/Modules/Permissions/Common/PermissionsCollection.cs rename to src/NadekoBot/Modules/Permissions/_Common/PermissionsCollection.cs diff --git a/src/NadekoBot/Modules/Searches/Common/AnimeResult.cs b/src/NadekoBot/Modules/Searches/Anime/AnimeResult.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/AnimeResult.cs rename to src/NadekoBot/Modules/Searches/Anime/AnimeResult.cs diff --git a/src/NadekoBot/Modules/Searches/AnimeSearchCommands.cs b/src/NadekoBot/Modules/Searches/Anime/AnimeSearchCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/AnimeSearchCommands.cs rename to src/NadekoBot/Modules/Searches/Anime/AnimeSearchCommands.cs diff --git a/src/NadekoBot/Modules/Searches/Services/AnimeSearchService.cs b/src/NadekoBot/Modules/Searches/Anime/AnimeSearchService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/AnimeSearchService.cs rename to src/NadekoBot/Modules/Searches/Anime/AnimeSearchService.cs diff --git a/src/NadekoBot/Modules/Searches/Common/MangaResult.cs b/src/NadekoBot/Modules/Searches/Anime/MangaResult.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/MangaResult.cs rename to src/NadekoBot/Modules/Searches/Anime/MangaResult.cs diff --git a/src/NadekoBot/Modules/Searches/CryptoCommands.cs b/src/NadekoBot/Modules/Searches/Crypto/CryptoCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/CryptoCommands.cs rename to src/NadekoBot/Modules/Searches/Crypto/CryptoCommands.cs diff --git a/src/NadekoBot/Modules/Searches/Services/CryptoService.cs b/src/NadekoBot/Modules/Searches/Crypto/CryptoService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/CryptoService.cs rename to src/NadekoBot/Modules/Searches/Crypto/CryptoService.cs diff --git a/src/NadekoBot/Modules/Searches/FeedCommands.cs b/src/NadekoBot/Modules/Searches/Feeds/FeedCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/FeedCommands.cs rename to src/NadekoBot/Modules/Searches/Feeds/FeedCommands.cs diff --git a/src/NadekoBot/Modules/Searches/Services/FeedsService.cs b/src/NadekoBot/Modules/Searches/Feeds/FeedsService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/FeedsService.cs rename to src/NadekoBot/Modules/Searches/Feeds/FeedsService.cs diff --git a/src/NadekoBot/Modules/Searches/Services/SearchesService.cs b/src/NadekoBot/Modules/Searches/SearchesService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/SearchesService.cs rename to src/NadekoBot/Modules/Searches/SearchesService.cs diff --git a/src/NadekoBot/Modules/Searches/StreamNotificationCommands.cs b/src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/StreamNotificationCommands.cs rename to src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationCommands.cs diff --git a/src/NadekoBot/Modules/Searches/Services/StreamNotificationService.cs b/src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/StreamNotificationService.cs rename to src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationService.cs diff --git a/src/NadekoBot/Modules/Searches/Services/ITranslateService.cs b/src/NadekoBot/Modules/Searches/Translate/ITranslateService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/ITranslateService.cs rename to src/NadekoBot/Modules/Searches/Translate/ITranslateService.cs diff --git a/src/NadekoBot/Modules/Searches/Services/TranslateService.cs b/src/NadekoBot/Modules/Searches/Translate/TranslateService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/TranslateService.cs rename to src/NadekoBot/Modules/Searches/Translate/TranslateService.cs diff --git a/src/NadekoBot/Modules/Searches/TranslatorCommands.cs b/src/NadekoBot/Modules/Searches/Translate/TranslatorCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/TranslatorCommands.cs rename to src/NadekoBot/Modules/Searches/Translate/TranslatorCommands.cs diff --git a/src/NadekoBot/Modules/Searches/Services/YtTrackService.cs b/src/NadekoBot/Modules/Searches/YoutubeTrack/YtTrackService.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Services/YtTrackService.cs rename to src/NadekoBot/Modules/Searches/YoutubeTrack/YtTrackService.cs diff --git a/src/NadekoBot/Modules/Searches/YtUploadCommands.cs b/src/NadekoBot/Modules/Searches/YoutubeTrack/YtUploadCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/YtUploadCommands.cs rename to src/NadekoBot/Modules/Searches/YoutubeTrack/YtUploadCommands.cs diff --git a/src/NadekoBot/Modules/Searches/Common/BibleVerses.cs b/src/NadekoBot/Modules/Searches/_Common/BibleVerses.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/BibleVerses.cs rename to src/NadekoBot/Modules/Searches/_Common/BibleVerses.cs diff --git a/src/NadekoBot/Modules/Searches/Common/CryptoData.cs b/src/NadekoBot/Modules/Searches/_Common/CryptoData.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/CryptoData.cs rename to src/NadekoBot/Modules/Searches/_Common/CryptoData.cs diff --git a/src/NadekoBot/Modules/Searches/Common/DefineModel.cs b/src/NadekoBot/Modules/Searches/_Common/DefineModel.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/DefineModel.cs rename to src/NadekoBot/Modules/Searches/_Common/DefineModel.cs diff --git a/src/NadekoBot/Modules/Searches/Common/E621Object.cs b/src/NadekoBot/Modules/Searches/_Common/E621Object.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/E621Object.cs rename to src/NadekoBot/Modules/Searches/_Common/E621Object.cs diff --git a/src/NadekoBot/Modules/Searches/Common/Exceptions/StreamNotFoundException.cs b/src/NadekoBot/Modules/Searches/_Common/Exceptions/StreamNotFoundException.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/Exceptions/StreamNotFoundException.cs rename to src/NadekoBot/Modules/Searches/_Common/Exceptions/StreamNotFoundException.cs diff --git a/src/NadekoBot/Modules/Searches/Common/Gallery.cs b/src/NadekoBot/Modules/Searches/_Common/Gallery.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/Gallery.cs rename to src/NadekoBot/Modules/Searches/_Common/Gallery.cs diff --git a/src/NadekoBot/Modules/Searches/Common/GatariUserResponse.cs b/src/NadekoBot/Modules/Searches/_Common/GatariUserResponse.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/GatariUserResponse.cs rename to src/NadekoBot/Modules/Searches/_Common/GatariUserResponse.cs diff --git a/src/NadekoBot/Modules/Searches/Common/GatariUserStatsResponse.cs b/src/NadekoBot/Modules/Searches/_Common/GatariUserStatsResponse.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/GatariUserStatsResponse.cs rename to src/NadekoBot/Modules/Searches/_Common/GatariUserStatsResponse.cs diff --git a/src/NadekoBot/Modules/Searches/Common/GoogleSearchResult.cs b/src/NadekoBot/Modules/Searches/_Common/GoogleSearchResult.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/GoogleSearchResult.cs rename to src/NadekoBot/Modules/Searches/_Common/GoogleSearchResult.cs diff --git a/src/NadekoBot/Modules/Searches/Common/HearthstoneCardData.cs b/src/NadekoBot/Modules/Searches/_Common/HearthstoneCardData.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/HearthstoneCardData.cs rename to src/NadekoBot/Modules/Searches/_Common/HearthstoneCardData.cs diff --git a/src/NadekoBot/Modules/Searches/Common/ImageCacherObject.cs b/src/NadekoBot/Modules/Searches/_Common/ImageCacherObject.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/ImageCacherObject.cs rename to src/NadekoBot/Modules/Searches/_Common/ImageCacherObject.cs diff --git a/src/NadekoBot/Modules/Searches/Common/LowerCaseNamingPolicy.cs b/src/NadekoBot/Modules/Searches/_Common/LowerCaseNamingPolicy.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/LowerCaseNamingPolicy.cs rename to src/NadekoBot/Modules/Searches/_Common/LowerCaseNamingPolicy.cs diff --git a/src/NadekoBot/Modules/Searches/Common/MagicItem.cs b/src/NadekoBot/Modules/Searches/_Common/MagicItem.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/MagicItem.cs rename to src/NadekoBot/Modules/Searches/_Common/MagicItem.cs diff --git a/src/NadekoBot/Modules/Searches/Common/MtgData.cs b/src/NadekoBot/Modules/Searches/_Common/MtgData.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/MtgData.cs rename to src/NadekoBot/Modules/Searches/_Common/MtgData.cs diff --git a/src/NadekoBot/Modules/Searches/Common/NhentaiApiModel.cs b/src/NadekoBot/Modules/Searches/_Common/NhentaiApiModel.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/NhentaiApiModel.cs rename to src/NadekoBot/Modules/Searches/_Common/NhentaiApiModel.cs diff --git a/src/NadekoBot/Modules/Searches/Common/NovelData.cs b/src/NadekoBot/Modules/Searches/_Common/NovelData.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/NovelData.cs rename to src/NadekoBot/Modules/Searches/_Common/NovelData.cs diff --git a/src/NadekoBot/Modules/Searches/Common/OmdbMovie.cs b/src/NadekoBot/Modules/Searches/_Common/OmdbMovie.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/OmdbMovie.cs rename to src/NadekoBot/Modules/Searches/_Common/OmdbMovie.cs diff --git a/src/NadekoBot/Modules/Searches/Common/OsuUserData.cs b/src/NadekoBot/Modules/Searches/_Common/OsuUserData.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/OsuUserData.cs rename to src/NadekoBot/Modules/Searches/_Common/OsuUserData.cs diff --git a/src/NadekoBot/Modules/Searches/Common/PathOfExileModels.cs b/src/NadekoBot/Modules/Searches/_Common/PathOfExileModels.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/PathOfExileModels.cs rename to src/NadekoBot/Modules/Searches/_Common/PathOfExileModels.cs diff --git a/src/NadekoBot/Modules/Searches/Common/SteamGameId.cs b/src/NadekoBot/Modules/Searches/_Common/SteamGameId.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/SteamGameId.cs rename to src/NadekoBot/Modules/Searches/_Common/SteamGameId.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/PicartoChannelResponse.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/PicartoChannelResponse.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/PicartoChannelResponse.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/PicartoChannelResponse.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/StreamData.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/StreamData.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/StreamData.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/StreamData.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/StreamDataKey.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/StreamDataKey.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/StreamDataKey.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/StreamDataKey.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/TwitchResponseHelix.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/TwitchResponseHelix.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/TwitchResponseHelix.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/TwitchResponseHelix.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/TwitchResponseV5.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/TwitchResponseV5.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/TwitchResponseV5.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/TwitchResponseV5.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/TwitchUsersResponseV5.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/TwitchUsersResponseV5.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Models/TwitchUsersResponseV5.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Models/TwitchUsersResponseV5.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/NotifChecker.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/NotifChecker.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/NotifChecker.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/NotifChecker.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/PicartoProvider.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/PicartoProvider.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/PicartoProvider.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/PicartoProvider.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/Provider.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/Provider.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/Provider.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/Provider.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/TwitchHelixProvider.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/TwitchHelixProvider.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/TwitchHelixProvider.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/TwitchHelixProvider.cs diff --git a/src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/TwitchProvider.cs b/src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/TwitchProvider.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/StreamNotifications/Providers/TwitchProvider.cs rename to src/NadekoBot/Modules/Searches/_Common/StreamNotifications/Providers/TwitchProvider.cs diff --git a/src/NadekoBot/Modules/Searches/Common/TimeData.cs b/src/NadekoBot/Modules/Searches/_Common/TimeData.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/TimeData.cs rename to src/NadekoBot/Modules/Searches/_Common/TimeData.cs diff --git a/src/NadekoBot/Modules/Searches/Common/TimeModels.cs b/src/NadekoBot/Modules/Searches/_Common/TimeModels.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/TimeModels.cs rename to src/NadekoBot/Modules/Searches/_Common/TimeModels.cs diff --git a/src/NadekoBot/Modules/Searches/Common/UrbanDef.cs b/src/NadekoBot/Modules/Searches/_Common/UrbanDef.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/UrbanDef.cs rename to src/NadekoBot/Modules/Searches/_Common/UrbanDef.cs diff --git a/src/NadekoBot/Modules/Searches/Common/WeatherModels.cs b/src/NadekoBot/Modules/Searches/_Common/WeatherModels.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/WeatherModels.cs rename to src/NadekoBot/Modules/Searches/_Common/WeatherModels.cs diff --git a/src/NadekoBot/Modules/Searches/Common/WikipediaApiModel.cs b/src/NadekoBot/Modules/Searches/_Common/WikipediaApiModel.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/WikipediaApiModel.cs rename to src/NadekoBot/Modules/Searches/_Common/WikipediaApiModel.cs diff --git a/src/NadekoBot/Modules/Searches/Common/WoWJoke.cs b/src/NadekoBot/Modules/Searches/_Common/WoWJoke.cs similarity index 100% rename from src/NadekoBot/Modules/Searches/Common/WoWJoke.cs rename to src/NadekoBot/Modules/Searches/_Common/WoWJoke.cs diff --git a/src/NadekoBot/Modules/Utility/CalcCommands.cs b/src/NadekoBot/Modules/Utility/Calc/CalcCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/CalcCommands.cs rename to src/NadekoBot/Modules/Utility/Calc/CalcCommands.cs diff --git a/src/NadekoBot/Modules/Utility/CommandMapCommands.cs b/src/NadekoBot/Modules/Utility/CommandMap/CommandMapCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/CommandMapCommands.cs rename to src/NadekoBot/Modules/Utility/CommandMap/CommandMapCommands.cs diff --git a/src/NadekoBot/Modules/Utility/Services/CommandMapService.cs b/src/NadekoBot/Modules/Utility/CommandMap/CommandMapService.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Services/CommandMapService.cs rename to src/NadekoBot/Modules/Utility/CommandMap/CommandMapService.cs diff --git a/src/NadekoBot/Modules/Utility/InfoCommands.cs b/src/NadekoBot/Modules/Utility/Info/InfoCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/InfoCommands.cs rename to src/NadekoBot/Modules/Utility/Info/InfoCommands.cs diff --git a/src/NadekoBot/Modules/Utility/InviteCommands.cs b/src/NadekoBot/Modules/Utility/Info/InviteCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/InviteCommands.cs rename to src/NadekoBot/Modules/Utility/Info/InviteCommands.cs diff --git a/src/NadekoBot/Modules/Utility/Services/InviteService.cs b/src/NadekoBot/Modules/Utility/Invite/InviteService.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Services/InviteService.cs rename to src/NadekoBot/Modules/Utility/Invite/InviteService.cs diff --git a/src/NadekoBot/Modules/Utility/Services/PatreonRewardsService.cs b/src/NadekoBot/Modules/Utility/Patreon/PatreonRewardsService.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Services/PatreonRewardsService.cs rename to src/NadekoBot/Modules/Utility/Patreon/PatreonRewardsService.cs diff --git a/src/NadekoBot/Modules/Utility/QuoteCommands.cs b/src/NadekoBot/Modules/Utility/Quote/QuoteCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/QuoteCommands.cs rename to src/NadekoBot/Modules/Utility/Quote/QuoteCommands.cs diff --git a/src/NadekoBot/Modules/Utility/RemindCommands.cs b/src/NadekoBot/Modules/Utility/Remind/RemindCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/RemindCommands.cs rename to src/NadekoBot/Modules/Utility/Remind/RemindCommands.cs diff --git a/src/NadekoBot/Modules/Utility/Services/RemindService.cs b/src/NadekoBot/Modules/Utility/Remind/RemindService.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Services/RemindService.cs rename to src/NadekoBot/Modules/Utility/Remind/RemindService.cs diff --git a/src/NadekoBot/Modules/Utility/RepeatCommands.cs b/src/NadekoBot/Modules/Utility/Repeater/RepeatCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/RepeatCommands.cs rename to src/NadekoBot/Modules/Utility/Repeater/RepeatCommands.cs diff --git a/src/NadekoBot/Modules/Utility/Services/RepeaterService.cs b/src/NadekoBot/Modules/Utility/Repeater/RepeaterService.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Services/RepeaterService.cs rename to src/NadekoBot/Modules/Utility/Repeater/RepeaterService.cs diff --git a/src/NadekoBot/Modules/Utility/StreamRoleCommands.cs b/src/NadekoBot/Modules/Utility/StreamRole/StreamRoleCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/StreamRoleCommands.cs rename to src/NadekoBot/Modules/Utility/StreamRole/StreamRoleCommands.cs diff --git a/src/NadekoBot/Modules/Utility/Services/StreamRoleService.cs b/src/NadekoBot/Modules/Utility/StreamRole/StreamRoleService.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Services/StreamRoleService.cs rename to src/NadekoBot/Modules/Utility/StreamRole/StreamRoleService.cs diff --git a/src/NadekoBot/Modules/Utility/UnitConversionCommands.cs b/src/NadekoBot/Modules/Utility/UnitConversion/UnitConversionCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/UnitConversionCommands.cs rename to src/NadekoBot/Modules/Utility/UnitConversion/UnitConversionCommands.cs diff --git a/src/NadekoBot/Modules/Utility/VerboseErrorCommands.cs b/src/NadekoBot/Modules/Utility/VerboseErrors/VerboseErrorCommands.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/VerboseErrorCommands.cs rename to src/NadekoBot/Modules/Utility/VerboseErrors/VerboseErrorCommands.cs diff --git a/src/NadekoBot/Modules/Utility/Services/VerboseErrorsService.cs b/src/NadekoBot/Modules/Utility/VerboseErrors/VerboseErrorsService.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Services/VerboseErrorsService.cs rename to src/NadekoBot/Modules/Utility/VerboseErrors/VerboseErrorsService.cs diff --git a/src/NadekoBot/Modules/Utility/Common/ConvertUnit.cs b/src/NadekoBot/Modules/Utility/_Common/ConvertUnit.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/ConvertUnit.cs rename to src/NadekoBot/Modules/Utility/_Common/ConvertUnit.cs diff --git a/src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRoleNotFoundException.cs b/src/NadekoBot/Modules/Utility/_Common/Exceptions/StreamRoleNotFoundException.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRoleNotFoundException.cs rename to src/NadekoBot/Modules/Utility/_Common/Exceptions/StreamRoleNotFoundException.cs diff --git a/src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRolePermissionException.cs b/src/NadekoBot/Modules/Utility/_Common/Exceptions/StreamRolePermissionException.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/Exceptions/StreamRolePermissionException.cs rename to src/NadekoBot/Modules/Utility/_Common/Exceptions/StreamRolePermissionException.cs diff --git a/src/NadekoBot/Modules/Utility/Common/Patreon/PatreonData.cs b/src/NadekoBot/Modules/Utility/_Common/Patreon/PatreonData.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/Patreon/PatreonData.cs rename to src/NadekoBot/Modules/Utility/_Common/Patreon/PatreonData.cs diff --git a/src/NadekoBot/Modules/Utility/Common/StreamRoleListType.cs b/src/NadekoBot/Modules/Utility/_Common/StreamRoleListType.cs similarity index 100% rename from src/NadekoBot/Modules/Utility/Common/StreamRoleListType.cs rename to src/NadekoBot/Modules/Utility/_Common/StreamRoleListType.cs diff --git a/src/NadekoBot/Modules/Xp/Club.cs b/src/NadekoBot/Modules/Xp/Club/Club.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Club.cs rename to src/NadekoBot/Modules/Xp/Club/Club.cs diff --git a/src/NadekoBot/Modules/Xp/Services/ClubService.cs b/src/NadekoBot/Modules/Xp/Club/ClubService.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Services/ClubService.cs rename to src/NadekoBot/Modules/Xp/Club/ClubService.cs diff --git a/src/NadekoBot/Modules/Xp/Common/XpConfig.cs b/src/NadekoBot/Modules/Xp/XpConfig.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Common/XpConfig.cs rename to src/NadekoBot/Modules/Xp/XpConfig.cs diff --git a/src/NadekoBot/Modules/Xp/Services/XpConfigService.cs b/src/NadekoBot/Modules/Xp/XpConfigService.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Services/XpConfigService.cs rename to src/NadekoBot/Modules/Xp/XpConfigService.cs diff --git a/src/NadekoBot/Modules/Xp/Services/XpService.cs b/src/NadekoBot/Modules/Xp/XpService.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Services/XpService.cs rename to src/NadekoBot/Modules/Xp/XpService.cs diff --git a/src/NadekoBot/Modules/Xp/Extensions/Extensions.cs b/src/NadekoBot/Modules/Xp/_Common/Extensions.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Extensions/Extensions.cs rename to src/NadekoBot/Modules/Xp/_Common/Extensions.cs diff --git a/src/NadekoBot/Modules/Xp/Common/FullUserStats.cs b/src/NadekoBot/Modules/Xp/_Common/FullUserStats.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Common/FullUserStats.cs rename to src/NadekoBot/Modules/Xp/_Common/FullUserStats.cs diff --git a/src/NadekoBot/Modules/Xp/Common/LevelStats.cs b/src/NadekoBot/Modules/Xp/_Common/LevelStats.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Common/LevelStats.cs rename to src/NadekoBot/Modules/Xp/_Common/LevelStats.cs diff --git a/src/NadekoBot/Modules/Xp/Services/UserCacheItem.cs b/src/NadekoBot/Modules/Xp/_Common/UserCacheItem.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Services/UserCacheItem.cs rename to src/NadekoBot/Modules/Xp/_Common/UserCacheItem.cs diff --git a/src/NadekoBot/Modules/Xp/Common/XpTemplate.cs b/src/NadekoBot/Modules/Xp/_Common/XpTemplate.cs similarity index 100% rename from src/NadekoBot/Modules/Xp/Common/XpTemplate.cs rename to src/NadekoBot/Modules/Xp/_Common/XpTemplate.cs