mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-14 18:12:43 -04:00
Added missing cancellation token support to Keno and also experimenting with the table grid for it
This commit is contained in:
@@ -39,10 +39,12 @@ public class KenoCommand : ICommand
|
|||||||
private const string BlankSpaceDisplay = "⬛";
|
private const string BlankSpaceDisplay = "⬛";
|
||||||
|
|
||||||
private SentMessageTrackerModel? _kenoTable;
|
private SentMessageTrackerModel? _kenoTable;
|
||||||
|
private CancellationToken _ct;
|
||||||
|
|
||||||
public async Task RunCommand(ChatBot botInstance, BotCommandMessageModel message, UserDbModel user, GroupCollection arguments,
|
public async Task RunCommand(ChatBot botInstance, BotCommandMessageModel message, UserDbModel user, GroupCollection arguments,
|
||||||
CancellationToken ctx)
|
CancellationToken ctx)
|
||||||
{
|
{
|
||||||
|
_ct = ctx;
|
||||||
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
var settings = await SettingsProvider.GetMultipleValuesAsync([
|
||||||
BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoKenoCleanupDelay,
|
BuiltIn.Keys.KasinoGameDisabledMessageCleanupDelay, BuiltIn.Keys.KasinoKenoCleanupDelay,
|
||||||
BuiltIn.Keys.KasinoKenoFrameDelay, BuiltIn.Keys.KasinoKenoEnabled
|
BuiltIn.Keys.KasinoKenoFrameDelay, BuiltIn.Keys.KasinoKenoEnabled
|
||||||
@@ -185,7 +187,7 @@ public class KenoCommand : ICommand
|
|||||||
{ "classic", payoutMultipliersClassic}
|
{ "classic", payoutMultipliersClassic}
|
||||||
};
|
};
|
||||||
|
|
||||||
_playerNumbers = GenerateKenoNumbers(numbers, gambler);
|
_playerNumbers = GenerateKenoNumbers(numbers, gambler);
|
||||||
_casinoNumbers = GenerateKenoNumbers(10, gambler, true);
|
_casinoNumbers = GenerateKenoNumbers(10, gambler, true);
|
||||||
var matches = _playerNumbers.Intersect(_casinoNumbers).ToList();
|
var matches = _playerNumbers.Intersect(_casinoNumbers).ToList();
|
||||||
var payoutMulti = payoutMultipliers[difficultyString][numbers - 1, matches.Count];
|
var payoutMulti = payoutMultipliers[difficultyString][numbers - 1, matches.Count];
|
||||||
@@ -249,17 +251,10 @@ public class KenoCommand : ICommand
|
|||||||
displayMessage += "[br]";
|
displayMessage += "[br]";
|
||||||
}
|
}
|
||||||
|
|
||||||
_kenoTable = await botInstance.SendChatMessageAsync(displayMessage, true);
|
_kenoTable = await botInstance.SendChatMessageAsync("[size=70]" + displayMessage.GridToTable(), true);
|
||||||
var i = 0;
|
var sent = await botInstance.WaitForChatMessageAsync(_kenoTable, patience: TimeSpan.FromSeconds(30), ct: _ct);
|
||||||
while (_kenoTable.ChatMessageUuid == null)
|
|
||||||
{
|
if (!sent || _kenoTable.ChatMessageUuid == null)
|
||||||
i++;
|
|
||||||
if (_kenoTable.Status is SentMessageTrackerStatus.NotSending or SentMessageTrackerStatus.Lost) return;
|
|
||||||
if (i > 60) return;
|
|
||||||
await Task.Delay(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_kenoTable.ChatMessageUuid == null)
|
|
||||||
{
|
{
|
||||||
throw new Exception($"_kenoTable chat message ID never got populated. Tracker status is: {_kenoTable?.Status}");
|
throw new Exception($"_kenoTable chat message ID never got populated. Tracker status is: {_kenoTable?.Status}");
|
||||||
}
|
}
|
||||||
@@ -293,8 +288,8 @@ public class KenoCommand : ICommand
|
|||||||
}
|
}
|
||||||
displayMessage += "[br]";
|
displayMessage += "[br]";
|
||||||
}
|
}
|
||||||
await botInstance.KfClient.EditMessageAsync(_kenoTable.ChatMessageUuid, displayMessage);
|
await botInstance.KfClient.EditMessageAsync(_kenoTable.ChatMessageUuid, "[size=70]" + displayMessage.GridToTable());
|
||||||
await Task.Delay(frameDelay);
|
await Task.Delay(frameDelay, _ct);
|
||||||
if (displayMessage.Length <= 79 && displayMessage.Contains(BlankSpaceDisplay) &&
|
if (displayMessage.Length <= 79 && displayMessage.Contains(BlankSpaceDisplay) &&
|
||||||
(displayMessage.Contains(CasinoNumberDisplay) || displayMessage.Contains(MatchRevealDisplay) ||
|
(displayMessage.Contains(CasinoNumberDisplay) || displayMessage.Contains(MatchRevealDisplay) ||
|
||||||
frame == 9)) continue; //every board should have blank spaces and casino numbers or matches. player numbers might be hidden by matches
|
frame == 9)) continue; //every board should have blank spaces and casino numbers or matches. player numbers might be hidden by matches
|
||||||
|
|||||||
Reference in New Issue
Block a user