diff --git a/JetKarmaBot/Commands/StatusCommand.cs b/JetKarmaBot/Commands/StatusCommand.cs index 2d3276f..008aba1 100644 --- a/JetKarmaBot/Commands/StatusCommand.cs +++ b/JetKarmaBot/Commands/StatusCommand.cs @@ -10,55 +10,36 @@ namespace JetKarmaBot.Commands { class StatusCommand : IChatCommand { - public IReadOnlyCollection Names => new[] { "status" }; + public IReadOnlyCollection Names => ["status"]; public async Task Execute(RequestContext ctx) { var db = ctx.GetFeature(); var currentLocale = ctx.GetFeature(); var asker = ctx.EventArgs.Message.From; - var awardTypeName = ctx.Command.Parameters.FirstOrDefault(); bool isPrivate = ctx.EventArgs.Message.Chat.Type == Telegram.Bot.Types.Enums.ChatType.Private; string response; - if (string.IsNullOrWhiteSpace(awardTypeName)) - { - // var awards = db.Awards.Where(x => x.ToId == asker.Id) - // .GroupBy(x => x.AwardTypeId) - // .Select(x => new { AwardTypeId = x.Key, Amount = x.Sum(y => y.Amount) }); - if (!db.Awards.Any(x => x.ToId == asker.Id && (x.ChatId == ctx.EventArgs.Message.Chat.Id || isPrivate))) - response = currentLocale["jetkarmabot.status.havenothing"]; - else - { - var awardsQuery = from award in db.Awards - where award.ToId == asker.Id && (award.ChatId == ctx.EventArgs.Message.Chat.Id || isPrivate) - group award by award.AwardTypeId into g - join awardType in db.AwardTypes - on g.Key equals awardType.AwardTypeId - select new { AwardTypeId = g.Key, AwardTypeSymbol = awardType.Symbol, Amount = g.Sum(x => x.Amount) }; - var awardsByType = await awardsQuery.ToListAsync(); - response = currentLocale["jetkarmabot.status.listalltext"] + "\n" - + string.Join("\n", - awardsByType.Select(a => $" - {a.AwardTypeSymbol} {a.Amount}") - ); + var awards = db.Awards.Where(x => x.ToId == asker.Id); + if (!isPrivate) + awards = awards.Where(x => x.ChatId == ctx.EventArgs.Message.Chat.Id); - } - } + if (!awards.Any()) + response = currentLocale["jetkarmabot.status.havenothing"]; else { - var awardTypeIdQuery = from awt in db.AwardTypes - where awt.CommandName == awardTypeName - select awt.AwardTypeId; - var awardTypeId = await awardTypeIdQuery.FirstAsync(); - var awardType = await db.AwardTypes.FindAsync(awardTypeId); - - response = string.Format(currentLocale["jetkarmabot.status.listspecifictext"], - await db.Awards.Where( - x => x.AwardTypeId == awardTypeId - && x.ToId == asker.Id - && (x.ChatId == ctx.EventArgs.Message.Chat.Id || isPrivate)) - .SumAsync(x => x.Amount), awardType.Symbol); + var aq = db.AwardTypes.GroupJoin( + awards, + at => at.AwardTypeId, + aw => aw.AwardTypeId, + (at, aws) => new {at.Symbol, Amount = aws.Sum(aw => aw.Amount) }); + + var awardsByType = await aq.ToListAsync(); + + response = + currentLocale["jetkarmabot.status.listalltext"] + "\n" + + string.Join("\n", awardsByType.Select(a => $" - {a.Symbol} {a.Amount}")); } await ctx.SendMessage(response); @@ -70,14 +51,6 @@ namespace JetKarmaBot.Commands public string Description => "Shows the amount of awards that you have"; public string DescriptionID => "jetkarmabot.status.help"; - public IReadOnlyCollection Arguments => new ChatCommandArgument[] { - new ChatCommandArgument(){ - Name="awardtype", - Required=false, - Type=ChatCommandArgumentType.String, - Description="The awardtype to show. If empty shows everything.", - DescriptionID= "jetkarmabot.status.awardtypehelp" - } - }; + public IReadOnlyCollection Arguments => []; } } diff --git a/JetKarmaBot/lang/be-BY.json b/JetKarmaBot/lang/be-BY.json index 6e7d5d9..caddd75 100644 --- a/JetKarmaBot/lang/be-BY.json +++ b/JetKarmaBot/lang/be-BY.json @@ -5,63 +5,62 @@ "беларуская" ], "note": "This is a joke. And made with google translate.", - "strings": { - "jetkarmabot.ratelimit": "Павольны, чувак!", - "jetkarmabot.award.errawardnoreply": "Пра каго ты кажаш?", - "jetkarmabot.award.errbadusername": "Хто гэта?", - "jetkarmabot.award.errdup": "Калі ласка, спыніце батчіць ўзнагароды.", - "jetkarmabot.award.errawardself": "Хопіць з сабой гуляцца.", - "jetkarmabot.award.errawardbot": "Я бот, і мяне вашы нікчэмныя пузамеркі не вабяць.", - "jetkarmabot.award.errrevokebot": "ಠ_ಠ", - "jetkarmabot.award.awardmessage": "Ўручыў \"{0}\" {1}!", - "jetkarmabot.award.revokemessage": "Адабраў \"{0}\" у {1}!", - "jetkarmabot.award.statustext": "У {0} цяпер {1}{2}.", - "jetkarmabot.award.help": "Уручае ачко карыстачу (або адымае)", - "jetkarmabot.award.awardtypehelp": "Тып ачкі", - "jetkarmabot.award.tohelp": "Карыстальнік, якога ўзнагародзіць", - "jetkarmabot.status.listalltext": "У вас :", - "jetkarmabot.status.listspecifictext": "У вас зараз {0}{1}.", - "jetkarmabot.status.havenothing": "У вас пакуль нічога няма.", - "jetkarmabot.status.help": "Паказвае справаздачу па ўзнагародах.", - "jetkarmabot.status.awardtypehelp": "Тып ўзнагароды, па якой падасца справаздачу. Калі пуста, то падасца зводны справаздачу.", - "jetkarmabot.changelocale.justchanged": "Так дакладна.", - "jetkarmabot.changelocale.getlocale": "Я зараз кажу па-беларускай.", - "jetkarmabot.changelocale.listalltext": "Я ведаю:", - "jetkarmabot.changelocale.errorall": "Мне б хацелася гаварыць на ўсіх мовах у той жа самы час, але з-за абмежаванняў сусвету, мне гэта не дазваляецца.", - "jetkarmabot.changelocale.beforenote": "Увага: ", - "jetkarmabot.changelocale.toomany": "Не ведаю, на якім дыялекце хочаш, каб я казаў.\nЯ ведаю гэтыя:", - "jetkarmabot.changelocale.help": "Змяняе мову, на якім бот кажа ў гэтым чаце", - "jetkarmabot.changelocale.localehelp": "Новая лакаль, альбо каманда list - спіс перакладаў. Калі пуста - паказваецца бягучая лакаль.", - "jetkarmabot.help.help": "Паказвае інструкцыю да каманды, ці спіс каманд.", - "jetkarmabot.help.commandhelp": "Каманда, да якой трэба паказаць інструкцыю. Калі пуста, то паказваецца спіс каманд.", - "jetkarmabot.currencies.help": "Паказвае ўсе тыпы узнагарод", - "jetkarmabot.currencies.listtext": "Тыпы узнагарод:", - "jetkarmabot.leaderboard.help": "Табліца лідэраў па колькасці ўзнагарод", - "jetkarmabot.leaderboard.awardtypehelp": "Тып ўзнагароды, па якой падасца справаздачу.", - "jetkarmabot.leaderboard.specifictext": "Перадавікі ў намінацыі \"{0}\":", - "jetkarmabot.awardtypes.nominative.star": "зорачка", - "jetkarmabot.awardtypes.nominative.pie": "з паліцы піражок", - "jetkarmabot.awardtypes.nominative.dream": "мара", - "jetkarmabot.awardtypes.nominative.banana": "стыкер-бананчык", - "jetkarmabot.awardtypes.nominative.determination": "DETERMINATION", - "jetkarmabot.awardtypes.nominative.raisin": "разынка", - "jetkarmabot.awardtypes.nominative.touche": "touché", - "jetkarmabot.awardtypes.nominative.covid": "каронавірус", - "jetkarmabot.awardtypes.nominative.pony": "поніс", - "jetkarmabot.awardtypes.nominative.bellissimo": "беліссімо", - "jetkarmabot.awardtypes.nominative.based": "сярдзіта", - "jetkarmabot.awardtypes.nominative.redpill": "пілюля", - "jetkarmabot.awardtypes.accusative.star": "зорачку", - "jetkarmabot.awardtypes.accusative.pie": "з паліцы піражкі", - "jetkarmabot.awardtypes.accusative.dream": "мары", - "jetkarmabot.awardtypes.accusative.banana": "стыкера-бананчыка", - "jetkarmabot.awardtypes.accusative.determination": "DETERMINATION", - "jetkarmabot.awardtypes.accusative.raisin": "разыначкі", - "jetkarmabot.awardtypes.accusative.touche": "touché", - "jetkarmabot.awardtypes.accusative.covid": "каронавірус", - "jetkarmabot.awardtypes.accusative.pony": "поніса", - "jetkarmabot.awardtypes.accusative.bellissimo": "беліссімо", - "jetkarmabot.awardtypes.accusative.based": "сярдзіта", - "jetkarmabot.awardtypes.accusative.redpill": "пілюлю" - } + "strings": { + "jetkarmabot.ratelimit": "Павольны, чувак!", + "jetkarmabot.award.errawardnoreply": "Пра каго ты кажаш?", + "jetkarmabot.award.errbadusername": "Хто гэта?", + "jetkarmabot.award.errdup": "Калі ласка, спыніце батчіць ўзнагароды.", + "jetkarmabot.award.errawardself": "Хопіць з сабой гуляцца.", + "jetkarmabot.award.errawardbot": "Я бот, і мяне вашы нікчэмныя пузамеркі не вабяць.", + "jetkarmabot.award.errrevokebot": "ಠ_ಠ", + "jetkarmabot.award.awardmessage": "Ўручыў \"{0}\" {1}!", + "jetkarmabot.award.revokemessage": "Адабраў \"{0}\" у {1}!", + "jetkarmabot.award.statustext": "У {0} цяпер {1}{2}.", + "jetkarmabot.award.help": "Уручае ачко карыстачу (або адымае)", + "jetkarmabot.award.awardtypehelp": "Тып ачкі", + "jetkarmabot.award.tohelp": "Карыстальнік, якога ўзнагародзіць", + "jetkarmabot.status.listalltext": "У вас :", + "jetkarmabot.status.listspecifictext": "У вас зараз {0}{1}.", + "jetkarmabot.status.havenothing": "У вас пакуль нічога няма.", + "jetkarmabot.status.help": "Паказвае справаздачу па ўзнагародах.", + "jetkarmabot.changelocale.justchanged": "Так дакладна.", + "jetkarmabot.changelocale.getlocale": "Я зараз кажу па-беларускай.", + "jetkarmabot.changelocale.listalltext": "Я ведаю:", + "jetkarmabot.changelocale.errorall": "Мне б хацелася гаварыць на ўсіх мовах у той жа самы час, але з-за абмежаванняў сусвету, мне гэта не дазваляецца.", + "jetkarmabot.changelocale.beforenote": "Увага: ", + "jetkarmabot.changelocale.toomany": "Не ведаю, на якім дыялекце хочаш, каб я казаў.\nЯ ведаю гэтыя:", + "jetkarmabot.changelocale.help": "Змяняе мову, на якім бот кажа ў гэтым чаце", + "jetkarmabot.changelocale.localehelp": "Новая лакаль, альбо каманда list - спіс перакладаў. Калі пуста - паказваецца бягучая лакаль.", + "jetkarmabot.help.help": "Паказвае інструкцыю да каманды, ці спіс каманд.", + "jetkarmabot.help.commandhelp": "Каманда, да якой трэба паказаць інструкцыю. Калі пуста, то паказваецца спіс каманд.", + "jetkarmabot.currencies.help": "Паказвае ўсе тыпы узнагарод", + "jetkarmabot.currencies.listtext": "Тыпы узнагарод:", + "jetkarmabot.leaderboard.help": "Табліца лідэраў па колькасці ўзнагарод", + "jetkarmabot.leaderboard.awardtypehelp": "Тып ўзнагароды, па якой падасца справаздачу.", + "jetkarmabot.leaderboard.specifictext": "Перадавікі ў намінацыі \"{0}\":", + "jetkarmabot.awardtypes.nominative.star": "зорачка", + "jetkarmabot.awardtypes.nominative.pie": "з паліцы піражок", + "jetkarmabot.awardtypes.nominative.dream": "мара", + "jetkarmabot.awardtypes.nominative.banana": "стыкер-бананчык", + "jetkarmabot.awardtypes.nominative.determination": "DETERMINATION", + "jetkarmabot.awardtypes.nominative.raisin": "разынка", + "jetkarmabot.awardtypes.nominative.touche": "touché", + "jetkarmabot.awardtypes.nominative.covid": "каронавірус", + "jetkarmabot.awardtypes.nominative.pony": "поніс", + "jetkarmabot.awardtypes.nominative.bellissimo": "беліссімо", + "jetkarmabot.awardtypes.nominative.based": "сярдзіта", + "jetkarmabot.awardtypes.nominative.redpill": "пілюля", + "jetkarmabot.awardtypes.accusative.star": "зорачку", + "jetkarmabot.awardtypes.accusative.pie": "з паліцы піражкі", + "jetkarmabot.awardtypes.accusative.dream": "мары", + "jetkarmabot.awardtypes.accusative.banana": "стыкера-бананчыка", + "jetkarmabot.awardtypes.accusative.determination": "DETERMINATION", + "jetkarmabot.awardtypes.accusative.raisin": "разыначкі", + "jetkarmabot.awardtypes.accusative.touche": "touché", + "jetkarmabot.awardtypes.accusative.covid": "каронавірус", + "jetkarmabot.awardtypes.accusative.pony": "поніса", + "jetkarmabot.awardtypes.accusative.bellissimo": "беліссімо", + "jetkarmabot.awardtypes.accusative.based": "сярдзіта", + "jetkarmabot.awardtypes.accusative.redpill": "пілюлю" + } } \ No newline at end of file diff --git a/JetKarmaBot/lang/en-US.json b/JetKarmaBot/lang/en-US.json index beca166..a6e5493 100644 --- a/JetKarmaBot/lang/en-US.json +++ b/JetKarmaBot/lang/en-US.json @@ -22,7 +22,6 @@ "jetkarmabot.status.listspecifictext": "You are at {0}{1} now.", "jetkarmabot.status.havenothing": "You don't have anything yet.", "jetkarmabot.status.help": "Shows the amount of awards that you have", - "jetkarmabot.status.awardtypehelp": "The awardtype to show. If empty shows everything.", "jetkarmabot.changelocale.justchanged": "Roger that.", "jetkarmabot.changelocale.getlocale": "I'm currently speaking English.", "jetkarmabot.changelocale.listalltext": "I know:", diff --git a/JetKarmaBot/lang/ru-RU.json b/JetKarmaBot/lang/ru-RU.json index d94c89b..8565d3b 100644 --- a/JetKarmaBot/lang/ru-RU.json +++ b/JetKarmaBot/lang/ru-RU.json @@ -22,7 +22,6 @@ "jetkarmabot.status.listspecifictext": "У вас сейчас {0}{1}.", "jetkarmabot.status.havenothing": "У вас пока ничего нет.", "jetkarmabot.status.help": "Показывает отчет по наградам.", - "jetkarmabot.status.awardtypehelp": "Тип награды, по которой покажется отчет. Если пусто, то покажется сводный отчет.", "jetkarmabot.changelocale.justchanged": "Так точно.", "jetkarmabot.changelocale.getlocale": "Я сейчас говорю по-русски.", "jetkarmabot.changelocale.listalltext": "Я знаю:",