编程语言
首页 > 编程语言> > InlineKeyboardButton在InlineKeyboardMarkup中有限制吗?电报机器人C#

InlineKeyboardButton在InlineKeyboardMarkup中有限制吗?电报机器人C#

作者:互联网

我使用C#和telegram.bot并希望创建动态的InlineKeyboardMarkup

private static InlineKeyboardMarkup InlinePostsKeyboard;
private static List<string> PostsTitle;
...
PostsTitle = (from p in dba.BlogPosts select p.Subject).Take(4).ToList();

var inlineButtons = PostsTitle.Select(title => new[] { InlineKeyboardButton.WithCallbackData(title, title) }).ToArray();
InlinePostsKeyboard = new InlineKeyboardMarkup(inlineButtons);

...
Bot.SendTextMessageAsync(Chat.Id, e.Message.Text, replyMarkup: InlinePostsKeyboard);`

正如你在上面的代码中所看到的,大多数显示4个InlineKeyboardButton(每行),但没有显示任何内容!
足够改变…. Take(4).ToList();等于3或小于4(例如:3,2或1),您将看到按钮将正确显示

我想知道原因
我哪里弄错了?

解决方法:

如果内联键盘行/按钮数量有限,则肯定超过3.

记录和检查您发送给Telegram API的内容.我怀疑你的一篇博文p.Subject返回空字符串或太长字符串或Telegram不允许的内容.

还要确保您正在使用的库正确转义值(例如,替换特殊字符,如“)

顺便说一句,为什么你会将post subject作为callback_data传递?将帖子ID传递给像post?id = 123这样的东西不是更好吗?

标签:c,telegram,telegram-bot
来源: https://codeday.me/bug/20190622/1264094.html