[entertainment] cleanup callbackquery handler, show guessed number

This commit is contained in:
Andriy
2023-01-18 16:29:18 +02:00
parent e3eb54d0e0
commit 66fe5cb4fb
+11 -13
View File
@@ -81,13 +81,8 @@ public class Guess : CommonHandler
[Update(InChat.Public, UpdateFlag.CallbackQuery)] [Update(InChat.Public, UpdateFlag.CallbackQuery)]
public async Task HandleGuessResponse() public async Task HandleGuessResponse()
{ {
// TODO: i know, there is a lot things to improve...
var guessDict = _guessCache.GetOr(Chat.Id, new ConcurrentDictionary<int, GuessData>());
var messageId = CallbackQuery.Message?.MessageId; var messageId = CallbackQuery.Message?.MessageId;
if (messageId == null || CallbackQuery.Data == null)
if (messageId == null
|| CallbackQuery.Data == null
|| !guessDict.TryGetValue((int) messageId, out var data))
{ {
return; return;
} }
@@ -96,14 +91,17 @@ public class Guess : CommonHandler
var fromId = fromUser.Id; var fromId = fromUser.Id;
var callbackData = CallbackQuery.Data.Split('|'); var callbackData = CallbackQuery.Data.Split('|');
if (fromId != data.UserId || callbackData.Length < 4) if (callbackData.Length < 4
|| callbackData[0] != "guess"
|| callbackData[1] != fromId.ToString()
|| callbackData[2] != "answer")
{ {
return; return;
} }
if (callbackData[0] != "guess" var guessDict = _guessCache.GetOr(Chat.Id, new ConcurrentDictionary<int, GuessData>());
|| callbackData[1] != fromId.ToString() if (!guessDict.TryGetValue((int) messageId, out var data)
|| callbackData[2] != "answer") || fromId != data.UserId)
{ {
return; return;
} }
@@ -129,14 +127,14 @@ public class Guess : CommonHandler
} }
else else
{ {
message = $"{fromUser.ToHtml()} не угадал!"; message = $"{fromUser.ToHtml()} не угадал!\nЗагаданное число: {data.Number}.";
} }
await Bot.EditMessageTextAsync(Chat, (int) messageId, message + postFix, parseMode: ParseMode.Html);
var cooldownOption = await _db.UserValues.FindOrCreateOption(Chat.Id, From.Id, "guessCooldown"); var cooldownOption = await _db.UserValues.FindOrCreateOption(Chat.Id, From.Id, "guessCooldown");
cooldownOption.SetValue(nextUse); cooldownOption.SetValue(nextUse);
_db.AddOrUpdate(cooldownOption); _db.AddOrUpdate(cooldownOption);
await Bot.EditMessageTextAsync(Chat, (int) messageId, message + postFix, parseMode: ParseMode.Html);
} }
} }