Closed devis-hub closed 5 years ago
const sessionManager = new SessionManager({
getStorageKey: (context) => String(context.peerId)
});
const sessionManager = new SessionManager({ getStorageKey: (context) => String(context.peerId) });
Туплю возможно уже, попробовал выше, но выдает Error
const sessionManager = new SessionManager({ getStorageKey: (ctx) => String(ctx.peerId) })
Property 'peerId' does not exist on type 'IContext & T'.
{
"resource": "/f:/nodeProjects/Bot/src/class/Bot.ts",
"owner": "typescript",
"code": "2339",
"severity": 8,
"message": "Property 'peerId' does not exist on type 'IContext & T'.",
"source": "ts",
"startLineNumber": 8,
"startColumn": 40,
"endLineNumber": 8,
"endColumn": 46
}
А какие свойства вообще есть в ctx
?
import { MessageContext } from 'vk-io';
const sessionManager = new SessionManager({
getStorageKey: (context: MessageContext) => String(context.peerId)
});
import { MessageContext } from 'vk-io'; const sessionManager = new SessionManager({ getStorageKey: (context: MessageContext) => String(context.peerId) });
vk-io последней версии Уже ничего не понимаю, выдает это:
{
"resource": "/f:/nodeProjects/Bot/src/class/Bot.ts",
"owner": "typescript",
"code": "2322",
"severity": 8,
"message": "Type '(context: MessageContext<Record<string, any>>) => string' is not assignable to type '<T = {}>(context: IContext & T) => string'.\n Types of parameters 'context' and 'context' are incompatible.\n Type 'IContext' is missing the following properties from type 'MessageContext<Record<string, any>>': $match, text, $filled, loadMessagePayload, and 64 more.",
"source": "ts",
"startLineNumber": 9,
"startColumn": 5,
"endLineNumber": 9,
"endColumn": 18,
"relatedInformation": [
{
"startLineNumber": 15,
"startColumn": 5,
"endLineNumber": 15,
"endColumn": 59,
"message": "The expected type comes from property 'getStorageKey' which is declared here on type 'ISessionManagerOptions'",
"resource": "/f:/nodeProjects/Bot/node_modules/@vk-io/session/lib/session-manager.d.ts"
}
]
}
Да судя по всему проще добавить @ts-ignore
пока. Посмотрю почему такой дженерик не работат.
const sessionManager = new SessionManager({
getStorageKey<MessageContext>(context) {
return String(context.peerId);
}
});
В 0.0.0-alpha.3
теперь можно сделать так:
import { MessageContext } from 'vk-io';
const sessionManager = new SessionManager<MessageContext>({
getStorageKey: (context) => String(context.peerId)
});
Заметил такую неясность. Делаю сцену с авторизацией пользователя в боте, т.к нужно сохранять внешние данные, делаю с помощью сцен.
Пишет пользователь в ЛС Боту и закончил на середине сцены где сцена ждет ответа от пользователя, заходит в беседу где уже авторизация была пройдена и пишет туда, в беседе продолжается его авторизация что была остановлена в ЛС и так же наоборот если в беседе начал и не закончил и когда вернулся в ЛС то там сцена продолжилась.
Как я понял сцена сохраняется на ID пользователя, а не на ID чата, это не удобно в таких моментах и как такое можно обойти