【问题标题】:Telegraf session for unique user?唯一用户的 Telegraf 会话?
【发布时间】:2019-02-15 01:02:15
【问题描述】:

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

我在想这样的事情:

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 时没有任何反应,知道我做错了什么吗?

【问题讨论】:

    标签: javascript telegram-bot telegraf


    【解决方案1】:

    可能有点晚,但对于会话,您可以使用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、消息等)并从中调用会话( ctx.session)。在那里你存储你的常规变量数据。现在正常会话处于活动状态,直到机器人关闭。当您想要持久会话时,只需按照文档中的说明导入第 3 方会话管理器即可。

    总结一下:

    const session = require('telegraf/session') // import session addon
    ctx.session.walletData = 'some data' // store data in session
    console.log(ctx.session.walletData) // show data
    

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 2012-01-21
      • 2020-05-07
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 2017-04-20
      • 2010-10-23
      • 2010-09-13
      相关资源
      最近更新 更多