Telegraf会话用于唯一用户的问题?

3

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

我考虑到了以下解决方案:

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个回答

8
可能有点晚了,但是你可以使用Telegraf内置的会话管理来处理会话。下面是一个示例:

Telegraf内置的会话管理

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)。在那里,你可以存储常规变量数据。现在,普通的会话在机器人关闭之前都是活动的。如果你想要持久性会话,只需按照文档中所述导入第三方会话管理器即可。
因此,总结一下:
const session = require('telegraf/session') // import session addon
ctx.session.walletData = 'some data' // store data in session
console.log(ctx.session.walletData) // show data

哪个版本? - Toir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接