Explorar o código

Add filtering by tier. Refactor resources files

Tigran %!s(int64=4) %!d(string=hai) anos
pai
achega
828abb952c
Modificáronse 33 ficheiros con 317 adicións e 323 borrados
  1. 6 3
      CardCollector.sln.DotSettings.user
  2. 12 21
      CardCollector/CardCollector.csproj
  3. 1 1
      CardCollector/Commands/CallbackQuery/AuthorCallback.cs
  4. 1 1
      CardCollector/Commands/CallbackQuery/BackToFiltersMenu.cs
  5. 10 2
      CardCollector/Commands/CallbackQuery/CallbackQuery.cs
  6. 0 21
      CardCollector/Commands/CallbackQuery/SelectAuthorCallback.cs
  7. 25 0
      CardCollector/Commands/CallbackQuery/SetFilterCallback.cs
  8. 20 0
      CardCollector/Commands/CallbackQuery/TierCallback.cs
  9. 1 1
      CardCollector/Commands/ChosenInlineResult/GetUnlimitedStickerAndExecuteCommand.cs
  10. 1 1
      CardCollector/Commands/ChosenInlineResult/SendStickerResult.cs
  11. 1 1
      CardCollector/Commands/CommandNotFound.cs
  12. 1 1
      CardCollector/Commands/Custom/ShowFiltersMenu.cs
  13. 1 1
      CardCollector/Commands/IgnoreUpdate.cs
  14. 2 2
      CardCollector/Commands/InlineQuery/ShowStickersInBotChat.cs
  15. 2 2
      CardCollector/Commands/InlineQuery/ShowStickersInGroup.cs
  16. 1 2
      CardCollector/Commands/Message/AuctionMessage.cs
  17. 1 1
      CardCollector/Commands/Message/CollectionMessage.cs
  18. 1 1
      CardCollector/Commands/Message/ProfileMessage.cs
  19. 1 1
      CardCollector/Commands/Message/ShopMessage.cs
  20. 1 1
      CardCollector/Commands/Message/ShowSampleMessage.cs
  21. 1 1
      CardCollector/Commands/Message/StartMessage.cs
  22. 1 1
      CardCollector/Commands/MyChatMember/MyChatMember.cs
  23. 2 2
      CardCollector/Commands/UpdateModel.cs
  24. 1 1
      CardCollector/DataBase/Entity/UserEntity.cs
  25. 84 3
      CardCollector/Resources/Command.Designer.cs
  26. 30 3
      CardCollector/Resources/Command.resx
  27. 30 25
      CardCollector/Resources/Keyboard.cs
  28. 0 117
      CardCollector/Resources/MessageCommands.Designer.cs
  29. 0 39
      CardCollector/Resources/MessageCommands.resx
  30. 9 0
      CardCollector/Resources/Messages.Designer.cs
  31. 3 0
      CardCollector/Resources/Messages.resx
  32. 46 46
      CardCollector/Resources/Text.Designer.cs
  33. 21 21
      CardCollector/Resources/Text.resx

+ 6 - 3
CardCollector.sln.DotSettings.user

@@ -1,9 +1,12 @@
 <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
-	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FCallbackQueryCommands/@EntryIndexedValue">False</s:Boolean>
-	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FInlineQueryCommands/@EntryIndexedValue">True</s:Boolean>
 	
-	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FMessageCommands/@EntryIndexedValue">False</s:Boolean>
+	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FCommand/@EntryIndexedValue">False</s:Boolean>
+	
+	
+	
+	
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FMessages/@EntryIndexedValue">False</s:Boolean>
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FSortingTypes/@EntryIndexedValue">False</s:Boolean>
+	<s:Boolean x:Key="/Default/ResxEditorPersonal/CheckedGroups/=CardCollector_002FResources_002FText/@EntryIndexedValue">True</s:Boolean>
 	
 	<s:Boolean x:Key="/Default/ResxEditorPersonal/Initialized/@EntryValue">True</s:Boolean></wpf:ResourceDictionary>

+ 12 - 21
CardCollector/CardCollector.csproj

@@ -14,18 +14,10 @@
     </ItemGroup>
 
     <ItemGroup>
-      <EmbeddedResource Update="Resources\MessageCommands.resx">
-        <Generator>ResXFileCodeGenerator</Generator>
-        <LastGenOutput>MessageCommands.Designer.cs</LastGenOutput>
-      </EmbeddedResource>
       <EmbeddedResource Update="Resources\Messages.resx">
         <Generator>ResXFileCodeGenerator</Generator>
         <LastGenOutput>Messages.Designer.cs</LastGenOutput>
       </EmbeddedResource>
-      <EmbeddedResource Update="Resources\CallbackQueryCommands.resx">
-        <Generator>ResXFileCodeGenerator</Generator>
-        <LastGenOutput>CallbackQueryCommands.Designer.cs</LastGenOutput>
-      </EmbeddedResource>
       <EmbeddedResource Update="Resources\SortingTypes.resx">
         <Generator>ResXFileCodeGenerator</Generator>
         <LastGenOutput>SortingTypes.Designer.cs</LastGenOutput>
@@ -34,42 +26,41 @@
         <Generator>ResXFileCodeGenerator</Generator>
         <LastGenOutput>SortingTypes.Designer.cs</LastGenOutput>
       </EmbeddedResource>
