WTelegramClient Messages_GetBotCallbackAnswer 总是抛出 BOT_RESPONSE_TIMEOUT 异常

问题描述 投票:0回答:1

我尝试在 C# .net8-0 上编写简单的机器人,我需要按消息中的一些内联按钮,但我总是看到错误 BOT_RESPONSE_TIMEOUT,这是我的代码

bool result = false;
if (GetInputPeer(chatId, out InputPeer? inputPeer) && inputPeer is not null)
{
    try
    {
        // get last messages in chat
        var history = await Client.Messages_GetHistory(inputPeer, limit: 50); // taking more messages for reliability
        Console.WriteLine($"Found {history.Messages.Length} messages in history.");

        // finding first message with needed inline button by callbackData
        foreach (var messageBase in history.Messages)
        {
            if (result) break;
            if (messageBase is Message message && message.reply_markup is ReplyInlineMarkup replyMarkup)
            {
                Console.WriteLine($"Found message with inline buttons: ID={message.ID}");

                // sorting out buttons lines 
                foreach (var row in replyMarkup.rows)
                {
                    if (result) break;
                    foreach (var button in row.buttons)
                    {
                        if (result) break;
                        if (button is KeyboardButtonCallback callbackButton &&
                            callbackButton.data.SequenceEqual(Encoding.UTF8.GetBytes(inlineButtonCallbackData)))
                        {
                            Console.WriteLine($"Found matching inline button with callback data: {inlineButtonCallbackData}");

                            // pressing inline button
                            var response = await Client.Messages_GetBotCallbackAnswer(inputPeer, message.ID, callbackButton.data);  // 
                            Console.WriteLine("Button pressed successfully.");
                            result = true; // break after success press
                            break;
                        }
                    }
                }
            }
        }

        if (!result) Console.WriteLine("No matching button with specified callback data found.");
    }
    catch (Exception ex)
    {
        Console.WriteLine($"Error pressing inline button: {ex.Message}");
    }
}
else
{
    Console.WriteLine($"InputPeer is null, chatId: {chatId} is skipped!");
}
return result;

方法 GetInputPeer 效果很好,问题仅与 Messages_GetBotCallbackAnswer 有关,但也许是因为我的代码,但我不这么认为。 感谢您的帮助和浪费的时间

我尝试在 Google、stackoverflow 中搜索并询问 ChatGPT,但没有任何效果

c# .net-core telegram-bot telegram-api wtelegramclient
1个回答
0
投票

当机器人在 10 秒内未确认按下按钮时,将返回(抛出)BOT_RESPONSE_TIMEOUT。

这要么意味着机器人离线,要么没有及时调用answerCallbackQuery。

无论如何,你这边没有任何问题。但你必须尝试..捕获此错误,因为它可能会发生。

© www.soinside.com 2019 - 2024. All rights reserved.