fix board size, some fixes to auto cashout from cursor (#75)

* cursor fixes

cursor fixes

* Improve cashout condition validation

Refactor cashout condition to check for success and non-empty value.

* cursor

cursor

* Update BotServices.cs

* Update board size limit from 10 to 9

Update board size limit from 10 to 9
81 characters instead of 100
12 bytes per character per powershell, 
down from 1200 bytes to 972

* Implement message deletion for active games

Added logic to delete messages associated with active games.
This commit is contained in:
alogindtractor
2026-02-09 07:00:45 -08:00
committed by GitHub
parent b6df015277
commit 21c8803eb9
3 changed files with 10 additions and 5 deletions

View File

@@ -80,7 +80,8 @@ public class MinesCommand : ICommand
return; return;
} }
bool cashout = false; bool cashout = false;
if (arguments.TryGetValue("cashout", out var cashOut)||message.Message.Contains("cashout")) cashout = true; if (arguments.TryGetValue("cashout", out var cashOut) && cashOut.Success && !string.IsNullOrWhiteSpace(cashOut.Value))
cashout = true;
if (!Regex.IsMatch(message.Message, @"\d") && cashout) //if the message has no ints its a cashout attempt if (!Regex.IsMatch(message.Message, @"\d") && cashout) //if the message has no ints its a cashout attempt
{ {
@@ -173,9 +174,9 @@ public class MinesCommand : ICommand
return; return;
} }
int boardSize = Convert.ToInt32(size.Value); int boardSize = Convert.ToInt32(size.Value);
if (boardSize < 2 || boardSize > 10) if (boardSize < 2 || boardSize > 9)
{ {
await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, board size must be between 2 and 10.",true, autoDeleteAfter: cleanupDelay); await botInstance.SendChatMessageAsync($"{user.FormatUsername()}, board size must be between 2 and 9.",true, autoDeleteAfter: cleanupDelay);
return; return;
} }
int minesCount = Convert.ToInt32(mines.Value); int minesCount = Convert.ToInt32(mines.Value);

View File

@@ -1,4 +1,4 @@
using System.Text.Json; using System.Text.Json;
using Humanizer; using Humanizer;
using KfChatDotNetBot.Extensions; using KfChatDotNetBot.Extensions;
using KfChatDotNetBot.Models; using KfChatDotNetBot.Models;

View File

@@ -101,9 +101,10 @@ public class KasinoMines
for (int r = 0; r < Size; r++) for (int r = 0; r < Size; r++)
{ {
await Task.Delay(100); await Task.Delay(100);
revealedSpace = false;
for (int c = 0; c < Size; c++) for (int c = 0; c < Size; c++)
{ {
revealedSpace = false;
foreach (var bet in BetsPlaced) foreach (var bet in BetsPlaced)
{ {
if (bet.r == r && bet.c == c) revealedSpace = true; if (bet.r == r && bet.c == c) revealedSpace = true;
@@ -150,6 +151,7 @@ public class KasinoMines
await Task.Delay(TimeSpan.FromSeconds(10)); await Task.Delay(TimeSpan.FromSeconds(10));
await _kfChatBot.KfClient.DeleteMessageAsync(msg.ChatMessageId!.Value); await _kfChatBot.KfClient.DeleteMessageAsync(msg.ChatMessageId!.Value);
LastMessageId = 0;
(int vertical, int horizontal) DistanceFromMine((int r, int c) coord) (int vertical, int horizontal) DistanceFromMine((int r, int c) coord)
{ {
@@ -291,6 +293,8 @@ public class KasinoMines
public async Task RemoveGame(int gamblerId) public async Task RemoveGame(int gamblerId)
{ {
await GetSavedGames(gamblerId); await GetSavedGames(gamblerId);
//attempt to delete the message if its there
if (ActiveGames[gamblerId].LastMessageId != 0) _kfChatBot.KfClient.DeleteMessage(ActiveGames[gamblerId].LastMessageId);
ActiveGames?.Remove(gamblerId); ActiveGames?.Remove(gamblerId);
await SaveActiveGames(gamblerId); await SaveActiveGames(gamblerId);
} }