javascript - 唯一用户的 Telegraf session ?

标签 javascript telegram-bot telegraf

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

我是这样想的:

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

最佳答案

可能会有点晚,但对于 session ,您可以使用 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}`)
})

基本上它就像上面的例子一样工作。您启动一个 session (bot.use(session());) 然后当用户写入时您使用返回消息的上下文 (ctx),其中所有用户数据存储(用户名、ID、消息等)并从中调用 session (ctx.session)。在那里你存储你的常规变量数据。现在正常 session 处于事件状态,直到机器人关闭。当您想要持久 session 时,只需按照文档中的说明导入第 3 方 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

关于javascript - 唯一用户的 Telegraf session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52260417/

相关文章:

node.js - firebase.intializeApp 不是函数

docker - 在容器中运行时重新加载 telegraf 配置的最佳方法

javascript - 如何防止div文本溢出容器

javascript - 在字符串中查找查询匹配项

php - 在 php curl 中发送以 "@"开头的字符串作为字符串

telegram - 如何在我的 Telegram Bot 中读取/接收 Telegram channel 消息?

javascript - 如何使用 InlineKeyboardButton 应用“Markdown 样式进行回复”?

influxdb - Grafana 中的虚假高值导致错误警报

javascript - 对 Canvas 粒子应用随机旋转

javascript - 当 children 集中注意力时,焦点控制的下拉菜单关闭