-      <EmbeddedResource Update="Resources\InlineQueryCommands.resx">
+      <EmbeddedResource Update="Resources\Text.resx">
         <Generator>ResXFileCodeGenerator</Generator>
-        <LastGenOutput>InlineQueryCommands.Designer.cs</LastGenOutput>
+        <LastGenOutput>Text.Designer.cs</LastGenOutput>
+      </EmbeddedResource>
+      <EmbeddedResource Update="Resources\Command.resx">
+        <Generator>ResXFileCodeGenerator</Generator>
+        <LastGenOutput>Command.Designer.cs</LastGenOutput>
       </EmbeddedResource>
     </ItemGroup>
 
     <ItemGroup>
-      <Compile Update="Resources\MessageCommands.Designer.cs">
-        <DesignTime>True</DesignTime>
-        <AutoGen>True</AutoGen>
-        <DependentUpon>MessageCommands.resx</DependentUpon>
-      </Compile>
       <Compile Update="Resources\Messages.Designer.cs">
         <DesignTime>True</DesignTime>
         <AutoGen>True</AutoGen>
         <DependentUpon>Messages.resx</DependentUpon>
       </Compile>
-      <Compile Update="Resources\CallbackQueryCommands.Designer.cs">
+      <Compile Update="Resources\SortingTypes.Designer.cs">
         <DesignTime>True</DesignTime>
         <AutoGen>True</AutoGen>
-        <DependentUpon>CallbackQueryCommands.resx</DependentUpon>
+        <DependentUpon>SortingTypes.resx</DependentUpon>
       </Compile>
       <Compile Update="Resources\SortingTypes.Designer.cs">
         <DesignTime>True</DesignTime>
         <AutoGen>True</AutoGen>
         <DependentUpon>SortingTypes.resx</DependentUpon>
       </Compile>
-      <Compile Update="Resources\SortingTypes.Designer.cs">
+      <Compile Update="Resources\Text.Designer.cs">
         <DesignTime>True</DesignTime>
         <AutoGen>True</AutoGen>
-        <DependentUpon>SortingTypes.resx</DependentUpon>
+        <DependentUpon>Text.resx</DependentUpon>
       </Compile>
-      <Compile Update="Resources\InlineQueryCommands.Designer.cs">
+      <Compile Update="Resources\Command.Designer.cs">
         <DesignTime>True</DesignTime>
         <AutoGen>True</AutoGen>
-        <DependentUpon>InlineQueryCommands.resx</DependentUpon>
+        <DependentUpon>Command.resx</DependentUpon>
       </Compile>
     </ItemGroup>
 

+ 1 - 1
CardCollector/Commands/CallbackQuery/AuthorCallback.cs

