mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-15 10:32:44 -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
|
||||||
@@ -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)
|
|
||||||
{
|
|
||||||
i++;
|
|
||||||
if (_kenoTable.Status is SentMessageTrackerStatus.NotSending or SentMessageTrackerStatus.Lost) return;
|
|
||||||
if (i > 60) return;
|
|
||||||
await Task.Delay(100);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_kenoTable.ChatMessageUuid == null)
|
if (!sent || _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