Telegram 电报机器人Api:多级测验
我想开发一个具有多个选项的电报机器人,例如,首先我显示3个按钮:按钮1、按钮2、按钮3 当用户再次单击每个按钮时,我会显示另外三个按钮:按钮1、按钮2、按钮3 在第2步之后,我想向用户显示他单击的第一个和第二个按钮,例如: 他首先单击按钮3,然后单击按钮1,因此,我想显示: 三十一 我怎么知道他先按了哪个按钮?是否仍然可以从bot获取聊天历史记录?或者我应该保存他在数据库上的点击?或者你的解决方案是什么Telegram 电报机器人Api:多级测验,telegram,telegram-bot,Telegram,Telegram Bot,我想开发一个具有多个选项的电报机器人,例如,首先我显示3个按钮:按钮1、按钮2、按钮3 当用户再次单击每个按钮时,我会显示另外三个按钮:按钮1、按钮2、按钮3 在第2步之后,我想向用户显示他单击的第一个和第二个按钮,例如: 他首先单击按钮3,然后单击按钮1,因此,我想显示: 三十一 我怎么知道他先按了哪个按钮?是否仍然可以从bot获取聊天历史记录?或者我应该保存他在数据库上的点击?或者你的解决方案是什么 *我正在使用c#和telegrame.bot,但请给我一个解决方案,语言并不重要。您应该将聊
*我正在使用c#和telegrame.bot,但请给我一个解决方案,语言并不重要。您应该将聊天id和单击的按钮保存在数据库中。机器人的聊天历史记录是短暂的,可能不可靠 首先,您可以使用内联键盘,为用户提供数据更新。这意味着您可以获得任何问题的Id,当用户单击时,您可以获得问题Id
如果您想运行与每个问题相关的任何方法,只需将每个问题方法名称存储在树中,当用户到达时,使用该方法即可。您可以使用内联按钮。使用JavaScript的解决方案:
var options = {
reply_markup: JSON.stringify({
inline_keyboard: [
[
{text: 'button 1', callback_data: '1'},
{text: 'button 2', callback_data: '2'},
{text: 'button 3', callback_data: '3'},
],
]
})
};
bot.sendMessage(chatId, 'Pick action:', options);
请参阅,您可以传递任何回调数据。所以我会将当前路径保存在这个callback\u data
属性中。格式不重要,可以是数组、字符串等。但它将代表堆栈
例如,patha2.a1.a3
表示您依次单击了按钮2、按钮1和按钮3。数据结构可以类似于此:
{
q: 'Which path you wanna go?',
a1: { ... },
a2: {
value: 'right',
q: 'You're going right. You see the wall, what will you do?',
a1: {
a1: { ... },
a2: { ... }
a3: {
value: 'go back',
q: 'You\'re going back and you see the tiger, what will you do?',
a1: { ... },
a2: { ... }
}
},
a2: { ... },
a3: { ... }
},
a3: { ... }
}
而且打包也很容易。只需从堆栈中弹出一个值,即可进入上一个菜单