From db2328cdaf7fb815e89658ace35165555b49a3fb Mon Sep 17 00:00:00 2001 From: Kwoth Date: Thu, 16 Mar 2023 02:41:40 +0100 Subject: [PATCH] nadekobot almost builds --- NadekoBot.sln | 9 ++ .../Abstractions/creds/IBotCredentials.cs | 2 +- .../Abstractions/strings/CommandStrings.cs | 13 ++ .../Abstractions/strings/IBotStrings.cs | 4 +- .../strings/IBotStringsProvider.cs | 2 +- .../Abstractions/strings/ICommandStrings.cs | 8 -- .../Abstractions/strings/IStringsSource.cs | 3 +- .../Abstractions/strings/LocStr.cs | 26 ++-- src/Nadeko.Bot.Common/Configs/BotConfig.cs | 1 - .../DoAsUserMessage.cs | 0 .../Extensions/DbExtensions.cs | 2 +- .../IPlaceholderProvider.cs | 0 .../Nadeko.Bot.Common.csproj | 10 +- .../Replacements/ReplacementBuilder.cs | 29 ++--- .../Services/ICommandHandler.cs | 11 +- .../Settings/ConfigServiceBase.cs | 1 - .../TypeReaders/CommandOrExprInfo.cs | 23 ++++ .../Yml/CommentAttribute.cs | 0 .../Yml/CommentGatheringTypeInspector.cs | 0 .../Yml/CommentsObjectDescriptor.cs | 0 .../Yml/CommentsObjectGraphVisitor.cs | 0 .../Yml/MultilineScalarFlowStyleEmitter.cs | 0 .../Yml/Rgba32Converter.cs | 0 .../Yml/UriConverter.cs | 0 .../Common => Nadeko.Bot.Common}/Yml/Yaml.cs | 0 .../_Extensions/ReflectionExtensions.cs | 2 +- .../data/aliases.yml | 0 .../data/bot.yml | 0 .../data/fonts/NotoSans-Bold.ttf | Bin .../data/fonts/Symbola-10.24.ttf | Bin .../data/fonts/Uni Sans.ttf | Bin .../data/fonts/dotty.ttf | Bin .../data/gambling.yml | 0 .../data/games.yml | 0 .../data/hangman/animals.yml | 0 .../data/hangman/anime.yml | 0 .../data/hangman/countries.yml | 0 .../data/hangman/movies.yml | 0 .../data/hangman/things.yml | 0 .../data/images.yml | 0 .../data/images/cards/ace_of_clubs.jpg | Bin .../data/images/cards/ace_of_diamonds.jpg | Bin .../data/images/cards/ace_of_hearts.jpg | Bin .../data/images/cards/ace_of_spades.jpg | Bin .../data/images/cards/black_joker.jpg | Bin .../data/images/cards/eight_of_clubs.jpg | Bin .../data/images/cards/eight_of_diamonds.jpg | Bin .../data/images/cards/eight_of_hearts.jpg | Bin .../data/images/cards/eight_of_spades.jpg | Bin .../data/images/cards/five_of_clubs.jpg | Bin .../data/images/cards/five_of_diamonds.jpg | Bin .../data/images/cards/five_of_hearts.jpg | Bin .../data/images/cards/five_of_spades.jpg | Bin .../data/images/cards/four_of_clubs.jpg | Bin .../data/images/cards/four_of_diamonds.jpg | Bin .../data/images/cards/four_of_hearts.jpg | Bin .../data/images/cards/four_of_spades.jpg | Bin .../data/images/cards/jack_of_clubs.jpg | Bin .../data/images/cards/jack_of_diamonds.jpg | Bin .../data/images/cards/jack_of_hearts.jpg | Bin .../data/images/cards/jack_of_spades.jpg | Bin .../data/images/cards/king_of_clubs.jpg | Bin .../data/images/cards/king_of_diamonds.jpg | Bin .../data/images/cards/king_of_hearts.jpg | Bin .../data/images/cards/king_of_spades.jpg | Bin .../data/images/cards/nine_of_clubs.jpg | Bin .../data/images/cards/nine_of_diamonds.jpg | Bin .../data/images/cards/nine_of_hearts.jpg | Bin .../data/images/cards/nine_of_spades.jpg | Bin .../data/images/cards/queen_of_clubs.jpg | Bin .../data/images/cards/queen_of_diamonds.jpg | Bin .../data/images/cards/queen_of_hearts.jpg | Bin .../data/images/cards/queen_of_spades.jpg | Bin .../data/images/cards/red_joker.jpg | Bin .../data/images/cards/seven_of_clubs.jpg | Bin .../data/images/cards/seven_of_diamonds.jpg | Bin .../data/images/cards/seven_of_hearts.jpg | Bin .../data/images/cards/seven_of_spades.jpg | Bin .../data/images/cards/six_of_clubs.jpg | Bin .../data/images/cards/six_of_diamonds.jpg | Bin .../data/images/cards/six_of_hearts.jpg | Bin .../data/images/cards/six_of_spades.jpg | Bin .../data/images/cards/ten_of_clubs.jpg | Bin .../data/images/cards/ten_of_diamonds.jpg | Bin .../data/images/cards/ten_of_hearts.jpg | Bin .../data/images/cards/ten_of_spades.jpg | Bin .../data/images/cards/three_of_clubs.jpg | Bin .../data/images/cards/three_of_diamonds.jpg | Bin .../data/images/cards/three_of_hearts.jpg | Bin .../data/images/cards/three_of_spades.jpg | Bin .../data/images/cards/two_of_clubs.jpg | Bin .../data/images/cards/two_of_diamonds.jpg | Bin .../data/images/cards/two_of_hearts.jpg | Bin .../data/images/cards/two_of_spades.jpg | Bin .../data/images/frame_gold.png | Bin .../data/images/frame_silver.png | Bin .../data/last_known_version.txt | 1 + .../data/lib/libopus.so | Bin .../data/lib/libsodium.dll | Bin .../data/lib/libsodium.so | Bin .../data/lib/opus.dll | Bin .../data/magicitems.json | 0 .../NorthShirahebi/NorthShirahebi.deps.json | 115 ++++++++++++++++++ .../medusae/NorthShirahebi/NorthShirahebi.dll | Bin 0 -> 30208 bytes .../NorthShirahebi.runtimeconfig.json | 10 ++ .../data/medusae/NorthShirahebi/cmds.yml | 70 +++++++++++ .../data/medusae/NorthShirahebi/res.yml | 1 + .../data/medusae/medusa.yml | 1 + .../data/patron.yml | 0 .../data/pokemon/LICENSE | 0 .../data/pokemon/name-id_map.json | 0 .../data/pokemon/pokemon_abilities.json | 0 .../data/pokemon/pokemon_list.json | 0 .../data/searches.yml | 0 .../data/strings/commands/commands.en-US.yml | 0 .../data/strings/responses/responses.ar.json | 0 .../strings/responses/responses.cs-CZ.json | 0 .../strings/responses/responses.da-DK.json | 0 .../strings/responses/responses.de-DE.json | 0 .../strings/responses/responses.en-US.json | 0 .../strings/responses/responses.es-ES.json | 0 .../strings/responses/responses.fr-FR.json | 0 .../strings/responses/responses.he-IL.json | 0 .../strings/responses/responses.hu-HU.json | 0 .../strings/responses/responses.id-ID.json | 0 .../strings/responses/responses.it-IT.json | 0 .../strings/responses/responses.ja-JP.json | 0 .../strings/responses/responses.ko-KR.json | 0 .../strings/responses/responses.nb-NO.json | 0 .../strings/responses/responses.nl-NL.json | 0 .../strings/responses/responses.pl-PL.json | 0 .../strings/responses/responses.pt-BR.json | 0 .../strings/responses/responses.ro-RO.json | 0 .../strings/responses/responses.ru-RU.json | 0 .../responses/responses.sr-cyrl-rs.json | 0 .../strings/responses/responses.sv-SE.json | 0 .../strings/responses/responses.tr-TR.json | 0 .../strings/responses/responses.ts-TS.json | 0 .../strings/responses/responses.uk-UA.json | 0 .../strings/responses/responses.zh-CN.json | 0 .../strings/responses/responses.zh-TW.json | 0 .../data/trivia_questions.json | 0 .../data/typing_articles3.json | 0 .../data/units.json | 0 .../data/urero.json | 0 .../data/wowjokes.json | 0 .../data/xp.yml | 0 .../data/xp_template.json | 0 .../data/yomama.txt | 0 src/Nadeko.Bot.Db/Nadeko.Bot.Db.csproj | 5 - .../CloneableGenerator.cs | 0 .../Nadeko.Bot.Generators.Cloneable.csproj | 9 ++ .../SymbolExtensions.cs | 0 .../SyntaxReceiver.cs | 0 .../LocalizedStringsGenerator.cs | 30 ++--- .../NadekoBot.Modules.Expresssions.csproj | 4 + .../NadekoExpressionsService.cs | 1 + .../TypeReaders/CommandOrExprTypeReader.cs | 31 +++++ .../Common/Medusa/IMedusaLoaderService.cs | 24 ---- .../TypeReaders/BotCommandTypeReader.cs | 52 -------- .../DiscordPermOverrideCommands.cs | 1 + .../DiscordPermOverrideService.cs | 6 +- .../PlayingRotate/PlayingRotateService.cs | 6 +- src/NadekoBot/Modules/Help/HelpService.cs | 2 +- .../StreamNotificationService.cs | 1 + src/NadekoBot/NadekoBot.csproj | 25 +--- src/NadekoBot/Services/Impl/Localization.cs | 38 +++--- .../Services/strings/impl/BotStrings.cs | 14 +-- .../strings/impl/LocalFileStringsSource.cs | 4 +- .../strings/impl/MemoryBotStringsProvider.cs | 2 +- 170 files changed, 397 insertions(+), 202 deletions(-) create mode 100644 src/Nadeko.Bot.Common/Abstractions/strings/CommandStrings.cs delete mode 100644 src/Nadeko.Bot.Common/Abstractions/strings/ICommandStrings.cs rename src/{NadekoBot/Modules/Administration/Self => Nadeko.Bot.Common}/DoAsUserMessage.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/IPlaceholderProvider.cs (100%) create mode 100644 src/Nadeko.Bot.Common/TypeReaders/CommandOrExprInfo.cs rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/CommentAttribute.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/CommentGatheringTypeInspector.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/CommentsObjectDescriptor.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/CommentsObjectGraphVisitor.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/MultilineScalarFlowStyleEmitter.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/Rgba32Converter.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/UriConverter.cs (100%) rename src/{NadekoBot/Common => Nadeko.Bot.Common}/Yml/Yaml.cs (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/aliases.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/bot.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/fonts/NotoSans-Bold.ttf (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/fonts/Symbola-10.24.ttf (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/fonts/Uni Sans.ttf (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/fonts/dotty.ttf (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/gambling.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/games.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/hangman/animals.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/hangman/anime.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/hangman/countries.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/hangman/movies.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/hangman/things.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ace_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ace_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ace_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ace_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/black_joker.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/eight_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/eight_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/eight_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/eight_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/five_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/five_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/five_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/five_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/four_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/four_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/four_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/four_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/jack_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/jack_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/jack_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/jack_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/king_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/king_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/king_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/king_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/nine_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/nine_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/nine_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/nine_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/queen_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/queen_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/queen_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/queen_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/red_joker.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/seven_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/seven_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/seven_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/seven_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/six_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/six_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/six_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/six_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ten_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ten_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ten_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/ten_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/three_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/three_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/three_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/three_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/two_of_clubs.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/two_of_diamonds.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/two_of_hearts.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/cards/two_of_spades.jpg (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/frame_gold.png (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/images/frame_silver.png (100%) create mode 100644 src/Nadeko.Bot.Common/data/last_known_version.txt rename src/{NadekoBot => Nadeko.Bot.Common}/data/lib/libopus.so (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/lib/libsodium.dll (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/lib/libsodium.so (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/lib/opus.dll (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/magicitems.json (100%) create mode 100644 src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.deps.json create mode 100644 src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.dll create mode 100644 src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.runtimeconfig.json create mode 100644 src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/cmds.yml create mode 100644 src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/res.yml rename src/{NadekoBot => Nadeko.Bot.Common}/data/medusae/medusa.yml (81%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/patron.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/pokemon/LICENSE (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/pokemon/name-id_map.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/pokemon/pokemon_abilities.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/pokemon/pokemon_list.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/searches.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/commands/commands.en-US.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.ar.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.cs-CZ.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.da-DK.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.de-DE.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.en-US.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.es-ES.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.fr-FR.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.he-IL.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.hu-HU.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.id-ID.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.it-IT.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.ja-JP.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.ko-KR.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.nb-NO.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.nl-NL.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.pl-PL.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.pt-BR.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.ro-RO.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.ru-RU.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.sr-cyrl-rs.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.sv-SE.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.tr-TR.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.ts-TS.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.uk-UA.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.zh-CN.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/strings/responses/responses.zh-TW.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/trivia_questions.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/typing_articles3.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/units.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/urero.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/wowjokes.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/xp.yml (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/xp_template.json (100%) rename src/{NadekoBot => Nadeko.Bot.Common}/data/yomama.txt (100%) rename src/{NadekoBot.Generators/Cloneable => Nadeko.Bot.Generators.Cloneable}/CloneableGenerator.cs (100%) create mode 100644 src/Nadeko.Bot.Generators.Cloneable/Nadeko.Bot.Generators.Cloneable.csproj rename src/{NadekoBot.Generators/Cloneable => Nadeko.Bot.Generators.Cloneable}/SymbolExtensions.cs (100%) rename src/{NadekoBot.Generators/Cloneable => Nadeko.Bot.Generators.Cloneable}/SyntaxReceiver.cs (100%) create mode 100644 src/NadekoBot.Modules.Expresssions/TypeReaders/CommandOrExprTypeReader.cs delete mode 100644 src/NadekoBot/Common/Medusa/IMedusaLoaderService.cs diff --git a/NadekoBot.sln b/NadekoBot.sln index 805b062d0..4bb1b3a29 100644 --- a/NadekoBot.sln +++ b/NadekoBot.sln @@ -41,6 +41,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nadeko.Bot.Db", "src\Nadeko EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nadeko.Bot.Common", "src\Nadeko.Bot.Common\Nadeko.Bot.Common.csproj", "{02ABC10E-3323-4698-A388-C61D7D03797E}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Nadeko.Bot.Generators.Cloneable", "src\Nadeko.Bot.Generators.Cloneable\Nadeko.Bot.Generators.Cloneable.csproj", "{A5E71EE3-786E-438C-95C0-5BC558FCECCF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -120,6 +122,12 @@ Global {02ABC10E-3323-4698-A388-C61D7D03797E}.GlobalNadeko|Any CPU.Build.0 = Debug|Any CPU {02ABC10E-3323-4698-A388-C61D7D03797E}.Release|Any CPU.ActiveCfg = Release|Any CPU {02ABC10E-3323-4698-A388-C61D7D03797E}.Release|Any CPU.Build.0 = Release|Any CPU + {A5E71EE3-786E-438C-95C0-5BC558FCECCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {A5E71EE3-786E-438C-95C0-5BC558FCECCF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {A5E71EE3-786E-438C-95C0-5BC558FCECCF}.GlobalNadeko|Any CPU.ActiveCfg = Debug|Any CPU + {A5E71EE3-786E-438C-95C0-5BC558FCECCF}.GlobalNadeko|Any CPU.Build.0 = Debug|Any CPU + {A5E71EE3-786E-438C-95C0-5BC558FCECCF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {A5E71EE3-786E-438C-95C0-5BC558FCECCF}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -138,6 +146,7 @@ Global {92E239B9-C230-4475-9506-BED20174FD20} = {04929013-5BAB-42B0-B9B2-8F2BB8F16AF2} {02499E3E-3B04-4BC8-9B3C-D9494661F78E} = {04929013-5BAB-42B0-B9B2-8F2BB8F16AF2} {02ABC10E-3323-4698-A388-C61D7D03797E} = {04929013-5BAB-42B0-B9B2-8F2BB8F16AF2} + {A5E71EE3-786E-438C-95C0-5BC558FCECCF} = {04929013-5BAB-42B0-B9B2-8F2BB8F16AF2} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {5F3F555C-855F-4BE8-B526-D062D3E8ACA4} diff --git a/src/Nadeko.Bot.Common/Abstractions/creds/IBotCredentials.cs b/src/Nadeko.Bot.Common/Abstractions/creds/IBotCredentials.cs index e833f7128..530bdce02 100644 --- a/src/Nadeko.Bot.Common/Abstractions/creds/IBotCredentials.cs +++ b/src/Nadeko.Bot.Common/Abstractions/creds/IBotCredentials.cs @@ -5,7 +5,7 @@ public interface IBotCredentials { string Token { get; } string GoogleApiKey { get; } - ICollection OwnerIds { get; } + ICollection OwnerIds { get; set; } bool UsePrivilegedIntents { get; } string RapidApiKey { get; } diff --git a/src/Nadeko.Bot.Common/Abstractions/strings/CommandStrings.cs b/src/Nadeko.Bot.Common/Abstractions/strings/CommandStrings.cs new file mode 100644 index 000000000..4da36af9e --- /dev/null +++ b/src/Nadeko.Bot.Common/Abstractions/strings/CommandStrings.cs @@ -0,0 +1,13 @@ +#nullable disable +using YamlDotNet.Serialization; + +namespace NadekoBot.Services; + +public sealed class CommandStrings +{ + [YamlMember(Alias = "desc")] + public string Desc { get; set; } + + [YamlMember(Alias = "args")] + public string[] Args { get; set; } +} \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/Abstractions/strings/IBotStrings.cs b/src/Nadeko.Bot.Common/Abstractions/strings/IBotStrings.cs index 09bc896d7..3720ec642 100644 --- a/src/Nadeko.Bot.Common/Abstractions/strings/IBotStrings.cs +++ b/src/Nadeko.Bot.Common/Abstractions/strings/IBotStrings.cs @@ -12,6 +12,6 @@ public interface IBotStrings string GetText(string key, ulong? guildId = null, params object[] data); string GetText(string key, CultureInfo locale, params object[] data); void Reload(); - ICommandStrings GetCommandStrings(string commandName, ulong? guildId = null); - ICommandStrings GetCommandStrings(string commandName, CultureInfo cultureInfo); + CommandStrings GetCommandStrings(string commandName, ulong? guildId = null); + CommandStrings GetCommandStrings(string commandName, CultureInfo cultureInfo); } \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/Abstractions/strings/IBotStringsProvider.cs b/src/Nadeko.Bot.Common/Abstractions/strings/IBotStringsProvider.cs index 8491071b6..628923ac3 100644 --- a/src/Nadeko.Bot.Common/Abstractions/strings/IBotStringsProvider.cs +++ b/src/Nadeko.Bot.Common/Abstractions/strings/IBotStringsProvider.cs @@ -24,5 +24,5 @@ public interface IBotStringsProvider /// /// Language name /// Command name - ICommandStrings GetCommandStrings(string localeName, string commandName); + CommandStrings GetCommandStrings(string localeName, string commandName); } \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/Abstractions/strings/ICommandStrings.cs b/src/Nadeko.Bot.Common/Abstractions/strings/ICommandStrings.cs deleted file mode 100644 index b092523f9..000000000 --- a/src/Nadeko.Bot.Common/Abstractions/strings/ICommandStrings.cs +++ /dev/null @@ -1,8 +0,0 @@ -#nullable disable -namespace NadekoBot.Services; - -public interface ICommandStrings -{ - string Desc { get; set; } - string[] Args { get; set; } -} \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/Abstractions/strings/IStringsSource.cs b/src/Nadeko.Bot.Common/Abstractions/strings/IStringsSource.cs index 693168661..a801c01ea 100644 --- a/src/Nadeko.Bot.Common/Abstractions/strings/IStringsSource.cs +++ b/src/Nadeko.Bot.Common/Abstractions/strings/IStringsSource.cs @@ -1,4 +1,5 @@ #nullable disable + namespace NadekoBot.Services; /// @@ -12,5 +13,5 @@ public interface IStringsSource /// Dictionary(localename, Dictionary(key, response)) Dictionary> GetResponseStrings(); - Dictionary> GetCommandStrings(); + Dictionary> GetCommandStrings(); } \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/Abstractions/strings/LocStr.cs b/src/Nadeko.Bot.Common/Abstractions/strings/LocStr.cs index 6518265d6..4f1822e87 100644 --- a/src/Nadeko.Bot.Common/Abstractions/strings/LocStr.cs +++ b/src/Nadeko.Bot.Common/Abstractions/strings/LocStr.cs @@ -1,13 +1,13 @@ -namespace NadekoBot.Common; - -public readonly struct LocStr -{ - public readonly string Key; - public readonly object[] Params; - - public LocStr(string key, params object[] data) - { - Key = key; - Params = data; - } -} \ No newline at end of file +// namespace NadekoBot.Common; +// +// public readonly struct LocStr +// { +// public readonly string Key; +// public readonly object[] Params; +// +// public LocStr(string key, params object[] data) +// { +// Key = key; +// Params = data; +// } +// } \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/Configs/BotConfig.cs b/src/Nadeko.Bot.Common/Configs/BotConfig.cs index d9c508428..5df5572c9 100644 --- a/src/Nadeko.Bot.Common/Configs/BotConfig.cs +++ b/src/Nadeko.Bot.Common/Configs/BotConfig.cs @@ -4,7 +4,6 @@ using Cloneable; using NadekoBot.Common.Yml; using SixLabors.ImageSharp.PixelFormats; using System.Globalization; -using Microsoft.EntityFrameworkCore; using YamlDotNet.Core; using YamlDotNet.Serialization; diff --git a/src/NadekoBot/Modules/Administration/Self/DoAsUserMessage.cs b/src/Nadeko.Bot.Common/DoAsUserMessage.cs similarity index 100% rename from src/NadekoBot/Modules/Administration/Self/DoAsUserMessage.cs rename to src/Nadeko.Bot.Common/DoAsUserMessage.cs diff --git a/src/Nadeko.Bot.Common/Extensions/DbExtensions.cs b/src/Nadeko.Bot.Common/Extensions/DbExtensions.cs index 105617667..1731b5157 100644 --- a/src/Nadeko.Bot.Common/Extensions/DbExtensions.cs +++ b/src/Nadeko.Bot.Common/Extensions/DbExtensions.cs @@ -7,6 +7,6 @@ namespace NadekoBot.Extensions; public static class DbExtensions { - public static DiscordUser GetOrCreateUser(this NadekoContext ctx, IUser original, Func, IQueryable> includes = null) + public static DiscordUser GetOrCreateUser(this NadekoContext ctx, IUser original, Func, IQueryable>? includes = null) => ctx.GetOrCreateUser(original.Id, original.Username, original.Discriminator, original.AvatarId, includes); } \ No newline at end of file diff --git a/src/NadekoBot/Common/IPlaceholderProvider.cs b/src/Nadeko.Bot.Common/IPlaceholderProvider.cs similarity index 100% rename from src/NadekoBot/Common/IPlaceholderProvider.cs rename to src/Nadeko.Bot.Common/IPlaceholderProvider.cs diff --git a/src/Nadeko.Bot.Common/Nadeko.Bot.Common.csproj b/src/Nadeko.Bot.Common/Nadeko.Bot.Common.csproj index b1b0144ec..e5ce4812d 100644 --- a/src/Nadeko.Bot.Common/Nadeko.Bot.Common.csproj +++ b/src/Nadeko.Bot.Common/Nadeko.Bot.Common.csproj @@ -4,7 +4,6 @@ net7.0 enable enable - false @@ -25,5 +24,14 @@ True + + + + + + + PreserveNewest + + diff --git a/src/Nadeko.Bot.Common/Replacements/ReplacementBuilder.cs b/src/Nadeko.Bot.Common/Replacements/ReplacementBuilder.cs index 5a68d34a1..9b467bec6 100644 --- a/src/Nadeko.Bot.Common/Replacements/ReplacementBuilder.cs +++ b/src/Nadeko.Bot.Common/Replacements/ReplacementBuilder.cs @@ -1,6 +1,6 @@ #nullable disable -using NadekoBot.Modules.Administration.Services; using System.Text.RegularExpressions; +using NonBlocking; namespace NadekoBot.Common; @@ -59,19 +59,20 @@ public class ReplacementBuilder _reps.TryAdd("%server.members%", () => g is { } sg ? sg.MemberCount.ToString() : "?"); _reps.TryAdd("%server.boosters%", () => g.PremiumSubscriptionCount.ToString()); _reps.TryAdd("%server.boost_level%", () => ((int)g.PremiumTier).ToString()); - _reps.TryAdd("%server.time%", - () => - { - var to = TimeZoneInfo.Local; - if (g is not null) - { - if (GuildTimezoneService.AllServices.TryGetValue(client.CurrentUser.Id, out var tz)) - to = tz.GetTimeZoneOrDefault(g.Id) ?? TimeZoneInfo.Local; - } - - return TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.Utc, to).ToString("HH:mm ") - + to.StandardName.GetInitials(); - }); + // todo fix + // _reps.TryAdd("%server.time%", + // () => + // { + // var to = TimeZoneInfo.Local; + // if (g is not null) + // { + // if (GuildTimezoneService.AllServices.TryGetValue(client.CurrentUser.Id, out var tz)) + // to = tz.GetTimeZoneOrDefault(g.Id) ?? TimeZoneInfo.Local; + // } + // + // return TimeZoneInfo.ConvertTime(DateTime.UtcNow, TimeZoneInfo.Utc, to).ToString("HH:mm ") + // + to.StandardName.GetInitials(); + // }); return this; } diff --git a/src/Nadeko.Bot.Common/Services/ICommandHandler.cs b/src/Nadeko.Bot.Common/Services/ICommandHandler.cs index affb45e3e..5a6b893a4 100644 --- a/src/Nadeko.Bot.Common/Services/ICommandHandler.cs +++ b/src/Nadeko.Bot.Common/Services/ICommandHandler.cs @@ -1,6 +1,15 @@ -namespace NadekoBot.Services; +using NadekoBot.Modules.Administration; +using NonBlocking; + +namespace NadekoBot.Services; public interface ICommandHandler { string GetPrefix(IGuild ctxGuild); + string GetPrefix(ulong? id = null); + string SetDefaultPrefix(string toSet); + string SetPrefix(IGuild ctxGuild, string toSet); + ConcurrentDictionary UserMessagesSent { get; } + + Task TryRunCommand(SocketGuild guild, ISocketMessageChannel channel, IUserMessage usrMsg); } \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/Settings/ConfigServiceBase.cs b/src/Nadeko.Bot.Common/Settings/ConfigServiceBase.cs index d26b140c3..2f7fd5d1d 100644 --- a/src/Nadeko.Bot.Common/Settings/ConfigServiceBase.cs +++ b/src/Nadeko.Bot.Common/Settings/ConfigServiceBase.cs @@ -2,7 +2,6 @@ using NadekoBot.Common.Configs; using NadekoBot.Common.Yml; using System.Linq.Expressions; using System.Reflection; -using Microsoft.EntityFrameworkCore; using NadekoBot.Common; namespace NadekoBot.Services; diff --git a/src/Nadeko.Bot.Common/TypeReaders/CommandOrExprInfo.cs b/src/Nadeko.Bot.Common/TypeReaders/CommandOrExprInfo.cs new file mode 100644 index 000000000..2db432312 --- /dev/null +++ b/src/Nadeko.Bot.Common/TypeReaders/CommandOrExprInfo.cs @@ -0,0 +1,23 @@ +#nullable disable +namespace NadekoBot.Common.TypeReaders; + +public class CommandOrExprInfo +{ + public enum Type + { + Normal, + Custom + } + + public string Name { get; set; } + public Type CmdType { get; set; } + + public bool IsCustom + => CmdType == Type.Custom; + + public CommandOrExprInfo(string input, Type type) + { + Name = input; + CmdType = type; + } +} \ No newline at end of file diff --git a/src/NadekoBot/Common/Yml/CommentAttribute.cs b/src/Nadeko.Bot.Common/Yml/CommentAttribute.cs similarity index 100% rename from src/NadekoBot/Common/Yml/CommentAttribute.cs rename to src/Nadeko.Bot.Common/Yml/CommentAttribute.cs diff --git a/src/NadekoBot/Common/Yml/CommentGatheringTypeInspector.cs b/src/Nadeko.Bot.Common/Yml/CommentGatheringTypeInspector.cs similarity index 100% rename from src/NadekoBot/Common/Yml/CommentGatheringTypeInspector.cs rename to src/Nadeko.Bot.Common/Yml/CommentGatheringTypeInspector.cs diff --git a/src/NadekoBot/Common/Yml/CommentsObjectDescriptor.cs b/src/Nadeko.Bot.Common/Yml/CommentsObjectDescriptor.cs similarity index 100% rename from src/NadekoBot/Common/Yml/CommentsObjectDescriptor.cs rename to src/Nadeko.Bot.Common/Yml/CommentsObjectDescriptor.cs diff --git a/src/NadekoBot/Common/Yml/CommentsObjectGraphVisitor.cs b/src/Nadeko.Bot.Common/Yml/CommentsObjectGraphVisitor.cs similarity index 100% rename from src/NadekoBot/Common/Yml/CommentsObjectGraphVisitor.cs rename to src/Nadeko.Bot.Common/Yml/CommentsObjectGraphVisitor.cs diff --git a/src/NadekoBot/Common/Yml/MultilineScalarFlowStyleEmitter.cs b/src/Nadeko.Bot.Common/Yml/MultilineScalarFlowStyleEmitter.cs similarity index 100% rename from src/NadekoBot/Common/Yml/MultilineScalarFlowStyleEmitter.cs rename to src/Nadeko.Bot.Common/Yml/MultilineScalarFlowStyleEmitter.cs diff --git a/src/NadekoBot/Common/Yml/Rgba32Converter.cs b/src/Nadeko.Bot.Common/Yml/Rgba32Converter.cs similarity index 100% rename from src/NadekoBot/Common/Yml/Rgba32Converter.cs rename to src/Nadeko.Bot.Common/Yml/Rgba32Converter.cs diff --git a/src/NadekoBot/Common/Yml/UriConverter.cs b/src/Nadeko.Bot.Common/Yml/UriConverter.cs similarity index 100% rename from src/NadekoBot/Common/Yml/UriConverter.cs rename to src/Nadeko.Bot.Common/Yml/UriConverter.cs diff --git a/src/NadekoBot/Common/Yml/Yaml.cs b/src/Nadeko.Bot.Common/Yml/Yaml.cs similarity index 100% rename from src/NadekoBot/Common/Yml/Yaml.cs rename to src/Nadeko.Bot.Common/Yml/Yaml.cs diff --git a/src/Nadeko.Bot.Common/_Extensions/ReflectionExtensions.cs b/src/Nadeko.Bot.Common/_Extensions/ReflectionExtensions.cs index c85aeec79..39f2c30c6 100644 --- a/src/Nadeko.Bot.Common/_Extensions/ReflectionExtensions.cs +++ b/src/Nadeko.Bot.Common/_Extensions/ReflectionExtensions.cs @@ -15,7 +15,7 @@ public static class ReflectionExtensions if (givenType.IsGenericType && givenType.GetGenericTypeDefinition() == genericType) return true; - Type baseType = givenType.BaseType; + var baseType = givenType.BaseType; if (baseType == null) return false; return IsAssignableToGenericType(baseType, genericType); diff --git a/src/NadekoBot/data/aliases.yml b/src/Nadeko.Bot.Common/data/aliases.yml similarity index 100% rename from src/NadekoBot/data/aliases.yml rename to src/Nadeko.Bot.Common/data/aliases.yml diff --git a/src/NadekoBot/data/bot.yml b/src/Nadeko.Bot.Common/data/bot.yml similarity index 100% rename from src/NadekoBot/data/bot.yml rename to src/Nadeko.Bot.Common/data/bot.yml diff --git a/src/NadekoBot/data/fonts/NotoSans-Bold.ttf b/src/Nadeko.Bot.Common/data/fonts/NotoSans-Bold.ttf similarity index 100% rename from src/NadekoBot/data/fonts/NotoSans-Bold.ttf rename to src/Nadeko.Bot.Common/data/fonts/NotoSans-Bold.ttf diff --git a/src/NadekoBot/data/fonts/Symbola-10.24.ttf b/src/Nadeko.Bot.Common/data/fonts/Symbola-10.24.ttf similarity index 100% rename from src/NadekoBot/data/fonts/Symbola-10.24.ttf rename to src/Nadeko.Bot.Common/data/fonts/Symbola-10.24.ttf diff --git a/src/NadekoBot/data/fonts/Uni Sans.ttf b/src/Nadeko.Bot.Common/data/fonts/Uni Sans.ttf similarity index 100% rename from src/NadekoBot/data/fonts/Uni Sans.ttf rename to src/Nadeko.Bot.Common/data/fonts/Uni Sans.ttf diff --git a/src/NadekoBot/data/fonts/dotty.ttf b/src/Nadeko.Bot.Common/data/fonts/dotty.ttf similarity index 100% rename from src/NadekoBot/data/fonts/dotty.ttf rename to src/Nadeko.Bot.Common/data/fonts/dotty.ttf diff --git a/src/NadekoBot/data/gambling.yml b/src/Nadeko.Bot.Common/data/gambling.yml similarity index 100% rename from src/NadekoBot/data/gambling.yml rename to src/Nadeko.Bot.Common/data/gambling.yml diff --git a/src/NadekoBot/data/games.yml b/src/Nadeko.Bot.Common/data/games.yml similarity index 100% rename from src/NadekoBot/data/games.yml rename to src/Nadeko.Bot.Common/data/games.yml diff --git a/src/NadekoBot/data/hangman/animals.yml b/src/Nadeko.Bot.Common/data/hangman/animals.yml similarity index 100% rename from src/NadekoBot/data/hangman/animals.yml rename to src/Nadeko.Bot.Common/data/hangman/animals.yml diff --git a/src/NadekoBot/data/hangman/anime.yml b/src/Nadeko.Bot.Common/data/hangman/anime.yml similarity index 100% rename from src/NadekoBot/data/hangman/anime.yml rename to src/Nadeko.Bot.Common/data/hangman/anime.yml diff --git a/src/NadekoBot/data/hangman/countries.yml b/src/Nadeko.Bot.Common/data/hangman/countries.yml similarity index 100% rename from src/NadekoBot/data/hangman/countries.yml rename to src/Nadeko.Bot.Common/data/hangman/countries.yml diff --git a/src/NadekoBot/data/hangman/movies.yml b/src/Nadeko.Bot.Common/data/hangman/movies.yml similarity index 100% rename from src/NadekoBot/data/hangman/movies.yml rename to src/Nadeko.Bot.Common/data/hangman/movies.yml diff --git a/src/NadekoBot/data/hangman/things.yml b/src/Nadeko.Bot.Common/data/hangman/things.yml similarity index 100% rename from src/NadekoBot/data/hangman/things.yml rename to src/Nadeko.Bot.Common/data/hangman/things.yml diff --git a/src/NadekoBot/data/images.yml b/src/Nadeko.Bot.Common/data/images.yml similarity index 100% rename from src/NadekoBot/data/images.yml rename to src/Nadeko.Bot.Common/data/images.yml diff --git a/src/NadekoBot/data/images/cards/ace_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/ace_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ace_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ace_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/ace_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/ace_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ace_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ace_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/ace_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/ace_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ace_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ace_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/ace_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/ace_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ace_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ace_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/black_joker.jpg b/src/Nadeko.Bot.Common/data/images/cards/black_joker.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/black_joker.jpg rename to src/Nadeko.Bot.Common/data/images/cards/black_joker.jpg diff --git a/src/NadekoBot/data/images/cards/eight_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/eight_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/eight_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/eight_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/eight_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/eight_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/eight_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/eight_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/eight_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/eight_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/eight_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/eight_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/eight_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/eight_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/eight_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/eight_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/five_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/five_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/five_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/five_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/five_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/five_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/five_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/five_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/five_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/five_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/five_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/five_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/five_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/five_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/five_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/five_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/four_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/four_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/four_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/four_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/four_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/four_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/four_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/four_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/four_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/four_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/four_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/four_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/four_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/four_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/four_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/four_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/jack_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/jack_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/jack_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/jack_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/jack_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/jack_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/jack_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/jack_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/jack_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/jack_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/jack_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/jack_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/jack_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/jack_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/jack_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/jack_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/king_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/king_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/king_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/king_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/king_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/king_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/king_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/king_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/king_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/king_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/king_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/king_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/king_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/king_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/king_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/king_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/nine_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/nine_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/nine_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/nine_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/nine_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/nine_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/nine_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/nine_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/nine_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/nine_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/nine_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/nine_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/nine_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/nine_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/nine_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/nine_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/queen_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/queen_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/queen_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/queen_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/queen_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/queen_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/queen_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/queen_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/queen_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/queen_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/queen_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/queen_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/queen_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/queen_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/queen_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/queen_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/red_joker.jpg b/src/Nadeko.Bot.Common/data/images/cards/red_joker.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/red_joker.jpg rename to src/Nadeko.Bot.Common/data/images/cards/red_joker.jpg diff --git a/src/NadekoBot/data/images/cards/seven_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/seven_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/seven_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/seven_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/seven_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/seven_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/seven_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/seven_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/seven_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/seven_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/seven_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/seven_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/seven_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/seven_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/seven_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/seven_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/six_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/six_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/six_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/six_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/six_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/six_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/six_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/six_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/six_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/six_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/six_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/six_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/six_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/six_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/six_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/six_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/ten_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/ten_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ten_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ten_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/ten_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/ten_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ten_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ten_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/ten_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/ten_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ten_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ten_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/ten_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/ten_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/ten_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/ten_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/three_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/three_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/three_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/three_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/three_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/three_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/three_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/three_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/three_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/three_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/three_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/three_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/three_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/three_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/three_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/three_of_spades.jpg diff --git a/src/NadekoBot/data/images/cards/two_of_clubs.jpg b/src/Nadeko.Bot.Common/data/images/cards/two_of_clubs.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/two_of_clubs.jpg rename to src/Nadeko.Bot.Common/data/images/cards/two_of_clubs.jpg diff --git a/src/NadekoBot/data/images/cards/two_of_diamonds.jpg b/src/Nadeko.Bot.Common/data/images/cards/two_of_diamonds.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/two_of_diamonds.jpg rename to src/Nadeko.Bot.Common/data/images/cards/two_of_diamonds.jpg diff --git a/src/NadekoBot/data/images/cards/two_of_hearts.jpg b/src/Nadeko.Bot.Common/data/images/cards/two_of_hearts.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/two_of_hearts.jpg rename to src/Nadeko.Bot.Common/data/images/cards/two_of_hearts.jpg diff --git a/src/NadekoBot/data/images/cards/two_of_spades.jpg b/src/Nadeko.Bot.Common/data/images/cards/two_of_spades.jpg similarity index 100% rename from src/NadekoBot/data/images/cards/two_of_spades.jpg rename to src/Nadeko.Bot.Common/data/images/cards/two_of_spades.jpg diff --git a/src/NadekoBot/data/images/frame_gold.png b/src/Nadeko.Bot.Common/data/images/frame_gold.png similarity index 100% rename from src/NadekoBot/data/images/frame_gold.png rename to src/Nadeko.Bot.Common/data/images/frame_gold.png diff --git a/src/NadekoBot/data/images/frame_silver.png b/src/Nadeko.Bot.Common/data/images/frame_silver.png similarity index 100% rename from src/NadekoBot/data/images/frame_silver.png rename to src/Nadeko.Bot.Common/data/images/frame_silver.png diff --git a/src/Nadeko.Bot.Common/data/last_known_version.txt b/src/Nadeko.Bot.Common/data/last_known_version.txt new file mode 100644 index 000000000..d18c8f478 --- /dev/null +++ b/src/Nadeko.Bot.Common/data/last_known_version.txt @@ -0,0 +1 @@ +4.3.13 \ No newline at end of file diff --git a/src/NadekoBot/data/lib/libopus.so b/src/Nadeko.Bot.Common/data/lib/libopus.so similarity index 100% rename from src/NadekoBot/data/lib/libopus.so rename to src/Nadeko.Bot.Common/data/lib/libopus.so diff --git a/src/NadekoBot/data/lib/libsodium.dll b/src/Nadeko.Bot.Common/data/lib/libsodium.dll similarity index 100% rename from src/NadekoBot/data/lib/libsodium.dll rename to src/Nadeko.Bot.Common/data/lib/libsodium.dll diff --git a/src/NadekoBot/data/lib/libsodium.so b/src/Nadeko.Bot.Common/data/lib/libsodium.so similarity index 100% rename from src/NadekoBot/data/lib/libsodium.so rename to src/Nadeko.Bot.Common/data/lib/libsodium.so diff --git a/src/NadekoBot/data/lib/opus.dll b/src/Nadeko.Bot.Common/data/lib/opus.dll similarity index 100% rename from src/NadekoBot/data/lib/opus.dll rename to src/Nadeko.Bot.Common/data/lib/opus.dll diff --git a/src/NadekoBot/data/magicitems.json b/src/Nadeko.Bot.Common/data/magicitems.json similarity index 100% rename from src/NadekoBot/data/magicitems.json rename to src/Nadeko.Bot.Common/data/magicitems.json diff --git a/src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.deps.json b/src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.deps.json new file mode 100644 index 000000000..f83b4fdbe --- /dev/null +++ b/src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.deps.json @@ -0,0 +1,115 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v6.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v6.0": { + "NorthShirahebi/1.0.0": { + "dependencies": { + "Nadeko.Medusa": "4.3.10" + }, + "runtime": { + "NorthShirahebi.dll": {} + } + }, + "Discord.Net.Core/3.104.0": { + "dependencies": { + "Newtonsoft.Json": "13.0.1", + "System.Collections.Immutable": "5.0.0", + "System.Interactive.Async": "5.0.0", + "System.ValueTuple": "4.5.0" + } + }, + "Nadeko.Medusa/4.3.10": { + "dependencies": { + "Discord.Net.Core": "3.104.0", + "Serilog": "2.11.0", + "YamlDotNet": "11.2.1" + } + }, + "Newtonsoft.Json/13.0.1": {}, + "Serilog/2.11.0": {}, + "System.Collections.Immutable/5.0.0": {}, + "System.Interactive.Async/5.0.0": { + "dependencies": { + "System.Linq.Async": "5.0.0" + } + }, + "System.Linq.Async/5.0.0": {}, + "System.ValueTuple/4.5.0": {}, + "YamlDotNet/11.2.1": {} + } + }, + "libraries": { + "NorthShirahebi/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + }, + "Discord.Net.Core/3.104.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-kGCH8WA5C39oLGNb/4+r6M038BKnrxNFyjFZ0YPUiNXPki3CGCugMleSvPjUcUaz7UnvOFA9W8JzgN6KQWbuOQ==", + "path": "discord.net.core/3.104.0", + "hashPath": "discord.net.core.3.104.0.nupkg.sha512" + }, + "Nadeko.Medusa/4.3.10": { + "type": "package", + "serviceable": true, + "sha512": "sha512-vwuTD/Gu+6SBU5wG+wnaijcbjkAiYiQK2oTKCiJnP5uqWtLD33pTAoXNkMMu0soQj1hetFVoDUUbMLeg/JLAKg==", + "path": "nadeko.medusa/4.3.10", + "hashPath": "nadeko.medusa.4.3.10.nupkg.sha512" + }, + "Newtonsoft.Json/13.0.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ppPFpBcvxdsfUonNcvITKqLl3bqxWbDCZIzDWHzjpdAHRFfZe0Dw9HmA0+za13IdyrgJwpkDTDA9fHaxOrt20A==", + "path": "newtonsoft.json/13.0.1", + "hashPath": "newtonsoft.json.13.0.1.nupkg.sha512" + }, + "Serilog/2.11.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-ysv+hBzTul6Dp+Hvm10FlhJO3yMQcFKSAleus+LpiIzvNstpeV4Z7gGuIZ1OPNfIMulSHOjmLuGAEDKzpnV8ZQ==", + "path": "serilog/2.11.0", + "hashPath": "serilog.2.11.0.nupkg.sha512" + }, + "System.Collections.Immutable/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-FXkLXiK0sVVewcso0imKQoOxjoPAj42R8HtjjbSjVPAzwDfzoyoznWxgA3c38LDbN9SJux1xXoXYAhz98j7r2g==", + "path": "system.collections.immutable/5.0.0", + "hashPath": "system.collections.immutable.5.0.0.nupkg.sha512" + }, + "System.Interactive.Async/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-QaqhQVDiULcu4vm6o89+iP329HcK44cETHOYgy/jfEjtzeFy0ZxmuM7nel9ocjnKxEM4yh1mli7hgh8Q9o+/Iw==", + "path": "system.interactive.async/5.0.0", + "hashPath": "system.interactive.async.5.0.0.nupkg.sha512" + }, + "System.Linq.Async/5.0.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-cPtIuuH8TIjVHSi2ewwReWGW1PfChPE0LxPIDlfwVcLuTM9GANFTXiMB7k3aC4sk3f0cQU25LNKzx+jZMxijqw==", + "path": "system.linq.async/5.0.0", + "hashPath": "system.linq.async.5.0.0.nupkg.sha512" + }, + "System.ValueTuple/4.5.0": { + "type": "package", + "serviceable": true, + "sha512": "sha512-okurQJO6NRE/apDIP23ajJ0hpiNmJ+f0BwOlB/cSqTLQlw5upkf+5+96+iG2Jw40G1fCVCyPz/FhIABUjMR+RQ==", + "path": "system.valuetuple/4.5.0", + "hashPath": "system.valuetuple.4.5.0.nupkg.sha512" + }, + "YamlDotNet/11.2.1": { + "type": "package", + "serviceable": true, + "sha512": "sha512-tBt8K+korVfrjH9wyDEhiLKxbs8qoLCLIFwvYgkSUuMC9//w3z0cFQ8LQAI/5MCKq+BMil0cfRTRvPeE7eXhQw==", + "path": "yamldotnet/11.2.1", + "hashPath": "yamldotnet.11.2.1.nupkg.sha512" + } + } +} \ No newline at end of file diff --git a/src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.dll b/src/Nadeko.Bot.Common/data/medusae/NorthShirahebi/NorthShirahebi.dll new file mode 100644 index 0000000000000000000000000000000000000000..8eaf4ca0abf36619d0f1359c912880cb6f295151 GIT binary patch literal 30208 zcmeHw2Ut_f*63s>B=i!BAT0<8ND&nUm0lE(4hksJ14K$72?9bC#EPO~?|@?O9Xr+| z_Fk}|V($gT25-$INaU1z@BhF0eJ`F_eb&rcQ?uD{0*B8+bc7HCN?RL3wSe)*oxpzv z#h_L--lvLoDx5Q^r3IWbiAduKIoSe!svsegla!E^#TRiBxg0@m7KfL`@eU5>Wb%`_ zb}A~0W>VK7J_rTS=*T8`*unPJ8c{cn63rf=ERZlI(xcM>bD&f~K}em@l%(HSfcsBA zjQ~N8KXep75u4)wI3iLDWV>(Qi7t3!55Vr%*Kcz*2G9#3}eV(7GVoEvV@w}62{UH zD)#8`31Mpptz~>F;Chr8@`8OTV#E+DVWcgF0Ro@c0(?SE@QIlYpA0ljngU8_1Pz%B zpyh17F_7KO1<;vaH1z)$Z6!kwl%XSKXgr}hN_1%C+BH%_s_81&1g0~$gHNxn^>dt&G#&bJvxbTNo9`-WKYnj!gy)rNh;GQhrJiDBO`8?kQ#jI_nN7!_ed z@C^>YH)ekGJrwc|%RxivBICO+u1JYt2(a&d7%{|H%G#1N-pq%G!RRD>%qQ$K03*8CA0vi%2u9jsUyO>d1^9%T;1e^Q zeQIEz;NX|f;kX_p9*GfM3=v?TF&Jr!qcJMN7T^j}n(- zL>EuPh#{Vik+yg$Mn%{Hd_qm|iJ8tm;dImx!YcXYGXvM7#C(kC;!KPf;w+4`#pxIo zVGHmHHNhulWPJuAgtV~FC>fsuT#piu#)vK!V#E-OFp?AJVx%q3!Keruf@^R9t}!EV z4QD@x99;z6e@$HkODvzDgxx2K|P&TnzFo& zlAsw5BcVA6#!!W@x)=f$g|a1ff?OaiyMvC+Xw~ikcMA=MCA4A9w*;9An{H_Z*w&lU zF;^tVKBXXr3B{l^HFy)lEN4(u zAx2_YMGQ(yA}YiTUjY)R!?yuLJ_N;7x@V%vq>Ni7t!qgtkft@5mbPGp?iu{0nq_H+ zwKyi2t_ZQv^LNO^2v{b*RBSt>)YfFM8J6}yD6=WcUVx=(!cHi8F&IkH1QVOVrXWploQr5#DSNI^M3cC`Bk5N1+m{cJ?O7Xpr$?pR( zDY0pm4meZpWI|yV6iWkpkkz3(! z@pXv*llUOL5FhLfvhl%^g2-Uq0<;H+_i>01*6rWNhh0E?Fmp+Ku%AfcgGnuk4{IPk zjAY`&)jGvTJdqpqZ}D}A|GoGah!1-_q!;3Ybp-MG(D8Nxg#iWj5oE1wo#WI5gwu7{ z)(~tUuud5K{xJP52LKQc1Xd~pQc;WV3{Z#f0uXOxu7L3}bpvecMV2XU3DN)>1_fJt zU%)WTbUf{0KWl_$s6woSOkmWi4eLX)QgKc2R2MiiNV6IYG4!OPUD$~&jYzv`q+P7kWKcyIw`#-bCfP_yUD%%CcB3eU z(C|izkr;x-8z~VLV#d-NOyH!{l+%#2(Slw|@`F`;A5e7%5hSm}j;X=4vHN95k~;|O z_=5om>dDDU>|yRI^5ND*JPo z(!&6e4~!Nvg!yI$1vU!=W6|k6mF%Hl4s#TSRdx+Ro?z5rOaMaK$xQ>+Af);4*C2KQ zlMk{>)*#Fe$r|L4RKOX5H8Arql39beTBkKgJdtmQzpcRzaeJ)o_l3VcBN%8K&H;%J zhPOSw5SS8>cZdu|6d(*ILy!s21}tF<{mau2SBA&}F@n<%W`iU$llI841|q{qCNf;D zQ)I*waqwGY9pd)LV6foq$9Ey|gugof=x7yaVN7A{f}kDg`R5I>g#atKkEbp4M>1{k zHbG{sAf7OcAf8~rjgWuxm5dS%zoczCv zM>1BhY9O9)Xh#|k9;--TsluTI4g*M@Q2p&#;mQzO6h;tR1Yi;y9RHG&0BayNjAX_N zSL-xZ#1nDwTWlTTKgaghVFPEfyn)Z8%^O zn^}8oSOc+PBoiC1)+sjPi8%Nzwhr-s78@)C7`HfRM<%u;V5!0c0uuoWto|uBTp40Z z#t34I2TWpv8<%9ZR3 zr1Wp+B(4mxjlu|GO94z`gM&vB8`eN<7|Fzjt96Qvcp?sdi>*WapT!1?0%A*tc4T7X z14|WV5|{;0Q29^ehATsC*%(1=8GuP_7VWWN4aA0#Ol-JXr`U)m;^4Q~I>i5OY;V7;O->=42hsyTH-|9T@KAq zg;)u>z)0rqg=<1C++nu{o6*1(vH(zpxde&;^5y^T?nRn~yH_E$ZEqLfy6c^#9+WXCfe)k{~CxAJT&+`V#1nDwTWlTT|136` zuMpczXh&w;<^W3-RuDKFpg{khV#Adowz(KVY_kB9*zDS4!y1SUBbnH6wN9}SPsG7* zv2}?5DK_|FZn(cEP5P5sWmt!!9qjDw`q=mB)gKu6SuUJ5XlECMOkvq@bP;M&1Ug(K z;AN%4ZUo&ig+d3}&~PLV6IvZ)rh|w2c>~r3K0*O_&kTMdHii!c*X~H;6-o-=2YsXU z!4Df@3qY`fkuekq7^Of7fT9frF4)iugcd-7ypyl?@_?13yb54kAGUMs3PA$lGn|EG zu%V+crnLeS?IiFHLsvl!4S^mpkw~tY$wW(-NS=wF$ziyPz@r3?Cvqi1_hMqpr3~!n z6muhsi5wL%JkHq2QbhKwEp#Sw1)7PR<*-epoGt{nhk@n&Su=q?qqv2xhy=_nbX8QL zI6+j2=VCOf(x=E3nZDx+{3Akzb>z zh~Cn%XEAAOJqo3mNPuQSt-Y)!=yL(sGf@=49a0Y?AOlSF4xkR&3-(=6H@OEa9aKf? z8j;r3SQ}YJs7@gk`gu!XjUpTQvs~$Hq@#%8b$JXAkUneyEzWWqNj8~9u`gzjDxuyEX*g8+KYyHj&+NPE)L!z!5n^?lZm(}jBsa&WjY#4I76b#flP07o+%w0jGeJ>kXVH z3V>S)WC`78zG3K~wNmaG{S8A8G2m+}LM14JYGD{4F5x6Ca8SO4Lkn1RITLhN%5|rd zcFqtoSjqgpAq4Rj7j8DD;&*Au8WjDCnqILR#N4_|$-?g8znBHTF8 z0V@gD6?XCd=n&x~mIKf!sSaBXK+k$~SPnoh2q&=|h(1Ym*m58`1>co$3)tsCbeeDy zOJ{Uds>7DfXsu0$r88PjIEkeT+9}mxOBXZ+?(ywDT~Ha}B$lpdu2hFDT~Qjj)Ja-* zMWYBOv2;TssSaDZA?02jKHZQi;Ut#sNLQ-EmhR}4jHNqzBV*}-T4XFe(5c=XK0VNB z!byC3qN`FJ_UVZh_UW+nM2iV0vGhVUQXRJRLL!F_OE0){V@_h}jf$l@Z0U_c`gT}) zqcFlrEPYUnREI5nkWIf1OCMxMIEm#TagWt)Ffj$ z7(J1(^hNJvEPavhfDWI&$e(Z$pMEGps>440kQu(}OXrdw>P|R`r9ZNl>ae9hg6Z_j z(jQTTlUNQx%2FM+9D?r1SPnt=WGn;FGa1VORO`~=6Mx5`p-LA1Rx(!}(+!Fp^xw%Z zGqI&CU6lj{I8JU+cEAHL+bzccH3L*=t;W-_v(K=O()r-p&ks} z*8g582lseol!H{Ds6tVLq7Fp^3LAe%MiC4Ti1>gatOV4T6$Q~@trj{*3DGS= ze+8Sd=qs`L3N}+9!qo~ww1{}Cro}6U(bmxpP|-9q^j$uWW`o{PQ)$ZR22~EUSh0rY zfL5}$fnYvDZ8WCB6lyPWWmQmnX$z?Z)Hd*0Nh#32%de(1Xt)m=G+Z}=^eTqO0)yKacHd zI`+l^Z4r}0v>c)}C0ciouV%UvxjT`25xF-V_a`2-mzeQH8&9-JM4L=}7K8Q&vzTa$ ziMEtzt3YnWsv`20L{dY%9V2ujXj55@MB7MeJtA_%5TYq8_$dLjix{~79FVMLafpON zB<>(N&T=ObcOvm-kbZ)^i4{-e@kCw>5~h4HkrWe26-aF4tB9nENNPykI*^CR*AaOg zkvD>5w0t9xG!jV@u|#r0G+!RcksivC9)e_-Jcmd)L}Dg~`{NGs26=ZPPbQKoxeXw% zA#@Xgh>0a;OwxZsClk7cz&avnA~c7EEsF_kB+y+ROR5M&3Yd;3u#P~EBC#j1kwAAP zVoxAaCiVo@5!e?c!gH%~c-~iyHlSVTFsesa;QRDb^d5ajax^uX9?g_yOLL?hqv=z< zC{HS!N~W~v=JbB_1iFA;N}o$#Mc+;TNM|s#8QtM~5DlLHP_UcRVa37GgaY7wO@!vK z3;}9U7O>(6fWzVZP=RMN769XcR)uFV764O#RzstJR)eRlR&Z`*1Fen( zKx?4UKx?3UpxLMhXf_%Pv?dx4v?iJWv=*8Iv=%A@S{uy(S{uy*S_ht`S^%66bQiQ3 z=q_j}(7LD!XkD}dXg#zVXg#zR=&ooZ&|T4Hp!Lyqp!LyCpbg;nxhw$g1KJQB0@@JO z0d0hi18sy(0&R>=18t1X0zCkt7((OIO5k*PNNc9CsGZb)s+nq~7{&NzAp0?a+YDT% zetjGnEpV5@Hyk`#?H^qVQ@`6yfcqK(t2B(HA1^$-o$TQ8XeXIFLrCh%`g3Q*5*eN$ zN>K1P<55g}! z)u?pT1Ij=s0Z>Ll*$Cw*6c#-l8A0g@B?3x1lp-kQP?kg40_6&n+fbfB`3Xgpk&cX^ zz-!iU2lp0mg+kZlxVT>S$T>p5=|~i>r9?vr>4exdLu-M1nBgBQJp`N=VG$#`i*)2jn3v$V$R=AXk*e zPxj2^Wh8S2Qa!OJoNt0KEu1R?xnCGJAvriJqd>w2@Pt_E?3mQjR&mzv5IL=>2YzM z2}$YD&LAE)BNc_54vN(sEq(4STimUNz_$ZsfA3WPNZOAJYeB|Ix39hwN_X5kFuh4ps} zPBO5949V0&0lXBhh?mJl(qRgNDTY};lE83Lf`}WKkd(&D0t>F_H(vOgG7Wx0$VD(b zTqI3`T@Y6U!!CfX2)N(}d2U0!I2Rn;Ev{T^9I3C!!9plAQ?5{Ka87^kWVNXJuhn%Yz!R^+k=A~ zC+Gf^0y|8|D(I*oowP(Q;wADjcp@3?=!A@1Zu_*yTW$MXhjD-t1eSTbK^FjwOIU{95H8^QLJn+X7=HksgDQE&?E zOsQO-{3LERo@01_=wNW?y}8090Z*co9Bb{~@y_5Y5@nMPvt*93gjgT_(FaP z-ZGQ99$5()1ws%@oBcIa?eH`c;sEeX0IHGm*e72E_Z)n-BAiyQ3?7UT9$XoPY|doF z;rt{ReZMRbSCAk%p4;1$Ik8a~Hz$`X6a|yPgvjs}v3IjI;14(SsbI+3xmcK4}2+k9M z2xk0fZV=3F(X$R!QxiJ%1`eBMB|S(04(Fc({lRv>&3L50pSNyN_Z#ZyC!bIlY)oZiDg;v@n2Nzv45soim5-@3 zOr>Ee15+8AES9_~1%a2-*ajNK>)7_}0vuj7O%)!8s=`NIokk}aFhXpuDwyDU1}q|C z8{qWd%8)gw6Bq(Y(Vl`gos5vW5lu<4-8&?Y0}mr`%_B562gXAa$&*njz)%zE;l6;E zT{N~Cv;)*Opx6%V0^FpTv`I5X4vnZZ5rx~tHj-ZKlJ)}Emo$qh7(y09UL%+71b#S3 zBbTX2VNNP_hIom28*Y%eQ}~!L82wT6s4I`h1meVf~N{qzzxh{ zaQhgts;Yq`1Hp#Yitl2bykr!LE98j_P$;*j8*F@~0R*%M5FizVv(wKZd7~SD5)T(T@WJ`#J3CLrGn&kL9$ek)-FghV9B>z1U63yo6txSA-TVFx_d=9>AkUvZb+g6*zR5RwH3SDsmW7 zN>!diNk}|%K&xPhw=V31Zi!Us@<>%4KU>BhBm5Fi1f>%xNXQPt*DUEJ7=N|P6Vkv= z@(`e)_|lx6kwCss%HtXwu+XF-)!)B0 zz^?+(kR1712!9d;TImIE@4`QcoG|b(l?FX@qoD!6*R}hL2N2fyIoPj~~ab1wok7kWpu=PLCG<%9HFjAM6QU z&;5%Y%RYX_>rAgxOEOQSkr@pccT#tJ9Uv)(d1y;RmYt3M_AxGkr7QWsule8~Lr}2H zRXj2>_<4cwy@UtP4MCvbmjw^;;L%<(wpSt*;N1a6GJYD0MRfcQ(S8mw+ zs3BGRwdN$xxEX@|cUs5U$%!c3*Q0meeyH7=BejO!CeHS4Rv6>4U~tLJy)A(u-k$C- z;uA-(Vl@4_+z;`pSdl2FFvWj?YCp3H_oh)j6iuQz?AZ$$>KB4F8J`%|-O9qWyw}Im zoRuD0jSk(m+%lea;$Fx*oBL;1t9vya<)_@gEpGdAFG$>HVC|%DwGY(|sBteia(nl( zXK%9Iv{io!dpo$ArXj0>{NY15sw8M%X-QLNsK$Q~(w;To;uv}+q-Cbf_=1m{d zr^e-J;r^1B1M67P)V+D*b$Z zvzhhDqk$P_<2#n~ytqkib~oPwj-DyC#NA~@_ol%d$~jwGkIuHA_Opqx=g8Yd@6JaD zFkg&Tf1#%`+rsy}`&Bxpws9Xj=1Xb1VeRPRmwmFAO+99Ea1MeY33m%{9y)aLDD zothj(L!KRzOX}a$_2e0oJoHn2rS_~fClyZ(nLdB8tL_<7X7>+Mdih@Q5Fp-+sR54{ zI{(~rVbb>pvs4ldR112neyq{wipPNA`aKe4D}8l-A3aKc}i~e${=yi{GM}t&#uL>n`qLb05w#Yq6OXv9-6xyRGGG{omy$ zjH@Ve^?b2+^;Mzmx~HZkgS*8l)P#opNVAF^TxM)~V&=TY>P8ov%;6llAXo4HVsEvUTXdP@?1yW7--oYi;e{R8rp51eVu}C3 z%Dvt{M~pusQixTJ$uMiu_t?JR;j)^R=&%Dj7#A4F7@;rrE@6yQHw#u6YwYV9cH!r$ z7LJu`M48&0hh2Q%>C{#Fu6r69Ry18}rvLkQlfC+tyjPBW9C+44ZHa1fhWn81tWB2` zcGgB$X%8r!@6FhBPUUKqMVh&5)#H}Z1|`atqqTFkeMq>H`)lv&&0!PlBJ4=r9hv}i!Cv-^}Q_N*5PDvFou=Tidz!9|v?-PNM}n4vy$$ zy*}UUzH`@=D{0~*2lQ4hq5V9uv}*N)joUbDA5^GA!x>7;yQaw9>7RIM;-!(rV>2GC zm=PWNhiSun+>2*>SJdnLaM-eBV9Lz+G> zZ5;k2VrS31+l|${9c?!sEGgSE_G;XP*hf2l9vU3*E$4n=esJ4R<$1n`>0f%L8;&?_ z7;40xcXj)!`k$vlJ>P79Gi%QK$OWmnQS0}<2`SX77`t_s-^sQVIqy#~H(BitL+KRnR9uWrB@m|+@ZF&5-&+|p5YC4Yk&%1A0 zcp#}Fuq)80L%`F4Br^KP!$I8y&z@)gbb^J#BB`Udp#Pu_O+ zn0v{Uh12`j*UdJsIOd_5^lY8C-4y+#*|nCbQ@*X5aA;zBPIX1*ktL~G%|=Ua8vT3` z^kl;yx9$zta6a?rm$xqG&RF<;wGMl6ZVFd5G_T@aLFJl5Cm55K@5mcu@byH?x7*@M z@gV-S8)cTdsk7S-AF^0{jLv7wpgQEXfaUn*6I3_m+sXYt#YagnsHrgvTk~r%dH00>N$EjepOZ`HTCk7 z7ad<+rL)a_hup+P#~ZuNknc0~jQ_*oW*2oMj@!=j2&xG^B^tBdxV)k`>}Oi9jNSva z6Smjx^lnh>-DRKW#Ca)4R#@by>nuB4&fTu5(am(;aevR7?iRKh+J&#>6>p!MK8pKt z%JBZft9z|=IRPu;)~#D72lPK%H9l{fVCSBx+salQkGfqZ)_xS7;jn1ZYBXnCRdlzH zo>R>7gpPSPzAk@Km6afvvVDA)u=pthds)iQ{v0|iw8SKIdE-gvFY49PuNqd@HorBF zIx{x@u1d#lI5T}v3~V%W>w6Po6Bw2i3Tied^JtbFe`Cr z)2J0o625o^A1<{OI&LZ2v-U*gpoBjC&qi?!x(280nDDUT${Ax*XGZ^uf-kR>vzA8M z9(uSqeA$d+Rr$K*bG%pYpWWY~tY(>Z|4DpxO7-jee%X%V<2v`(AN|(6Y-J`pnJ%ZB z*{4!9?Nv^!S>&E0u8noOKkE;?(W0-Mc$B9+LjMe>Us`0$@ZQf#sQ59|Q$5C;t+5-b z`@Wpk_Mq}e^rDqrjAk<@RpmISE?CxMLWQTnp>8MSJ*P%J$sHZ(Hq~u(zz@%!=?)t6 z4VLMcYK6b~a%$2R_Mx^DXMYB&9k{`|9G*WgC`*kKek7asd}i1jr{oHo%|H4??Coi) zwBXy7d9@2l_kVPGb}7w%cus9HbDr`jZ_d{@_wR(&=uLj*E1o^UIbFD=PqNR!bfrW3 z#jCRyDWByTtIjc*>-xR+6TfDNcKx>pfz*+Awn)Utc!9<5198si2P zDa)S~j9AkAwq>8KPJM55Z|YRP7=iN0s~fH>{@vp9UzEgYc+CjGc zh9xvMF8lJP?;*vU;E#7&-k#`t|Hp|&Z=E@`)5k0Qe4fwuW|r2Q4>=@!@Hu#JMGE7= zVW&HHA1-`ZXn(ZE!fbVkiN4y?^VI`JyH4v_I-xaiC?&tO*~;57yA07 zjpg3v=M|HxGEW{49MfY?Z26cUewI^DI5$pYpBTGw!0jTv&kb3x-^SgU|2DV&9Jjn? zS>cg6j5-^w$NPFdU7_q$KUMMkd*QkMEvj<{TaU~-bSt1C)G6=6kBi#Vi1%r<4>$xCsb+*r-olS4Ad6=%eB1}7> zdWD*q(lbF6bm!w9WlNnU3JLw22l|_AJl5D}Or_(Mar6prx2C$M_2Z{L53y-bA7y_t ztU<4yBk^3TZ^%6k=9((G2G^$+YV`84=xk4$sASlK);|8gPndrYQU+SyCzZ}l5uKA1V$NO#(?TMiee_mUeMKYIM5ijayMP2&@v zi5JHmYglW4ATO&SJ#!a-aBO|p@#M=shw`j#3l$O~9{2ZI(5G^5X5_Zz;k#EP@3PU| z`E5wWmXB96C!WuHHa0DTHzm*Z<4lJ)aRXMrc8pg~RVrD2&HSMHvk`mO?OJ#4R?@lB z>y2Mjy55-JUUIQbtMyIku`#XgDNoG$8eiCV0Mpxa_N~}k=i_7 z<-=>sbY_3vxZzq*%cZXo{`sfkSMXMkmA`J7koR++)+X(mllMM;o9@{By4zAt>@H=E z3Clb$)}Gc5uG)5IRMzLRJ6~O!okepWZR|gD0!K}K%WRLy9D(k2PwxdU$E&@Yc%g0W zgD(c}KU?-5%75%u`NGs&ept7o?{3WYUcEB=bC<8WKf+yEi}#0Bh0aRoS2lO=h9fT$ zuMS)huoWHM@!+dab4yRdXC8eI@Feg5o6-{y8Z$*qYtD$u)=7~ULmX4CNJwS8aK8^83~>YkC2 zQaXdaY2WrmF#`g%dQPx1DAwt_{>On>BVl))YZHx%{63Y29$ciT36 zNmRO!bmFa1(726lgZeQ)e~nvw<5@8M@x_|m-0qH+?6;B4gD*UxwM|`{(c;-vX_R{6 z4ddX9lBoS!r&ZqS zvZwi$Bq{b=-rMKOrq3^~K7D7{b8lY6)h`QYjZ(2&*1!DaEz|IlY=fdhAE}-7D$~zf zM~!?M+UPua;rZ0)GZSjJd6@f8FWEhK=yp!a&es!m#JTEzy}Ik*rF$b|^ZmN#`=)Nc zyFba|de7ZI(nAUwE?N&vt-p6}M%xc_O~as*qm8^Djk~vG+=FQ+NAsUKc^!B=Z&k>b zjYkIjyu`VxAFwsq&R^wm?_2S57RTq^cdV7mSvTO?rW(FpYp!U^(i-B6 z(d*q7o$y?D@xZBDt5hqlU5x&*v0~YWzSeaAYZq!ap46{uyF{<2ZJvBn z=c(l*W4i01a-Ts1-#pC?oO@ESCV0{UM=#^S5k`f%Z(kS$w;ooj_h8b}S*xD*Vb?3a z3yUb((U_#^uXF9`e9Puz7l%#CH5~g~lvjCYy~_)_zrX2(w5`))KM&~{bNE8Wz@y>r zqZYR)EVDNL{_bMsQ@4OhhuE-K&Z2Lb-fbw>jAOr)mL;=Pzdt8wT@l!^;xTFI%m>>+Nuxtc4lt&F@JT|I%&!ZC(n=&&**W7 zPSb0YUR_Vs=qI<#R&?gx^0?M_mAB4$M%S*_mLD|oeYrZ0~|N{dk!dGI%QH-)iE=_vkFRv^n0H7=P&6Mbm!248OPs- zmmA*QW*)HfJ0@(*D_-!9$ZMV>Jwl07fy{{@L}AYi!aA@qsb3W@)b2SF5Y9)ddWP)@M6~e zJW8ZA9sY4 zGSaTcl;|ezOjp}Pi(TV(y-g$b9qy<)5d09t8Y$L z*OrXAcHq#Q&*lx)!-fw~)}q1<%zkbR4x0Qrb;I%-TcLyfeTM@?GpJd|{?Ki)1_9oLA?iOzi zf`!+jnqG!KT6tD!=JWM>Wjg2k-OK44;yPlD&8CJ6M|$3P_#yhb&X=3jAKp~O$$OY| z8PKwIV%wFd_c@PQOVh^$?8?0N<+j^6`iIZQ`dONNe_i@>j@r@LGsif77-lo=+32*# zBi3B>5zr4`Y8*Um+SAol_FZ~B>)-dH%FpZNXHAFm<`>L8z{xl`aQ;GTuM&|~!K(7& z%$<6#>fgGKyI(i%%#DUee|#(Jr!w)|%9!4{+0A}C#^f_iPMHidy|hP5sC{F068Emv zvg<#p>r7Tok!yR_zva+8Vhp_Ow6#*!ga5)T7wF{#gl) z8=UTMzp{V)qcKy&iM8?Lme4J4YEHCtDZO&v7FZ{cm8cHkyGbnLZ5^X^Pg<; z>2q(xW{t?{*+)FtSs#`D=&LH<*QqJ$lG*opho4zQ%x-YE-q5=D!rN1KFPJY5A9DW3 z0``&7Hhyclx6ao%uYH{H>}J`O{^j>3mm9xo_3Ya7#n!`{mvs;H=ey^hJ~d&?G5vAlC5$obIixOJg|?Qv1MY(`AO-nONJOZ)IQx^TQk_< zRa&ds)_1KJ`+s6@c;8p_r0~X|l;rUFZTo~b?jCO4!9NlrZdB5{`Ap~Q5#4mgli2=d zCeQdM9$!)2e`CSjWw9F%KV7JGex}tWvo$d>Bjhp%9u6#&CPtP8(p`58vikVqwRIpd_hkAo`ADddTV5} z=*Ro6uM?`rPwZ{!nqxjL#le$x)Z+a6nhC>euZ}jdGQPj(rYOpm{h-VH@0&C)PP=gB zf{oirzTkrEyPc2tZ`P$AdpKFS+t2b(V>hPr?zJ8`n7yR!eV>5>)py}Qq5^cHugNZI8@Jdf1lkJ`zrglddPSA!)&{b&i97~pX)U4=NB4eiFq61UZ3UH zyRCa)S+mV-z@qtChVGZyjNw#P_c_>MO$*~O>SiA z0e!cw4#rpadFmOR*ErEIxAilB>yxnW{LQ_u zAHTE>8T|I_@&zw1mml<3nbzgr&8Ym`D8mw)xf-W6=C%EJa;Wdt7shX#k~P`oV;n}7 zpBgi7UrY1W9+MoZ_H7rPt)zce=YnF9?Y?Plda$9!M!ku;x1}}?R(EVAP{?cBr5yZDOkulM<3$i!oLN+V zrj)9Mz*0L;cTOFA-;FyQgh=q*6NlWbtJUJ-Pe(^UGE^hU&JRaeaM|bHsm4 z&Dbkb%Rjy@3SRamuxLc{JhS6?n5z4>uhYP+lB)R^~aY6_Wd#Z!sho@&E;30 z*Dk2C(X=T(zV6U5*U%uN!ZCv{JXBs_xGHnYhq&XPPEAl=^v<>X%En@!^-Fgg>YXd9 z{yyMfU{2rWR~xopG?+TO*8$hpD#zuRd^MN%kwe@My`8^q(22e)&2rdYs|)Wh9GG3P z;b8tPw>~{T*KXdmXWo{|DN(*E!qT+wpaLn$&zsAc3i z=e*msOn(1AxM=N(!eZI+eK;C1={B@h= zw;Z@T!lZ%gGnH5OYG&5t&u%?bcKL`Wuju7JrMIJNN$&l@t^?Zw#u&cZCyZ}c`C@Ft zs{2*r>sSnv4-W>Z>Ug+jF5hIhy3}-7`O+J0ukTEL?Nt$fTFb}6to3@~&GEUn9?q|C zT`CDd04*7pw$-DA7@8B9J%IW;D?vh%bq;%zqp5= z!_1YD0Q{H(T7QH*UU5MGanEr~R@a7n5deJo1BqxMpt${{P&W}L6s zv$`bsP2-NiZVl%~PH34Y9(L7W&w=`2#y767%k|btlQ;PcH#T3lt2@i#Zb9?dxP$iu z)$igDRHtPde>d9aGAQr0)f&0uDt$ltmqoUj`N{ideA}zJ_9p92LDQoi-%Yjd%k8 z`ex|3+KiSn59^Z-&zo!>uaOm?IK}hCccsZij&CN2->hC2)FsCwE#4#P@rIi_4`t4t z<-JeKmwV6g)tM(1%QdvuoXHq@rED0Sr zdrJo{s?JMUKK}mjduLU91ekHZ8jQ%C|3Gg{$ttt#l=0KOnUsZz1um&vUF*2(DB!8Gpr-)=DmD$Ixze3=UPEtOo8rZXN}0^ ztBbE()?bNc+<0O6aM-i=EoH?`@9RAHxpLas>$R4qMlQFiJ$u6L#qROb<}|J@4nOHM ze*M(4x{cOzHhj@v!mIs2yW}8TnVeqmLQ1KAO04ep&DFbLc8ba}A8b z)?M@obk1VW$P1ZyV{H$$ei2RiDvG>@kUKUZ!((jf+KvqxoZUNCdt=d&+kq9wf{WKQ zFH?8xYrx+!{-Cz*GmXYe`T3&_+~1Gy^ZBORs#oJ#yWg)^+3;eYli|{(`%Gr4W$Bh{ ztd)CmlD2ECAU}NVDG$}9QEfvjdioCWSUjW4viHL#mMK?L-s3h#ofBzqO|Y8mI4O1g z5swrFm3y2}kL{tCPw0)JU3BV|W`oY@=_GG)i?wml^Bt&W{kq1@!)DW$%6+LP0rU=hRCOGx>c(6|S2ZoYq_Suenlao|`M595=uV`1#6{iyKYZ6JL`-OUy-1KRJd)`p zmo2Zq{D-4X*9mP4OMm8F9F)J$u+^)aZRz=RFz36fg6$>0yi2)SmNjXNUQK;Zzh^eJ z7#!PKG3C(amQ4YzJCvs|T(&vPWF1dE^FU>C*&O%b)a)g#X4~@3X6+t7(cZg3qegv} zb93{F%L(oc2~l@l8Aq$E7rEcbipm)$rf+ki`wmpKHmu=W&YwZMy!)8{WOjG8ecQFC zT+kineD;Fx9f$ma%bBHSqxAiI-#+=SJicVDhK(h4E5|p!9JLmfJX_!QrhJQF(vNvl zTD7))v2NYrZ`!=3Y}MX2D?^`!{i1r`YKxxL>)X4^EsTfn-5bV6@w95%=<}v``~Z9l zra2wFEYA{`N=fvTpxB{jV~B|3Vx5 z?LUNyf49W1NFikZ7jkUp3ni)wp&$6g2BJYp@WRKt&%qNujfTxZ)d%@eq_P+{lR}<`Urtmw>0>BB7n~t9UQ+syg-D}B< zFqSYPH2CXx_`PWC0cRo`a)2X9g-GEob6Ao%54gQxsT^k+TeruJIZ4L;-F78;4*`FC z=uIx - - - - - diff --git a/src/NadekoBot.Generators/Cloneable/CloneableGenerator.cs b/src/Nadeko.Bot.Generators.Cloneable/CloneableGenerator.cs similarity index 100% rename from src/NadekoBot.Generators/Cloneable/CloneableGenerator.cs rename to src/Nadeko.Bot.Generators.Cloneable/CloneableGenerator.cs diff --git a/src/Nadeko.Bot.Generators.Cloneable/Nadeko.Bot.Generators.Cloneable.csproj b/src/Nadeko.Bot.Generators.Cloneable/Nadeko.Bot.Generators.Cloneable.csproj new file mode 100644 index 000000000..6836c6808 --- /dev/null +++ b/src/Nadeko.Bot.Generators.Cloneable/Nadeko.Bot.Generators.Cloneable.csproj @@ -0,0 +1,9 @@ + + + + net7.0 + enable + enable + + + diff --git a/src/NadekoBot.Generators/Cloneable/SymbolExtensions.cs b/src/Nadeko.Bot.Generators.Cloneable/SymbolExtensions.cs similarity index 100% rename from src/NadekoBot.Generators/Cloneable/SymbolExtensions.cs rename to src/Nadeko.Bot.Generators.Cloneable/SymbolExtensions.cs diff --git a/src/NadekoBot.Generators/Cloneable/SyntaxReceiver.cs b/src/Nadeko.Bot.Generators.Cloneable/SyntaxReceiver.cs similarity index 100% rename from src/NadekoBot.Generators/Cloneable/SyntaxReceiver.cs rename to src/Nadeko.Bot.Generators.Cloneable/SyntaxReceiver.cs diff --git a/src/NadekoBot.Generators/LocalizedStringsGenerator.cs b/src/NadekoBot.Generators/LocalizedStringsGenerator.cs index 4fe5cce09..52d2491bd 100644 --- a/src/NadekoBot.Generators/LocalizedStringsGenerator.cs +++ b/src/NadekoBot.Generators/LocalizedStringsGenerator.cs @@ -26,20 +26,20 @@ namespace NadekoBot.Generators [Generator] public class LocalizedStringsGenerator : ISourceGenerator { -// private const string LOC_STR_SOURCE = @"namespace NadekoBot -// { -// public readonly struct LocStr -// { -// public readonly string Key; -// public readonly object[] Params; -// -// public LocStr(string key, params object[] data) -// { -// Key = key; -// Params = data; -// } -// } -// }"; + private const string LOC_STR_SOURCE = @"namespace NadekoBot +{ + public readonly struct LocStr + { + public readonly string Key; + public readonly object[] Params; + + public LocStr(string key, params object[] data) + { + Key = key; + Params = data; + } + } +}"; public void Initialize(GeneratorInitializationContext context) { @@ -106,7 +106,7 @@ namespace NadekoBot.Generators context.AddSource("strs.g.cs", stringWriter.ToString()); } - // context.AddSource("LocStr.g.cs", LOC_STR_SOURCE); + context.AddSource("LocStr.g.cs", LOC_STR_SOURCE); } private List GetFields(string? dataText) diff --git a/src/NadekoBot.Modules.Expresssions/NadekoBot.Modules.Expresssions.csproj b/src/NadekoBot.Modules.Expresssions/NadekoBot.Modules.Expresssions.csproj index aaa592d84..57e4863e2 100644 --- a/src/NadekoBot.Modules.Expresssions/NadekoBot.Modules.Expresssions.csproj +++ b/src/NadekoBot.Modules.Expresssions/NadekoBot.Modules.Expresssions.csproj @@ -17,4 +17,8 @@ + + + + diff --git a/src/NadekoBot.Modules.Expresssions/NadekoExpressionsService.cs b/src/NadekoBot.Modules.Expresssions/NadekoExpressionsService.cs index 21683c562..f420ff00b 100644 --- a/src/NadekoBot.Modules.Expresssions/NadekoExpressionsService.cs +++ b/src/NadekoBot.Modules.Expresssions/NadekoExpressionsService.cs @@ -9,6 +9,7 @@ using NadekoBot.Services.Database.Models; using System.Runtime.CompilerServices; using LinqToDB.EntityFrameworkCore; using Nadeko.Common; +using NadekoBot.Services; using Serilog; using YamlDotNet.Serialization; using YamlDotNet.Serialization.NamingConventions; diff --git a/src/NadekoBot.Modules.Expresssions/TypeReaders/CommandOrExprTypeReader.cs b/src/NadekoBot.Modules.Expresssions/TypeReaders/CommandOrExprTypeReader.cs new file mode 100644 index 000000000..b22e265a2 --- /dev/null +++ b/src/NadekoBot.Modules.Expresssions/TypeReaders/CommandOrExprTypeReader.cs @@ -0,0 +1,31 @@ +#nullable disable +namespace NadekoBot.Common.TypeReaders; + +public sealed class CommandOrExprTypeReader : NadekoTypeReader +{ + private readonly CommandService _cmds; + private readonly CommandHandler _commandHandler; + private readonly NadekoExpressionsService _exprs; + + public CommandOrExprTypeReader(CommandService cmds, NadekoExpressionsService exprs, CommandHandler commandHandler) + { + _cmds = cmds; + _exprs = exprs; + _commandHandler = commandHandler; + } + + public override async ValueTask> ReadAsync(ICommandContext ctx, string input) + { + if (_exprs.ExpressionExists(ctx.Guild?.Id, input)) + return TypeReaderResult.FromSuccess(new CommandOrExprInfo(input, CommandOrExprInfo.Type.Custom)); + + var cmd = await new CommandTypeReader(_commandHandler, _cmds).ReadAsync(ctx, input); + if (cmd.IsSuccess) + { + return TypeReaderResult.FromSuccess(new CommandOrExprInfo(((CommandInfo)cmd.Values.First().Value).Name, + CommandOrExprInfo.Type.Normal)); + } + + return TypeReaderResult.FromError(CommandError.ParseFailed, "No such command or expression found."); + } +} \ No newline at end of file diff --git a/src/NadekoBot/Common/Medusa/IMedusaLoaderService.cs b/src/NadekoBot/Common/Medusa/IMedusaLoaderService.cs deleted file mode 100644 index 06812a8e1..000000000 --- a/src/NadekoBot/Common/Medusa/IMedusaLoaderService.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Globalization; - -namespace Nadeko.Medusa; - -public interface IMedusaLoaderService -{ - Task LoadMedusaAsync(string medusaName); - Task UnloadMedusaAsync(string medusaName); - string GetCommandDescription(string medusaName, string commandName, CultureInfo culture); - string[] GetCommandExampleArgs(string medusaName, string commandName, CultureInfo culture); - Task ReloadStrings(); - IReadOnlyCollection GetAllMedusae(); - IReadOnlyCollection GetLoadedMedusae(CultureInfo? cultureInfo = null); -} - -public sealed record MedusaStats(string Name, - string? Description, - IReadOnlyCollection Sneks); - -public sealed record SnekStats(string Name, - string? Prefix, - IReadOnlyCollection Commands); - -public sealed record SnekCommandStats(string Name); \ No newline at end of file diff --git a/src/NadekoBot/Common/TypeReaders/BotCommandTypeReader.cs b/src/NadekoBot/Common/TypeReaders/BotCommandTypeReader.cs index 00b70c611..9a95ce854 100644 --- a/src/NadekoBot/Common/TypeReaders/BotCommandTypeReader.cs +++ b/src/NadekoBot/Common/TypeReaders/BotCommandTypeReader.cs @@ -1,6 +1,4 @@ #nullable disable -using NadekoBot.Modules.NadekoExpressions; - namespace NadekoBot.Common.TypeReaders; public sealed class CommandTypeReader : NadekoTypeReader @@ -29,54 +27,4 @@ public sealed class CommandTypeReader : NadekoTypeReader return new(TypeReaderResult.FromSuccess(cmd)); } -} - -public sealed class CommandOrExprTypeReader : NadekoTypeReader -{ - private readonly CommandService _cmds; - private readonly CommandHandler _commandHandler; - private readonly NadekoExpressionsService _exprs; - - public CommandOrExprTypeReader(CommandService cmds, NadekoExpressionsService exprs, CommandHandler commandHandler) - { - _cmds = cmds; - _exprs = exprs; - _commandHandler = commandHandler; - } - - public override async ValueTask> ReadAsync(ICommandContext ctx, string input) - { - if (_exprs.ExpressionExists(ctx.Guild?.Id, input)) - return TypeReaderResult.FromSuccess(new CommandOrExprInfo(input, CommandOrExprInfo.Type.Custom)); - - var cmd = await new CommandTypeReader(_commandHandler, _cmds).ReadAsync(ctx, input); - if (cmd.IsSuccess) - { - return TypeReaderResult.FromSuccess(new CommandOrExprInfo(((CommandInfo)cmd.Values.First().Value).Name, - CommandOrExprInfo.Type.Normal)); - } - - return TypeReaderResult.FromError(CommandError.ParseFailed, "No such command or expression found."); - } -} - -public class CommandOrExprInfo -{ - public enum Type - { - Normal, - Custom - } - - public string Name { get; set; } - public Type CmdType { get; set; } - - public bool IsCustom - => CmdType == Type.Custom; - - public CommandOrExprInfo(string input, Type type) - { - Name = input; - CmdType = type; - } } \ No newline at end of file diff --git a/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideCommands.cs b/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideCommands.cs index ec764550d..122236855 100644 --- a/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideCommands.cs +++ b/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideCommands.cs @@ -1,5 +1,6 @@ #nullable disable using Nadeko.Common; +using Nadeko.Bot.Db; using NadekoBot.Common.TypeReaders; using NadekoBot.Modules.Administration.Services; diff --git a/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideService.cs b/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideService.cs index b81ba5d65..e8e7774e5 100644 --- a/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideService.cs +++ b/src/NadekoBot/Modules/Administration/PermOverrides/DiscordPermOverrideService.cs @@ -25,7 +25,7 @@ public class DiscordPermOverrideService : INService, IExecPreCommand .ToConcurrent(); } - public bool TryGetOverrides(ulong guildId, string commandName, out GuildPerm? perm) + public bool TryGetOverrides(ulong guildId, string commandName, out Nadeko.Bot.Db.GuildPerm? perm) { commandName = commandName.ToLowerInvariant(); if (_overrides.TryGetValue((guildId, commandName), out var dpo)) @@ -62,12 +62,12 @@ public class DiscordPermOverrideService : INService, IExecPreCommand .Add(over = new() { Command = commandName, - Perm = perm, + Perm = (Nadeko.Bot.Db.GuildPerm)perm, GuildId = guildId }); } else - over.Perm = perm; + over.Perm = (Nadeko.Bot.Db.GuildPerm)perm; _overrides[(guildId, commandName)] = over; diff --git a/src/NadekoBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs b/src/NadekoBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs index 05bcf65f7..2f1fd7cbe 100644 --- a/src/NadekoBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs +++ b/src/NadekoBot/Modules/Administration/PlayingRotate/PlayingRotateService.cs @@ -57,7 +57,7 @@ public sealed class PlayingRotateService : INService, IReadyExecutor : rotatingStatuses[index++]; var statusText = _rep.Replace(playingStatus.Status); - await _selfService.SetGameAsync(statusText, playingStatus.Type); + await _selfService.SetGameAsync(statusText, (ActivityType)playingStatus.Type); } catch (Exception ex) { @@ -82,13 +82,13 @@ public sealed class PlayingRotateService : INService, IReadyExecutor return toRemove.Status; } - public async Task AddPlaying(ActivityType t, string status) + public async Task AddPlaying(ActivityType activityType, string status) { await using var uow = _db.GetDbContext(); var toAdd = new RotatingPlayingStatus { Status = status, - Type = t + Type = (Nadeko.Bot.Db.ActivityType)activityType }; uow.Add(toAdd); await uow.SaveChangesAsync(); diff --git a/src/NadekoBot/Modules/Help/HelpService.cs b/src/NadekoBot/Modules/Help/HelpService.cs index 6c614ad79..bc2076952 100644 --- a/src/NadekoBot/Modules/Help/HelpService.cs +++ b/src/NadekoBot/Modules/Help/HelpService.cs @@ -77,7 +77,7 @@ public class HelpService : IExecNoCommand, INService .AddField(str, $"{com.RealSummary(_strings, _medusae, culture, prefix)}", true); _dpos.TryGetOverrides(guild?.Id ?? 0, com.Name, out var overrides); - var reqs = GetCommandRequirements(com, overrides); + var reqs = GetCommandRequirements(com, (GuildPermission?)overrides); if (reqs.Any()) em.AddField(GetText(strs.requires, guild), string.Join("\n", reqs)); diff --git a/src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationService.cs b/src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationService.cs index ed7896e82..8385c0db7 100644 --- a/src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationService.cs +++ b/src/NadekoBot/Modules/Searches/StreamNotification/StreamNotificationService.cs @@ -4,6 +4,7 @@ using Nadeko.Common; using NadekoBot.Common.ModuleBehaviors; using NadekoBot.Db; using NadekoBot.Db.Models; +using NadekoBot.Modules.Searches._Common; using NadekoBot.Modules.Searches.Common; using NadekoBot.Modules.Searches.Common.StreamNotifications; using NadekoBot.Services.Database.Models; diff --git a/src/NadekoBot/NadekoBot.csproj b/src/NadekoBot/NadekoBot.csproj index 34b9c5dc6..df791c02d 100644 --- a/src/NadekoBot/NadekoBot.csproj +++ b/src/NadekoBot/NadekoBot.csproj @@ -41,7 +41,7 @@ - + @@ -102,15 +102,12 @@ - + + - - - - - + @@ -119,24 +116,12 @@ PreserveNewest - + PreserveNewest Always - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - diff --git a/src/NadekoBot/Services/Impl/Localization.cs b/src/NadekoBot/Services/Impl/Localization.cs index ada2d1c92..6abd65671 100644 --- a/src/NadekoBot/Services/Impl/Localization.cs +++ b/src/NadekoBot/Services/Impl/Localization.cs @@ -11,7 +11,10 @@ public class Localization : ILocalization, INService JsonConvert.DeserializeObject>( File.ReadAllText("./data/strings/commands/commands.en-US.json")); - public ConcurrentDictionary GuildCultureInfos { get; } + private readonly ConcurrentDictionary _guildCultureInfos; + + public IDictionary GuildCultureInfos + => _guildCultureInfos; public CultureInfo DefaultCultureInfo => _bss.Data.DefaultLocale; @@ -26,21 +29,22 @@ public class Localization : ILocalization, INService var cultureInfoNames = bot.AllGuildConfigs.ToDictionary(x => x.GuildId, x => x.Locale); - GuildCultureInfos = new(cultureInfoNames.ToDictionary(x => x.Key, - x => - { - CultureInfo cultureInfo = null; - try - { - if (x.Value is null) - return null; - cultureInfo = new(x.Value); - } - catch { } + _guildCultureInfos = new(cultureInfoNames + .ToDictionary(x => x.Key, + x => + { + CultureInfo cultureInfo = null; + try + { + if (x.Value is null) + return null; + cultureInfo = new(x.Value); + } + catch { } - return cultureInfo; - }) - .Where(x => x.Value is not null)); + return cultureInfo; + }) + .Where(x => x.Value is not null)); } public void SetGuildCulture(IGuild guild, CultureInfo ci) @@ -61,7 +65,7 @@ public class Localization : ILocalization, INService uow.SaveChanges(); } - GuildCultureInfos.AddOrUpdate(guildId, ci, (_, _) => ci); + _guildCultureInfos.AddOrUpdate(guildId, ci, (_, _) => ci); } public void RemoveGuildCulture(IGuild guild) @@ -69,7 +73,7 @@ public class Localization : ILocalization, INService public void RemoveGuildCulture(ulong guildId) { - if (GuildCultureInfos.TryRemove(guildId, out _)) + if (_guildCultureInfos.TryRemove(guildId, out _)) { using var uow = _db.GetDbContext(); var gc = uow.GuildConfigsForId(guildId, set => set); diff --git a/src/NadekoBot/Services/strings/impl/BotStrings.cs b/src/NadekoBot/Services/strings/impl/BotStrings.cs index ef2be4608..5462dac96 100644 --- a/src/NadekoBot/Services/strings/impl/BotStrings.cs +++ b/src/NadekoBot/Services/strings/impl/BotStrings.cs @@ -1,6 +1,5 @@ #nullable disable using System.Globalization; -using YamlDotNet.Serialization; namespace NadekoBot.Services; @@ -80,7 +79,7 @@ public class BotStrings : IBotStrings Log.Warning("'{CommandName}' doesn't exist in 'en-US' command strings. Please report this", commandName); - return new() + return new CommandStrings() { Args = new[] { "" }, Desc = "?" @@ -99,15 +98,4 @@ public class BotStrings : IBotStrings public void Reload() => _stringsProvider.Reload(); -} - - -public sealed class CommandStrings - : ICommandStrings -{ - [YamlMember(Alias = "desc")] - public string Desc { get; set; } - - [YamlMember(Alias = "args")] - public string[] Args { get; set; } } \ No newline at end of file diff --git a/src/NadekoBot/Services/strings/impl/LocalFileStringsSource.cs b/src/NadekoBot/Services/strings/impl/LocalFileStringsSource.cs index a3fb28032..109fc553f 100644 --- a/src/NadekoBot/Services/strings/impl/LocalFileStringsSource.cs +++ b/src/NadekoBot/Services/strings/impl/LocalFileStringsSource.cs @@ -40,11 +40,11 @@ public class LocalFileStringsSource : IStringsSource return outputDict; } - public Dictionary> GetCommandStrings() + public Dictionary> GetCommandStrings() { var deserializer = new DeserializerBuilder().Build(); - var outputDict = new Dictionary>().; + var outputDict = new Dictionary>(); foreach (var file in Directory.GetFiles(_commandsPath)) { try diff --git a/src/NadekoBot/Services/strings/impl/MemoryBotStringsProvider.cs b/src/NadekoBot/Services/strings/impl/MemoryBotStringsProvider.cs index a0865e17e..b75b94cf0 100644 --- a/src/NadekoBot/Services/strings/impl/MemoryBotStringsProvider.cs +++ b/src/NadekoBot/Services/strings/impl/MemoryBotStringsProvider.cs @@ -27,7 +27,7 @@ public class MemoryBotStringsProvider : IBotStringsProvider commandStrings = _source.GetCommandStrings(); } - public ICommandStrings GetCommandStrings(string localeName, string commandName) + public CommandStrings GetCommandStrings(string localeName, string commandName) { if (commandStrings.TryGetValue(localeName, out var langStrings) && langStrings.TryGetValue(commandName, out var strings))