唯一用户的Telegraf会话?

时间:2018-09-10 14:50:33

标签: javascript telegram-bot telegraf

我正在构建一个钱包机器人,我想知道如何才能为唯一用户发起会话。例如,在此会话中,我需要一个包含唯一用户标识符,公共密钥和私有密钥的对象,以便他们在启动bot后可以访问此对象。

我在想这样的事情:

var myWallet = (ctx) =>{
return{
  user: ctx.from.id,
  publicKey: wallet.public,
  secretKey: wallet.secret

}
}

bot.command('/myWallet', (ctx)=>{
   ctx.reply(myWallet.user);
   ctx.reply(myWallet.publicKey);
   ctx.reply(myWallet.secretKey);
})

但是当我在机器人上键入/ myWallet时,什么也没发生,这是我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

可能会有点晚,但是对于会话,您可以使用Telegrafs inbuild session management。这里是示例用法:

const session = require('telegraf/session')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.use(session())
bot.on('text', (ctx) => {
    ctx.session.counter = ctx.session.counter || 0
    ctx.session.counter++
    return ctx.reply(`Message counter:${ctx.session.counter}`)
})

基本上,它就像上面的示例一样工作。您启动一个会话(bot.use(session());),然后当用户写信时,您使用返回的消息(ctx)的上下文,其中存储了所有用户数据(用户名,ID,消息等),并调用会话({{1)}。在其中存储常规变量数据。现在,正常会话处于活动状态,直到机器人关闭为止。如果您要进行持久会话,只需按照文档中的说明导入第三方会话管理器即可。

总而言之:

ctx.session