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
})
})
})