0

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

这是我的代码:

//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."
                    );
}

非常感谢您的帮助:)

4

1 回答 1

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]));
    }
}
于 2021-08-30T12:43:08.657 回答