Телеграф сессия для уникального пользователя? - PullRequest
0 голосов
/ 10 сентября 2018

Я создаю бот-кошелька, и мне было интересно, как я могу начать сеанс для уникального пользователя. Например, в этом сеансе мне понадобится объект, содержащий уникальный идентификатор пользователя, открытый ключ и секретный ключ, чтобы они могли получить к нему доступ после запуска бота.

Я думал примерно так:

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 голосов
/ 09 февраля 2019

Может быть немного поздно, но для сеансов вы можете использовать Встроенное управление сеансами Telegrafs . Вот пример использования:

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), в котором хранятся все пользовательские данные (имя пользователя, идентификатор, сообщение и т. Д.), И вызываете сеанс из этого ( 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
...