首页 > 解决方案 > 关于我的电报机器人的动态键盘的问题。如何获取回调数据?C#

问题描述

你好!

目前我正在编写一个用于财务会计的电报机器人。机器人的 1 版本是完全线性的,要添加新的按钮选项等,您必须爬入代码中。现在需要为机器人添加某种动态,以便根据 google 表格中的行生成按钮。一切都实现了,但我被难住了。

该机器人从谷歌表中获取一组字符串。该数组转到生成带有相应文本的按钮的方法,但我无法弄清楚CallbackData.

这是生成按钮的方法:

        private static InlineKeyboardButton[][] GetInlineKeyboard(string[] stringArray)
        {
            var keyboardInline = new InlineKeyboardButton[stringArray.Length][];

            for (var i = 0; i < stringArray.Length; i++)
            {
                
                keyboardInline[i] = new InlineKeyboardButton[]
                {
                    new InlineKeyboardButton
                    {
                        Text = stringArray[i],
                        CallbackData = "paymentType",
                    }
                };
            }
            return keyboardInline;
        }

我在这里调用方法:

case "paymentType":

            string directionRange = $"{settingsSheet}!B3:B";
            SpreadsheetsResource.ValuesResource.GetRequest directionRequest = service.Spreadsheets.Values.Get(SpreadsheetId, directionRange);
            ValueRange directionResponse = directionRequest.Execute();
            IList<IList<object>> directionValues = directionResponse.Values;
            string[] direction = new string[directionValues.Count];

            for (int i = 0; i < directionValues.Count; i++)
            {
                direction[i] = string.Join(", ", directionValues[i]);
            }

            var directionKeyboardMarkup = new InlineKeyboardMarkup(GetInlineKeyboard(direction));

            var directionMsg = _client.SendTextMessageAsync(update.CallbackQuery.Message.Chat.Id, "Выберите направление деятельности:", replyMarkup: directionKeyboardMarkup).Result;

            Console.WriteLine(update.CallbackQuery.InlineMessageId.ToString());

            _client.EditMessageReplyMarkupAsync(update.CallbackQuery.Message.Chat.Id, update.CallbackQuery.Message.MessageId, "Сохранено");

break;

问题是这样的:

如何获取按钮的值,CallbackData即用户点击的那个?

这是完整代码https://pastebin.com/r20BVXfm

标签: c#callbacktelegramtelegram-bot

解决方案


推荐阅读