25.04.2022, 00:54
|
Интересующийся
|
|
Регистрация: 25.04.2022
Сообщений: 13
|
|
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
})
})
})
Последний раз редактировалось _RedGamer_, 25.04.2022 в 15:10.
|
|
25.04.2022, 01:03
|
Интересующийся
|
|
Регистрация: 25.04.2022
Сообщений: 13
|
|
Есть ещё теория, что с user_info.first_name какие-то траблы будут,но пока что не знаю..
Буду рад, если подскажите что сделать нужно чтобы было всё ОК
Последний раз редактировалось _RedGamer_, 25.04.2022 в 02:11.
|
|
25.04.2022, 13:57
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
25.04.2022, 14:48
|
Интересующийся
|
|
Регистрация: 25.04.2022
Сообщений: 13
|
|
Nexus,
Проверьте пожалуйста..
|
|
25.04.2022, 15:00
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
_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
})
})
})
Последний раз редактировалось Nexus, 25.04.2022 в 15:19.
|
|
25.04.2022, 15:08
|
Интересующийся
|
|
Регистрация: 25.04.2022
Сообщений: 13
|
|
Извините,не знал про beautifier.io
Так..подскажите? В чём дело?
|
|
25.04.2022, 15:20
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
_RedGamer_, внес изменения в комментарий №5
|
|
25.04.2022, 15:25
|
Интересующийся
|
|
Регистрация: 25.04.2022
Сообщений: 13
|
|
Я пробовал вместо users.find использовать users.filter и const user = users.filter и т.д пробовал бестолку..вот я и хочу узнать от хорошо понимающего,в чём здесь ошибка и как её решить)
Последний раз редактировалось _RedGamer_, 25.04.2022 в 15:28.
|
|
25.04.2022, 15:30
|
Интересующийся
|
|
Регистрация: 25.04.2022
Сообщений: 13
|
|
Nexus,
Я хочу чтобы Callback кнопка выдала мне всплывающее окно,а эти ошибки мешают,а даже не грузит..
|
|
25.04.2022, 15:33
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,791
|
|
Сообщение от _RedGamer_
|
Я пробовал вместо users.find использовать users.filter и const user = users.filter и т.д пробовал бестолку
|
А у вас переменная users вообще существует до попытки её инициализации в строке 19? В коде её нет.
И нужно ли вообще запрашивать информацию о пользователе?
|
|
|
|