From 67b0a26163816cd28da07345b733189c782a7603 Mon Sep 17 00:00:00 2001 From: cohlexyz <142505474+cohlexyz@users.noreply.github.com> Date: Sun, 8 Mar 2026 07:12:46 +0100 Subject: [PATCH] Add @ syntax to pocketwatch (#97) --- .../Commands/Kasino/KasinoUserCommands.cs | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/KfChatDotNetBot/Commands/Kasino/KasinoUserCommands.cs b/KfChatDotNetBot/Commands/Kasino/KasinoUserCommands.cs index 5e039ec..6b42a7c 100644 --- a/KfChatDotNetBot/Commands/Kasino/KasinoUserCommands.cs +++ b/KfChatDotNetBot/Commands/Kasino/KasinoUserCommands.cs @@ -281,6 +281,7 @@ public class PocketWatchCommand : ICommand { public List Patterns => [ new Regex(@"^pocketwatch (?\d+)", RegexOptions.IgnoreCase), + new Regex(@"^pocketwatch @(?.+)$", RegexOptions.IgnoreCase), ]; public string? HelpText => "Check a user's balance"; public UserRight RequiredRight => UserRight.Loser; @@ -290,7 +291,23 @@ public class PocketWatchCommand : ICommand CancellationToken ctx) { await using var db = new ApplicationDbContext(); - var targetUser = await db.Users.FirstOrDefaultAsync(u => u.KfId == int.Parse(arguments["user_id"].Value), ctx); + UserDbModel? targetUser; + if (arguments["username"].Success) + { + var chatUser = botInstance.FindUserByName(arguments["username"].Value); + if (chatUser == null) + { + await botInstance.SendChatMessageAsync( + $"{user.FormatUsername()}, couldn't find that user in chat. They must be present in chat to look up by username.", + true); + return; + } + targetUser = await db.Users.FirstOrDefaultAsync(u => u.KfId == chatUser.Id, ctx); + } + else + { + targetUser = await db.Users.FirstOrDefaultAsync(u => u.KfId == int.Parse(arguments["user_id"].Value), ctx); + } if (targetUser == null) { await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, the user ID you gave doesn't exist.", true); @@ -303,7 +320,7 @@ public class PocketWatchCommand : ICommand await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, this user is excluded from the kasino", true); return; } - + await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, {targetUser.KfUsername} has {await targetGambler.Balance.FormatKasinoCurrencyAsync()}", true); } }