Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 唯一用户的Telegraf会话?_Javascript_Telegram Bot_Telegraf - Fatal编程技术网

Javascript 唯一用户的Telegraf会话?

Javascript 唯一用户的Telegraf会话?,javascript,telegram-bot,telegraf,Javascript,Telegram Bot,Telegraf,我正在构建一个钱包机器人,我想知道如何为唯一的用户启动会话。例如,在这个会话中,我需要一个包含唯一用户标识符、公钥和私钥的对象,以便他们可以在启动bot后访问它 我是这样想的: var myWallet = (ctx) =>{ return{ user: ctx.from.id, publicKey: wallet.public, secretKey: wallet.secret } } bot.command('/myWallet', (ctx)=>{ ctx

我正在构建一个钱包机器人,我想知道如何为唯一的用户启动会话。例如,在这个会话中,我需要一个包含唯一用户标识符、公钥和私钥的对象,以便他们可以在启动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时,什么都没发生,你知道我做错了什么吗

可能有点晚,但对于您可以使用的会话。这里有一个例子:

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
)。在这里,您可以存储正则变量数据。现在,正常SESSION处于活动状态,直到bot关闭。如果需要持久会话,只需导入文档中所述的第三方会话管理器

总而言之:

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