【问题标题】:Telegram InlineButton Callbackdata ProblemTelegram InlineButton 回调数据问题
【发布时间】:2021-10-06 19:36:35
【问题描述】:

我希望当用户单击内联按钮时,将消息发送给另一个用户!

这是我的代码:

//creating inline keyboard
InlineKeyboardButton accept= new InlineKeyboardButton();
InlineKeyboardButton reject = new InlineKeyboardButton();
InlineKeyboardButton[] buttons = new InlineKeyboardButton[]
{
   accept, reject
};
InlineKeyboardMarkup inline = new InlineKeyboardMarkup(buttons);

//giving inline buttons text and callback data
accpet.Text = "accept";
reject.Text = "reject";
accept.CallbackData = "accept";
reject.CallbackData = "reject";

//instantiation "CallbackQuery" class
CallbackQuery callbackQuery = new CallbackQuery();

//send a text message to someone else if "callbackQuery.Data" was same a "accept" button callback data.
//This Part Doesn't Works. When I click accept button it does nothing!
if (callbackQuery.Data == "accept")
{
   await botClient.SendTextMessageAsync(
                    chatid,
                    "Hello World."
                    );
}

非常感谢您的帮助:)

【问题讨论】:

    标签: c# telegram telegram-bot telegram-api


    【解决方案1】:

    你做错了,你应该等到收到CallbackQuery更新,不创建new CallbackQuery();再尝试处理。

    Telegram 有一个叫做 Updates 的东西,这意味着当新消息发送或编辑、按钮按下、用户加入等时发生的事件。

    所以,你应该创建一个OnCallbackQuery 事件,来处理任何按下的回调按钮:

    首先,创建处理程序方法:

    botClient.OnCallbackQuery += botClient_OnCallbackQuery;
    
    private void botClient_OnCallbackQuery(object sender, CallbackQueryEventArgs e)
    {
        // Send the message to any one you want
        ChatId chatId = /*Put any chat ID you want*/;
        await botClient.SendTextMessageAsync(chatId, "Hello World.");
    }
    

    其次,您应该像这样通过OnMessage 事件处理任何消息:

    botClient.OnMessage += botClient_OnMessage;
    
    private async void botClient_OnMessage(object sender, MessageEventArgs e)
    {
        var message = e.Message;
        if (message.text == '/start')
        {
            var accept = InlineKeyboardButton.WithCallbackData("Accept", "accept");
            var reject = InlineKeyboardButton.WithCallbackData("Reject", "reject");
            await botClient.SendTextMessageAsync(message.Chat.Id, "Accept Or Reject..", replyMarkup: new InlineKeyboardMarkup([accept, reject]));
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-10
      • 1970-01-01
      • 2020-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多