c# - 关于我的电报机器人的动态键盘的问题。如何获取回调数据?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
即用户点击的那个?
解决方案
推荐阅读
- elasticsearch - Fluentd ElasticSearch 输出 - [401] 未经授权
- javascript - 类型“元素”不可分配给类型“字符串”.ts(2322)
- python - 定义超过 1 个测试示例 - FastAPI
- solr - 文档缺少必填的 uniqueKey 字段:id
- autodesk-forge - Forge Design Automation API (AutoCAD) 不断给我 ErrorStatus=53,但仅限于某些输入 DWG 文件
- spring-boot - 在 Quarkus 中使用 Spring Boot 创建的依赖关系
- java - Eclipse - 不更改 chormedriver 版本。即使我更换它也使用旧版本
- python - 如何在python中自动创建文件夹?
- java - Android从图库中获取图像并获取绝对路径
- android - 设置重复通知android kotlin