@andrey71
учу C#

Как разместить динамические кнопки в telegram в колонку?

Добрый день!
Подскажите пожалуйста, как разместить динамические кнопки в telegram в колонку?
Суть в следующем: боту отправляется запрос, он отвечает на него не сообщением, а кнопками. Кнопок может быть разное количество, не фиксированное.
Я нашел подобную задачу, но там кнопки выводятся в строку.
Вот так получается:
5d2999e6b5521942005099.png
Переписать код под нужный результат - не получилось.

В документации к api я примера не нашел.
Если вы генерировали кнопки InlineKeyboardButton динамически, подскажите как Вы это делали.
Спасибо!
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 2
@no5carry
Если нужно по одной кнопке в строке : {keyboard: [["A"], ["B"], ["C"]]}
Если много кнопок в строке: {keyboard: [["A", "B", "C"],["D","E"]]}
Хз как это будет на Шарпе, думаю как-то так

private static InlineKeyboardButton[][] GetInlineKeyboard(string [] stringArray)
{
var keyboardButtons = new InlineKeyboardButton[stringArray.Length];
for (var i = 0; i < stringArray.Length; i++)
{
btn = new InlineKeyboardButton
{
Text = stringArray[i],
CallbackData = "Some Callback Data",
};
keyboardButtons[i] = [btn];
}
return keyboardButtons;
}

var buttonItem = new[] { "one", "two", "three", "Four" };
var keyboardMarkup = new InlineKeyboardMarkup(GetInlineKeyboard(buttonItem));
Ответ написан
@andrey71 Автор вопроса
учу C#
Не совсем это ответ конечно, но из положения вышел так. (после долгих попыток)

В цикле, который читает значения из базы я разместил такой код:
var inlineKeyboard = new InlineKeyboardMarkup(new[] { new[] { InlineKeyboardButton.WithCallbackData(rdrValue, rdrValue) } });
await Bot.SendTextMessageAsync(message.Message.Chat.Id, "-->", replyMarkup: inlineKeyboard);


Тем самым получил в принципе желаемый результат.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
PR-solution Саранск
от 80 000 до 150 000 руб.
ГК АРТИ Москва
от 150 000 руб.
Кнопка Екатеринбург
До 150 000 руб.