Poo*_*deh 5 c# keyboard telegram telegram-bot
我想创建自定义键盘 telegram.bot
例如:
我们有一个从数据库获取的字符串数组或其他的recurses如何将数据从数组推送到InlineKeyboardMarkupfor循环或函数
//array of Button
string[] ButtonItem= new string[] { "one", "two", "three", "Four" };
//function or solution to create keyboard like this
var keyboard = new InlineKeyboardMarkup(new[]
{
new[]
{
new InlineKeyboardButton("one"),
new InlineKeyboardButton("two"),
},
new[]
{
new InlineKeyboardButton("three"),
new InlineKeyboardButton("Four"),
}
});
Run Code Online (Sandbox Code Playgroud)
您可以使用单独的函数来获取InlineKeyboardButton数组
private static InlineKeyboardButton[][] GetInlineKeyboard(string [] stringArray)
{
var keyboardInline = new InlineKeyboardButton[1][];
var keyboardButtons = new InlineKeyboardButton[stringArray.Length];
for (var i = 0; i < stringArray.Length; i++)
{
keyboardButtons[i] = new InlineKeyboardButton
{
Text = stringArray[i],
CallbackData = "Some Callback Data",
};
}
keyboardInline[0] = keyboardButtons;
return keyboardInline;
}
Run Code Online (Sandbox Code Playgroud)
然后调用函数:
var buttonItem = new[] { "one", "two", "three", "Four" };
var keyboardMarkup = new InlineKeyboardMarkup(GetInlineKeyboard(buttonItem));
Run Code Online (Sandbox Code Playgroud)
在方法中创建InlineKeyboardMarkup:
public static InlineKeyboardMarkup InlineKeyboardMarkupMaker(Dictionary<int, string> items)
{
InlineKeyboardButton[][] ik = items.Select(item => new[]
{
new InlineKeyboardButton(item.Key, item.Value)
}).ToArray();
return new InlineKeyboardMarkup(ik);
}
Run Code Online (Sandbox Code Playgroud)
然后像这样使用它:
var items=new Dictionary<int,string>()
{
{0 , "True" }
{1 , "False" }
};
var inlineKeyboardMarkup = InlineKeyboardMarkupMaker(items);
Bot.SendTextMessageAsync(message.Chat.Id, messageText, replyMarkup: inlineKeyboardMarkup);
Run Code Online (Sandbox Code Playgroud)
选择True或False会使更新Update.CallbackQuery.Data等于所选项目键(0或1).