Cannot access "users" before initialization
let { VK, Keyboard } = require('vk-io') let vk = new VK({ token: `токен` }) let commands = [] vk.updates.start().then(() => console.log(`Запущено!`)) vk.updates.on('message_event', async (message) => { const [user_info] = await vk.api.users.get({ user_ids: message.userId }) console.log(`Беседа #${message.peerId}, id сообщения ${message.conversationMessageId}`) const users = users.find(x => x.id === (message.userId)) if (!users) { console.log(`Пользователь не найден :(`); return } if (message.eventPayload.text === 'Ты успешно проверил(а) Callback кнопку') return; vk.api.messages.sendMessageEventAnswer({ event_id: message.eventId, peer_id: message.peerId, conversation_message_ids: message.conversationMessageId, user_id: message.userId, event_data: JSON.stringify({ "type": "show_snackbar", "text": `${user_info.first_name}, Ты успешно проверил(а) Callback кнопку` }) }) return }) vk.updates.on('message', async (message) => { if (message.isOutbox) return; if (!message.text) return; const command = commands.find(x => x[0].test(message.text)); console.log(`${message.senderId}, ${message.text}`) if (!command) return message.send(`нет такой команды`) message.args = message.text.match(command[0]); await command[1](message); }) const cmd = { one: (p, f) => { commands.push([p, f]); } } cmd.one(/^(привет)$/i, async (message) => { return message.send(`ку`, { keyboard: Keyboard.keyboard([]) .textButton({ label: 'Нажми на меня', color: Keyboard.PRIMARY_COLOR }) .textButton({ label: 'Нажми на меня2', color: Keyboard.POSITIVE_COLOR }) .row() .urlButton({ label: 'Нажми на меня3', url: 'https://vk.com/*', color: Keyboard.NEGATIVE_COLOR }) }) }) cmd.one(/^(тест)\s(.*)$/i, async (message) => { return message.send(`я думаю это ${message.args[2]}`) }) cmd.one(/^(кнопка)$/i, async (message) => { return message.send('Нажми на кнопку ниже..', { keyboard: JSON.stringify({ buttons: [ [{ action: { type: "callback", label: "Проверка Callback", payload: { type: "show_snackbar", text: "Ты успешно проверил(а) Callback кнопку" } }, color: "primary" }] ], inline: true }) }) }) |
Есть ещё теория, что с user_info.first_name какие-то траблы будут,но пока что не знаю..
Буду рад, если подскажите что сделать нужно чтобы было всё ОК |
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [html run] ... минимальный код страницы с вашей проблемой [/html] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Nexus,
Проверьте пожалуйста.. |
_RedGamer_, а весь код пропустить через beautifier и поместить в блок «JS» не получилось?
Ошибка в строке 19: вы при инициализации переменной «users» используете её же. Во-первых: строка полностью некорректна. Во-вторых: непонятно зачем вообще нужно запрашивать информацию о пользователе, если она в дальнейшем никак не будет использоваться. Чтобы проверить, что такой пользователь существует? Если такого пользователя нет, то от него сообщение не сможет поступить. Если бы вы изначально написали номер строки, в которой у вас происходит ошибка, то не пришлось бы вникать в ваш код, чтобы найти ошибку. let { VK, Keyboard } = require('vk-io') let vk = new VK({ token: `токен` }) let commands = [] vk.updates.start().then(() => console.log(`Запущено!`)) vk.updates.on('message_event', async (message) => { const [user_info] = await vk.api.users.get({ user_ids: message.userId }) console.log(`Беседа #${message.peerId}, id сообщения ${message.conversationMessageId}`) *!* const users = users.find(x => x.id === (message.userId)) */!* if (!users) { console.log(`Пользователь не найден :(`); return } if (message.eventPayload.text === 'Ты успешно проверил(а) Callback кнопку') return; vk.api.messages.sendMessageEventAnswer({ event_id: message.eventId, peer_id: message.peerId, conversation_message_ids: message.conversationMessageId, user_id: message.userId, event_data: JSON.stringify({ "type": "show_snackbar", "text": `${user_info.first_name}, Ты успешно проверил(а) Callback кнопку` }) }) return }) vk.updates.on('message', async (message) => { if (message.isOutbox) return; if (!message.text) return; const command = commands.find(x => x[0].test(message.text)); console.log(`${message.senderId}, ${message.text}`) if (!command) return message.send(`нет такой команды`) message.args = message.text.match(command[0]); await command[1](message); }) const cmd = { one: (p, f) => { commands.push([p, f]); } } cmd.one(/^(привет)$/i, async (message) => { return message.send(`ку`, { keyboard: Keyboard.keyboard([]) .textButton({ label: 'Нажми на меня', color: Keyboard.PRIMARY_COLOR }) .textButton({ label: 'Нажми на меня2', color: Keyboard.POSITIVE_COLOR }) .row() .urlButton({ label: 'Нажми на меня3', url: 'https://vk.com/*', color: Keyboard.NEGATIVE_COLOR }) }) }) cmd.one(/^(тест)\s(.*)$/i, async (message) => { return message.send(`я думаю это ${message.args[2]}`) }) cmd.one(/^(кнопка)$/i, async (message) => { return message.send('Нажми на кнопку ниже..', { keyboard: JSON.stringify({ buttons: [ [{ action: { type: "callback", label: "Проверка Callback", payload: { type: "show_snackbar", text: "Ты успешно проверил(а) Callback кнопку" } }, color: "primary" }] ], inline: true }) }) }) |
Извините,не знал про beautifier.io
Так..подскажите? В чём дело? |
_RedGamer_, внес изменения в комментарий №5
|
Я пробовал вместо users.find использовать users.filter и const user = users.filter и т.д пробовал бестолку..вот я и хочу узнать от хорошо понимающего,в чём здесь ошибка и как её решить)
|
Nexus,
Я хочу чтобы Callback кнопка выдала мне всплывающее окно,а эти ошибки мешают,а даже не грузит.. |
Цитата:
И нужно ли вообще запрашивать информацию о пользователе? |
Часовой пояс GMT +3, время: 13:29. |