@@ -10,7 +10,7 @@ namespace CardCollector.Commands.CallbackQuery
     /* Реализует нажатие на кнопку "Автор" (открывается меню с выбором автора) */
     public class AuthorCallback : CallbackQuery
     {
-        protected override string Command => CallbackQueryCommands.author;
+        protected override string CommandText => Command.author;
 
         public override async Task Execute()
         {

+ 1 - 1
CardCollector/Commands/CallbackQuery/BackToFiltersMenu.cs

@@ -8,7 +8,7 @@ namespace CardCollector.Commands.CallbackQuery
 {
     public class BackToFiltersMenu : CallbackQuery
     {
-        protected override string Command => CallbackQueryCommands.back;
+        protected override string CommandText => Command.back;
         public override async Task Execute()
         {
             /* Формируем сообщение с имеющимися фильтрами у пользователя */

+ 10 - 2
CardCollector/Commands/CallbackQuery/CallbackQuery.cs

@@ -30,8 +30,10 @@ namespace CardCollector.Commands.CallbackQuery
         {
             /* Кнопка "Автор" */
             new AuthorCallback(),
-            /* Выбор автора из списка */
-            new SelectAuthorCallback(),
+            /* Кнопка "Тир" */
+            new TierCallback(),
+            /* Установка фильтра */
+            new SetFilterCallback(),
             
             /* Отмена в момент выбора "значения фильтра", не в самом меню */
             new BackToFiltersMenu(),
@@ -55,6 +57,12 @@ namespace CardCollector.Commands.CallbackQuery
             return new CommandNotFound(user, update, command);
         }
 
+        protected internal override bool IsMatches(string command)
+        {
+            var query = command.Split('=')[0];
+            return base.IsMatches(query);
+        }
+
         protected CallbackQuery(UserEntity user, Update update) : base(user, update)
         {
             CallbackData = update.CallbackQuery!.Data;

+ 0 - 21
CardCollector/Commands/CallbackQuery/SelectAuthorCallback.cs

@@ -1,21 +0,0 @@
-using System.Threading.Tasks;
-using CardCollector.DataBase.Entity;
-using CardCollector.Resources;
-using Telegram.Bot.Types;
-
-namespace CardCollector.Commands.CallbackQuery
-{
-    public class SelectAuthorCallback : CallbackQuery
-    {
-        protected override string Command => CallbackQueryCommands.author_callback;
-        public override async Task Execute()
-        {
-            var result = CallbackData.Split('=')[1];
-            User.Filters["author"] = result;
-            await new BackToFiltersMenu(User, Update).Execute();
-        }
-        
-        public SelectAuthorCallback() { }
-        public SelectAuthorCallback(UserEntity user, Update update) : base (user, update) { }
-    }
-}

+ 25 - 0
CardCollector/Commands/CallbackQuery/SetFilterCallback.cs

@@ -0,0 +1,25 @@
+using System;
+using System.Threading.Tasks;
+using CardCollector.DataBase.Entity;
+using CardCollector.Resources;
+using Telegram.Bot.Types;
+
+namespace CardCollector.Commands.CallbackQuery
+{
+    /* Реализует установку фильтров */
+    public class SetFilterCallback : CallbackQuery
+    {
+        protected override string CommandText => Command.set;
+        public override async Task Execute()
+        {
+            var result = CallbackData.Split('=');
+            /* Команду set мы получаем в виде set=<key>=<value>, соответственно аргументы 1 и 2 это ключ и значение словаря */
+            User.Filters[result[1]] = Convert.ChangeType(result[2], User.Filters[result[1]].GetType());
+            /* Возвращаемся в меню фильтров */
+            await new BackToFiltersMenu(User, Update).Execute();
+        }
+        
+        public SetFilterCallback() { }
+        public SetFilterCallback(UserEntity user, Update update) : base (user, update) { }
+    }
+}

+ 20 - 0
CardCollector/Commands/CallbackQuery/TierCallback.cs

@@ -0,0 +1,20 @@
+using System.Threading.Tasks;
+using CardCollector.Controllers;
+using CardCollector.DataBase.Entity;
+using CardCollector.Resources;
+using Telegram.Bot.Types;
+
+namespace CardCollector.Commands.CallbackQuery
+{
+    public class TierCallback : CallbackQuery
+    {
+        protected override string CommandText => Command.tier;
+        public override async Task Execute()
+        {
+            await MessageController.EditMessage(User, CallbackMessageId, Messages.choose_tier, Keyboard.TierOptions);
+        }
+        
+        public TierCallback() { }
+        public TierCallback(UserEntity user, Update update) : base(user, update) { }
+    }
+}

+ 1 - 1
CardCollector/Commands/ChosenInlineResult/GetUnlimitedStickerAndExecuteCommand.cs

@@ -11,7 +11,7 @@ namespace CardCollector.Commands.ChosenInlineResult
 {
     public class GetUnlimitedStickerAndExecuteCommand : ChosenInlineResult
     {
-        protected override string Command => InlineQueryCommands.unlimited_stickers;
+        protected override string CommandText => Command.unlimited_stickers;
         
         public override async Task Execute()
         {

+ 1 - 1
CardCollector/Commands/ChosenInlineResult/SendStickerResult.cs

@@ -9,7 +9,7 @@ namespace CardCollector.Commands.ChosenInlineResult
     public class SendStickerResult : ChosenInlineResult
     {
         /* Ключевое слово для данной команды send_sticker */
-        protected override string Command => InlineQueryCommands.send_sticker;
+        protected override string CommandText => Command.send_sticker;
         public override Task Execute()
         {
             // Получаем MD5 хеш из полученного запроса разделением по символу '='

+ 1 - 1
CardCollector/Commands/CommandNotFound.cs

@@ -8,7 +8,7 @@ namespace CardCollector.Commands
     /* Данный класс реализует операцию "Команда не найдена" */
     public class CommandNotFound : UpdateModel
     {
-        protected override string Command => "";
+        protected override string CommandText => "";
         private readonly string _command;
 
         public override async Task Execute()

+ 1 - 1
CardCollector/Commands/Custom/ShowFiltersMenu.cs

@@ -9,7 +9,7 @@ namespace CardCollector.Commands.Custom
     /* Этот класс реализует отправку нового сообщения с фильтрами пользователя */
     public class ShowFiltersMenu : Message.Message
     {
-        protected override string Command => "Message";
+        protected override string CommandText => "Message";
         public override async Task Execute()
         {
             /* Формируем сообщение с имеющимися фильтрами у пользователя */

+ 1 - 1
CardCollector/Commands/IgnoreUpdate.cs

@@ -5,7 +5,7 @@ namespace CardCollector.Commands
     /* Данный класс позволяет проигнорировать входящее обновление */
     public class IgnoreUpdate : UpdateModel
     {
-        protected override string Command => "";
+        protected override string CommandText => "";
         public override Task Execute() { return  Task.CompletedTask; }
     }
 }

+ 2 - 2
CardCollector/Commands/InlineQuery/ShowStickersInBotChat.cs

@@ -11,14 +11,14 @@ namespace CardCollector.Commands.InlineQuery
     {
         /* Команда - пустая строка, поскольку пользователь может вводить любые слова
          после @имя_бота, введенная фраза будет использоваться для фильтрации стикеров */
-        protected override string Command => "";
+        protected override string CommandText => "";
         
         public override async Task Execute()
         {
             // Фильтр - введенная пользователем фраза
             var filter = Update.InlineQuery!.Query;
             // Получаем список стикеров
-            var stickersList = await User.GetStickersList(InlineQueryCommands.select_sticker, filter, true);
+            var stickersList = await User.GetStickersList(Command.select_sticker, filter, true);
             // Посылаем пользователю ответ на его запрос
             await MessageController.AnswerInlineQuery(InlineQueryId, stickersList);
         }

+ 2 - 2
CardCollector/Commands/InlineQuery/ShowStickersInGroup.cs

@@ -11,14 +11,14 @@ namespace CardCollector.Commands.InlineQuery
     {
         /* Команда - пустая строка, поскольку пользователь может вводить любые слова
          после @имя_бота, введенная фраза будет использоваться для фильтрации стикеров */
-        protected override string Command => "";
+        protected override string CommandText => "";
         
         public override async Task Execute()
         {
             // Фильтр - введенная пользователем фраза
             var filter = Update.InlineQuery!.Query;
             // Получаем список стикеров
-            var stickersList = await User.GetStickersList(InlineQueryCommands.send_sticker, filter);
+            var stickersList = await User.GetStickersList(Command.send_sticker, filter);
             // Посылаем пользователю ответ на его запрос
             await MessageController.AnswerInlineQuery(InlineQueryId, stickersList);
         }

+ 1 - 2
CardCollector/Commands/Message/AuctionMessage.cs

@@ -1,6 +1,5 @@
 using System.Threading.Tasks;
 using CardCollector.Commands.Custom;
-using CardCollector.Controllers;
 using CardCollector.DataBase.Entity;
 using CardCollector.Resources;
 using Telegram.Bot.Types;
@@ -10,7 +9,7 @@ namespace CardCollector.Commands.Message
     /* Реалищует команду "Аукцион" */
     public class AuctionMessage : Message
     {
-        protected override string Command => MessageCommands.auction;
+        protected override string CommandText => Text.auction;
         public override async Task Execute()
         {
             /* Очищаем чат с пользователем */

+ 1 - 1
CardCollector/Commands/Message/CollectionMessage.cs

@@ -9,7 +9,7 @@ namespace CardCollector.Commands.Message
     /* Реализует команду "Коллекция" */
     public class CollectionMessage : Message
     {
-        protected override string Command => MessageCommands.collection;
+        protected override string CommandText => Text.collection;
         public override async Task Execute()
         {
             /* Очищаем чат с пользователем */

+ 1 - 1
CardCollector/Commands/Message/ProfileMessage.cs

@@ -11,7 +11,7 @@ namespace CardCollector.Commands.Message
     public class ProfileMessage : Message
     {
         /* Для данной команды ключевое слово "Профиль" */
-        protected override string Command => MessageCommands.profile;
+        protected override string CommandText => Text.profile;
         public override async Task Execute()
         {
             /* Открепляем все закрепы */

+ 1 - 1
CardCollector/Commands/Message/ShopMessage.cs

@@ -9,7 +9,7 @@ namespace CardCollector.Commands.Message
     /* Реализует команду "Магазин" */
     public class ShopMessage : Message
     {
-        protected override string Command => MessageCommands.shop;
+        protected override string CommandText => Text.shop;
         public override async Task Execute()
         {
             /* Очищаем чат с пользователем */

+ 1 - 1
CardCollector/Commands/Message/ShowSampleMessage.cs

@@ -12,7 +12,7 @@ namespace CardCollector.Commands.Message
      PrivilegeLevel = 5 */
     public class ShowSampleMessage : Message
     {
-        protected override string Command => MessageCommands.show_sample;
+        protected override string CommandText => Text.show_sample;
         public override async Task Execute()
         {
             await MessageController.SendMessage(User, "Текущие примененные фильтры:" +

+ 1 - 1
CardCollector/Commands/Message/StartMessage.cs

@@ -10,7 +10,7 @@ namespace CardCollector.Commands.Message
     public class StartMessage : Message
     {
         /* */
-        protected override string Command => MessageCommands.start;
+        protected override string CommandText => Text.start;
         
         public override async Task Execute()
         {

+ 1 - 1
CardCollector/Commands/MyChatMember/MyChatMember.cs

@@ -11,7 +11,7 @@ namespace CardCollector.Commands.MyChatMember
      Данный класс полностью реализован и не нуждается в наследовании */
     public class MyChatMember : UpdateModel
     {
-        protected override string Command => "";
+        protected override string CommandText => "";
         private readonly ChatMemberStatus _status;
         public override async Task Execute()
         {

+ 2 - 2
CardCollector/Commands/UpdateModel.cs

@@ -13,7 +13,7 @@ namespace CardCollector.Commands
      Метод IsMatches - проверяет команду на сопадение по ключу */
     public abstract class UpdateModel
     {
-        protected abstract string Command { get; }
+        protected abstract string CommandText { get; }
         protected UserEntity User;
         protected Update Update;
 
@@ -21,7 +21,7 @@ namespace CardCollector.Commands
 
         protected internal virtual bool IsMatches(string command)
         {
-            return command.Contains(Command);
+            return command.Contains(CommandText);
         }
 
         protected UpdateModel()

+ 1 - 1
CardCollector/DataBase/Entity/UserEntity.cs

@@ -129,7 +129,7 @@ namespace CardCollector.DataBase.Entity
             {
                 result.Add(new 
                     InlineQueryResultCachedSticker(
-                        $"{(Constants.UNLIMITED_ALL_STICKERS ? InlineQueryCommands.unlimited_stickers : "")}{command}={item.Md5Hash}",
+                        $"{(Constants.UNLIMITED_ALL_STICKERS ? Command.unlimited_stickers : "")}{command}={item.Md5Hash}",
                         item.Id));
                 /* Ограничение Telegram API по количеству результатов в 50 шт. */
                 if (result.Count > 49) return result;

+ 84 - 3
CardCollector/Resources/InlineQueryCommands.Designer.cs → CardCollector/Resources/Command.Designer.cs

@@ -22,14 +22,14 @@ namespace CardCollector.Resources {
     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class InlineQueryCommands {
+    internal class Command {
         
         private static global::System.Resources.ResourceManager resourceMan;
         
         private static global::System.Globalization.CultureInfo resourceCulture;
         
         [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal InlineQueryCommands() {
+        internal Command() {
         }
         
         /// <summary>
@@ -39,7 +39,7 @@ namespace CardCollector.Resources {
         internal static global::System.Resources.ResourceManager ResourceManager {
             get {
                 if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CardCollector.Resources.InlineQueryCommands", typeof(InlineQueryCommands).Assembly);
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CardCollector.Resources.Command", typeof(Command).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
@@ -60,6 +60,60 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to author.
+        /// </summary>
+        internal static string author {
+            get {
+                return ResourceManager.GetString("author", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to back.
+        /// </summary>
+        internal static string back {
+            get {
+                return ResourceManager.GetString("back", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to cancel.
+        /// </summary>
+        internal static string cancel {
+            get {
+                return ResourceManager.GetString("cancel", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to change_page.
+        /// </summary>
+        internal static string change_page {
+            get {
+                return ResourceManager.GetString("change_page", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to collect_income.
+        /// </summary>
+        internal static string collect_income {
+            get {
+                return ResourceManager.GetString("collect_income", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to emoji.
+        /// </summary>
+        internal static string emoji {
+            get {
+                return ResourceManager.GetString("emoji", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to select.
         /// </summary>
@@ -78,6 +132,33 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to set.
+        /// </summary>
+        internal static string set {
+            get {
+                return ResourceManager.GetString("set", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to sort.
+        /// </summary>
+        internal static string sort {
+            get {
+                return ResourceManager.GetString("sort", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to tier.
+        /// </summary>
+        internal static string tier {
+            get {
+                return ResourceManager.GetString("tier", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to unlim.
         /// </summary>

+ 30 - 3
CardCollector/Resources/InlineQueryCommands.resx → CardCollector/Resources/Command.resx

@@ -18,13 +18,40 @@
     <resheader name="writer">
         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     </resheader>
+    <data name="collect_income" xml:space="preserve">
+        <value>collect_income</value>
+    </data>
+    <data name="author" xml:space="preserve">
+        <value>author</value>
+    </data>
+    <data name="tier" xml:space="preserve">
+        <value>tier</value>
+    </data>
+    <data name="emoji" xml:space="preserve">
+        <value>emoji</value>
+    </data>
+    <data name="sort" xml:space="preserve">
+        <value>sort</value>
+    </data>
+    <data name="cancel" xml:space="preserve">
+        <value>cancel</value>
+    </data>
+    <data name="set" xml:space="preserve">
+        <value>set</value>
+    </data>
+    <data name="back" xml:space="preserve">
+        <value>back</value>
+    </data>
+    <data name="change_page" xml:space="preserve">
+        <value>change_page</value>
+    </data>
+    <data name="unlimited_stickers" xml:space="preserve">
+        <value>unlim</value>
+    </data>
     <data name="send_sticker" xml:space="preserve">
         <value>send</value>
     </data>
     <data name="select_sticker" xml:space="preserve">
         <value>select</value>
     </data>
-    <data name="unlimited_stickers" xml:space="preserve">
-        <value>unlim</value>
-    </data>
 </root>

+ 30 - 25
CardCollector/Resources/Keyboard.cs

@@ -10,28 +10,39 @@ namespace CardCollector.Resources
         /* Клавиатура, отображаемая вместе с сообщением профиля */
         public static readonly InlineKeyboardMarkup ProfileKeyboard = new(new[]
             {
-                InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.collect_income)
+                InlineKeyboardButton.WithCallbackData(Text.collect_income, Command.collect_income)
             }
         );
 
         /* Клавиатура, отображаемая с первым сообщением пользователя */
         public static readonly ReplyKeyboardMarkup Menu = new(new[]
         {
-            new KeyboardButton[] {MessageCommands.profile, MessageCommands.collection},
-            new KeyboardButton[] {MessageCommands.shop, MessageCommands.auction},
+            new KeyboardButton[] {Text.profile, Text.collection},
+            new KeyboardButton[] {Text.shop, Text.auction},
         }) {ResizeKeyboard = true};
 
         /* Клавиатура меню сортировки */
         public static readonly InlineKeyboardMarkup SortingOptions = new(new[]
         {
-            new[] {InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.author)},
-            new[] {InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.tier)},
-            new[] {InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.emoji)},
-            new[] {InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.sorting)},
-            new[] {InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.cancel)},
-            new[] {InlineKeyboardButton.WithSwitchInlineQueryCurrentChat(CallbackQueryCommands.show_stickers)},
+            new[] {InlineKeyboardButton.WithCallbackData(Text.author, Command.author)},
+            new[] {InlineKeyboardButton.WithCallbackData(Text.tier, Command.tier)},
+            new[] {InlineKeyboardButton.WithCallbackData(Text.emoji, Command.emoji)},
+            new[] {InlineKeyboardButton.WithCallbackData(Text.sort, Command.sort)},
+            new[] {InlineKeyboardButton.WithCallbackData(Text.cancel, Command.cancel)},
+            new[] {InlineKeyboardButton.WithSwitchInlineQueryCurrentChat(Text.show_stickers)},
         });
 
+        /* Клавиатура меню выбора тира */
+        public static readonly InlineKeyboardMarkup TierOptions = new (new[]
+        {
+            new[] {InlineKeyboardButton.WithCallbackData(Text.all, $"{Command.set}={Command.tier}=-1")},
+            new[] {InlineKeyboardButton.WithCallbackData("1", $"{Command.set}={Command.tier}=1")},
+            new[] {InlineKeyboardButton.WithCallbackData("2", $"{Command.set}={Command.tier}=2")},
+            new[] {InlineKeyboardButton.WithCallbackData("3", $"{Command.set}={Command.tier}=3")},
+            new[] {InlineKeyboardButton.WithCallbackData("4", $"{Command.set}={Command.tier}=4")},
+            new[] {InlineKeyboardButton.WithCallbackData("5", $"{Command.set}={Command.tier}=5")},
+            new[] {InlineKeyboardButton.WithCallbackData(Text.cancel, Command.back)},
+        });
 
         /* Возвращает клавиатуру со списоком авторов */
         public static InlineKeyboardMarkup GetAuthorsKeyboard(List<string> list, int page = 1)
@@ -45,8 +56,8 @@ namespace CardCollector.Resources
                 new[]
                 {
                     /* Добавляем в список кнопку "Все" */
-                    InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.All,
-                        $"{CallbackQueryCommands.author_callback}=")
+                    InlineKeyboardButton.WithCallbackData(Text.all, 
+                        $"{Command.set}={Command.author}=")
                 }
             };
             /* Копируем список */
@@ -59,7 +70,7 @@ namespace CardCollector.Resources
                 var keyRow = new List<InlineKeyboardButton>
                 {
                     InlineKeyboardButton.WithCallbackData(author,
-                            $"{CallbackQueryCommands.author_callback}={author}")
+                            $"{Command.set}={Command.author}={author}")
                 };
                 /* Если есть еще элементы, то добавляем в строку вторую кнопку */
                 if (copyList.Count > 0)
@@ -67,7 +78,7 @@ namespace CardCollector.Resources
                     author = copyList[0];
                     copyList.RemoveAt(0);
                     keyRow.Add(InlineKeyboardButton.WithCallbackData(author,
-                            $"{CallbackQueryCommands.author_callback}={author}"));
+                            $"{Command.set}={Command.author}={author}"));
                 }
                 /* Добавляем строку кнопок в клавиатуру */
                 keyboardList.Add(keyRow.ToArray());
@@ -80,28 +91,22 @@ namespace CardCollector.Resources
                     {
                         <10 => new[]
                         {
-                            InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.previous,
-                                $"{CallbackQueryCommands.change_page}={page - 1}")
+                            InlineKeyboardButton.WithCallbackData(Text.previous, $"{Command.change_page}={page - 1}")
                         },
                         >=10 when page == 1 => new[]
                         {
-                            InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.next,
-                                $"{CallbackQueryCommands.change_page}={page + 1}")
+                            InlineKeyboardButton.WithCallbackData(Text.next, $"{Command.change_page}={page + 1}")
                         },
                         _ => new[]
                         {
-                            InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.previous,
-                                $"{CallbackQueryCommands.change_page}={page - 1}"),
-                            InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.next,
-                                $"{CallbackQueryCommands.change_page}={page + 1}")
+                            InlineKeyboardButton.WithCallbackData(Text.previous, $"{Command.change_page}={page - 1}"),
+                            InlineKeyboardButton.WithCallbackData(Text.next, $"{Command.change_page}={page + 1}")
                         }
                     }
                 );
             /* Добавляем кнопку отмены */
-            keyboardList.Add(new[]
-            {
-                InlineKeyboardButton.WithCallbackData(CallbackQueryCommands.cancel,
-                    CallbackQueryCommands.back)
+            keyboardList.Add(new[] {
+                InlineKeyboardButton.WithCallbackData(Text.cancel, Command.back)
             });
             /* Вовзращаем клавиатуру */
             return new InlineKeyboardMarkup(keyboardList);

+ 0 - 117
CardCollector/Resources/MessageCommands.Designer.cs

@@ -1,117 +0,0 @@
-//------------------------------------------------------------------------------
-// <auto-generated>
-//     This code was generated by a tool.
-//     Runtime Version:4.0.30319.42000
-//
-//     Changes to this file may cause incorrect behavior and will be lost if
-//     the code is regenerated.
-// </auto-generated>
-//------------------------------------------------------------------------------
-
-namespace CardCollector.Resources {
-    using System;
-    
-    
-    /// <summary>
-    ///   A strongly-typed resource class, for looking up localized strings, etc.
-    /// </summary>
-    // This class was auto-generated by the StronglyTypedResourceBuilder
-    // class via a tool like ResGen or Visual Studio.
-    // To add or remove a member, edit your .ResX file then rerun ResGen
-    // with the /str option, or rebuild your VS project.
-    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
-    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class MessageCommands {
-        
-        private static global::System.Resources.ResourceManager resourceMan;
-        
-        private static global::System.Globalization.CultureInfo resourceCulture;
-        
-        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal MessageCommands() {
-        }
-        
-        /// <summary>
-        ///   Returns the cached ResourceManager instance used by this class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Resources.ResourceManager ResourceManager {
-            get {
-                if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CardCollector.Resources.MessageCommands", typeof(MessageCommands).Assembly);
-                    resourceMan = temp;
-                }
-                return resourceMan;
-            }
-        }
-        
-        /// <summary>
-        ///   Overrides the current thread's CurrentUICulture property for all
-        ///   resource lookups using this strongly typed resource class.
-        /// </summary>
-        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
-        internal static global::System.Globalization.CultureInfo Culture {
-            get {
-                return resourceCulture;
-            }
-            set {
-                resourceCulture = value;
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Аукцион.
-        /// </summary>
-        internal static string auction {
-            get {
-                return ResourceManager.GetString("auction", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Коллекция.
-        /// </summary>
-        internal static string collection {
-            get {
-                return ResourceManager.GetString("collection", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Профиль.
-        /// </summary>
-        internal static string profile {
-            get {
-                return ResourceManager.GetString("profile", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Магазин.
-        /// </summary>
-        internal static string shop {
-            get {
-                return ResourceManager.GetString("shop", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to Показать пример.
-        /// </summary>
-        internal static string show_sample {
-            get {
-                return ResourceManager.GetString("show_sample", resourceCulture);
-            }
-        }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to /start.
-        /// </summary>
-        internal static string start {
-            get {
-                return ResourceManager.GetString("start", resourceCulture);
-            }
-        }
-    }
-}

+ 0 - 39
CardCollector/Resources/MessageCommands.resx

@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<root>
-    <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-        <xsd:element name="root" msdata:IsDataSet="true">
-            
-        </xsd:element>
-    </xsd:schema>
-    <resheader name="resmimetype">
-        <value>text/microsoft-resx</value>
-    </resheader>
-    <resheader name="version">
-        <value>1.3</value>
-    </resheader>
-    <resheader name="reader">
-        <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-    </resheader>
-    <resheader name="writer">
-        <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-    </resheader>
-    <data name="profile" xml:space="preserve">
-        <value>Профиль</value>
-    </data>
-    <data name="collection" xml:space="preserve">
-        <value>Коллекция</value>
-    </data>
-    <data name="shop" xml:space="preserve">
-        <value>Магазин</value>
-    </data>
-    <data name="auction" xml:space="preserve">
-        <value>Аукцион</value>
-    </data>
-    <data name="start" xml:space="preserve">
-        <value>/start</value>
-    </data>
-    <data name="show_sample" xml:space="preserve">
-        <value>Показать пример</value>
-    </data>
-</root>

+ 9 - 0
CardCollector/Resources/Messages.Designer.cs

@@ -87,6 +87,15 @@ namespace CardCollector.Resources {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to Выберите тир из списка ниже:.
+        /// </summary>
+        internal static string choose_tier {
+            get {
+                return ResourceManager.GetString("choose_tier", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to Текущие примененные фильтры:.
         /// </summary>

+ 3 - 0
CardCollector/Resources/Messages.resx

@@ -48,4 +48,7 @@
     <data name="choose_author" xml:space="preserve">
         <value>Выберите автора из списка ниже:</value>
     </data>
+    <data name="choose_tier" xml:space="preserve">
+        <value>Выберите тир из списка ниже:</value>
+    </data>
 </root>

+ 46 - 46
CardCollector/Resources/CallbackQueryCommands.Designer.cs → CardCollector/Resources/Text.Designer.cs

@@ -22,14 +22,14 @@ namespace CardCollector.Resources {
     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
     [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
-    internal class CallbackQueryCommands {
+    internal class Text {
         
         private static global::System.Resources.ResourceManager resourceMan;
         
         private static global::System.Globalization.CultureInfo resourceCulture;
         
         [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        internal CallbackQueryCommands() {
+        internal Text() {
         }
         
         /// <summary>
@@ -39,7 +39,7 @@ namespace CardCollector.Resources {
         internal static global::System.Resources.ResourceManager ResourceManager {
             get {
                 if (object.ReferenceEquals(resourceMan, null)) {
-                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CardCollector.Resources.CallbackQueryCommands", typeof(CallbackQueryCommands).Assembly);
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CardCollector.Resources.Text", typeof(Text).Assembly);
                     resourceMan = temp;
                 }
                 return resourceMan;
@@ -63,9 +63,18 @@ namespace CardCollector.Resources {
         /// <summary>
         ///   Looks up a localized string similar to Все.
         /// </summary>
-        internal static string All {
+        internal static string all {
             get {
-                return ResourceManager.GetString("All", resourceCulture);
+                return ResourceManager.GetString("all", resourceCulture);
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized string similar to Аукцион.
+        /// </summary>
+        internal static string auction {
+            get {
+                return ResourceManager.GetString("auction", resourceCulture);
             }
         }
         
@@ -79,83 +88,83 @@ namespace CardCollector.Resources {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to author.
+        ///   Looks up a localized string similar to Отмена.
         /// </summary>
-        internal static string author_callback {
+        internal static string cancel {
             get {
-                return ResourceManager.GetString("author_callback", resourceCulture);
+                return ResourceManager.GetString("cancel", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to back.
+        ///   Looks up a localized string similar to Собрать прибыль.
         /// </summary>
-        internal static string back {
+        internal static string collect_income {
             get {
-                return ResourceManager.GetString("back", resourceCulture);
+                return ResourceManager.GetString("collect_income", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Отмена.
+        ///   Looks up a localized string similar to Коллекция.
         /// </summary>
-        internal static string cancel {
+        internal static string collection {
             get {
-                return ResourceManager.GetString("cancel", resourceCulture);
+                return ResourceManager.GetString("collection", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to change_page.
+        ///   Looks up a localized string similar to Эмоция.
         /// </summary>
-        internal static string change_page {
+        internal static string emoji {
             get {
-                return ResourceManager.GetString("change_page", resourceCulture);
+                return ResourceManager.GetString("emoji", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Собрать прибыль.
+        ///   Looks up a localized string similar to .
         /// </summary>
-        internal static string collect_income {
+        internal static string next {
             get {
-                return ResourceManager.GetString("collect_income", resourceCulture);
+                return ResourceManager.GetString("next", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Эмоция.
+        ///   Looks up a localized string similar to .
         /// </summary>
-        internal static string emoji {
+        internal static string previous {
             get {
-                return ResourceManager.GetString("emoji", resourceCulture);
+                return ResourceManager.GetString("previous", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to emoji.
+        ///   Looks up a localized string similar to Профиль.
         /// </summary>
-        internal static string emoji_callback {
+        internal static string profile {
             get {
-                return ResourceManager.GetString("emoji_callback", resourceCulture);
+                return ResourceManager.GetString("profile", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to .
+        ///   Looks up a localized string similar to Магазин.
         /// </summary>
-        internal static string next {
+        internal static string shop {
             get {
-                return ResourceManager.GetString("next", resourceCulture);
+                return ResourceManager.GetString("shop", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to .
+        ///   Looks up a localized string similar to Пример.
         /// </summary>
-        internal static string previous {
+        internal static string show_sample {
             get {
-                return ResourceManager.GetString("previous", resourceCulture);
+                return ResourceManager.GetString("show_sample", resourceCulture);
             }
         }
         
@@ -171,18 +180,18 @@ namespace CardCollector.Resources {
         /// <summary>
         ///   Looks up a localized string similar to Сортировка.
         /// </summary>
-        internal static string sorting {
+        internal static string sort {
             get {
-                return ResourceManager.GetString("sorting", resourceCulture);
+                return ResourceManager.GetString("sort", resourceCulture);
             }
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to sorting.
+        ///   Looks up a localized string similar to /start.
         /// </summary>
-        internal static string sorting_callback {
+        internal static string start {
             get {
-                return ResourceManager.GetString("sorting_callback", resourceCulture);
+                return ResourceManager.GetString("start", resourceCulture);
             }
         }
         
@@ -194,14 +203,5 @@ namespace CardCollector.Resources {
                 return ResourceManager.GetString("tier", resourceCulture);
             }
         }
-        
-        /// <summary>
-        ///   Looks up a localized string similar to tier.
-        /// </summary>
-        internal static string tier_callback {
-            get {
-                return ResourceManager.GetString("tier_callback", resourceCulture);
-            }
-        }
     }
 }

+ 21 - 21
CardCollector/Resources/CallbackQueryCommands.resx → CardCollector/Resources/Text.resx

@@ -18,9 +18,6 @@
     <resheader name="writer">
         <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
     </resheader>
-    <data name="collect_income" xml:space="preserve">
-        <value>Собрать прибыль</value>
-    </data>
     <data name="author" xml:space="preserve">
         <value>Автор</value>
     </data>
@@ -30,7 +27,7 @@
     <data name="emoji" xml:space="preserve">
         <value>Эмоция</value>
     </data>
-    <data name="sorting" xml:space="preserve">
+    <data name="sort" xml:space="preserve">
         <value>Сортировка</value>
     </data>
     <data name="cancel" xml:space="preserve">
@@ -39,23 +36,11 @@
     <data name="show_stickers" xml:space="preserve">
         <value>Показать стикеры</value>
     </data>
-    <data name="All" xml:space="preserve">
+    <data name="all" xml:space="preserve">
         <value>Все</value>
     </data>
-    <data name="back" xml:space="preserve">
-        <value>back</value>
-    </data>
-    <data name="author_callback" xml:space="preserve">
-        <value>author</value>
-    </data>
-    <data name="emoji_callback" xml:space="preserve">
-        <value>emoji</value>
-    </data>
-    <data name="sorting_callback" xml:space="preserve">
-        <value>sorting</value>
-    </data>
-    <data name="tier_callback" xml:space="preserve">
-        <value>tier</value>
+    <data name="collect_income" xml:space="preserve">
+        <value>Собрать прибыль</value>
     </data>
     <data name="previous" xml:space="preserve">
         <value>←</value>
@@ -63,7 +48,22 @@
     <data name="next" xml:space="preserve">
         <value>→</value>
     </data>
-    <data name="change_page" xml:space="preserve">
-        <value>change_page</value>
+    <data name="profile" xml:space="preserve">
+        <value>Профиль</value>
+    </data>
+    <data name="collection" xml:space="preserve">
+        <value>Коллекция</value>
+    </data>
+    <data name="shop" xml:space="preserve">
+        <value>Магазин</value>
+    </data>
+    <data name="auction" xml:space="preserve">
+        <value>Аукцион</value>
+    </data>
+    <data name="show_sample" xml:space="preserve">
+        <value>Пример</value>
+    </data>
+    <data name="start" xml:space="preserve">
+        <value>/start</value>
     </data>
 </root>