Use saved searches to filter your results more quickly
Cancel Create saved search
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window.
Reload to refresh your session.
negezor / vk-io Public
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Как отловить события ? #62
T1MOXA opened this issue May 2, 2018 · 13 comments
Как отловить события ? #62
T1MOXA opened this issue May 2, 2018 · 13 comments
T1MOXA commented May 2, 2018
Как можно отловить события ?
Раньше работал этот код, но сейчас не работает.
VK FEST 2023 В ПИТЕРЕ — COOLER MASTER, ТАЧКИ, КОСПЛЕЙ И КО-КО-КОМБО
vk.updates.on(‘message’, async (message) => < if (message.isEvent()) console.log(`Event:nType — $| Text — $`); >);
The text was updated successfully, but these errors were encountered:
T1MOXA commented May 2, 2018 •
Это я так полагаю сам эвент
MessageContext < vk: », type: ‘message’, subTypes: [ ‘new_message’ ], state: <>, payload: < id: 169049, date: 1525269784, body: », flags: 8227, geo: null, random_id: null, out: 1, deleted: 0, read_state: 1, emoji: 0, important: 0, user_id: *****, chat_id: 2, title: undefined, attachments: [] >, from: < id: 2000000002, type: ‘chat’ >, text: null, attachments: [], filled: false >
Похоже я знаю в чем дело.
message.isEvent() возвращает false
Видимо у меня криво обновилась либа.
negezor commented May 2, 2018
В теле объекта нету action по этому всё верно в контексте. Поставь env DEBUG=vk-io:updates
T1MOXA commented May 2, 2018
Я переустановил либу.
Теперь эвенты заработали, но проверка message.isEvent() все равно false
2018-05-02T14:58:57.445Z vk-io:updates longpoll update [ 80, 2, 0 ] 2018-05-02T14:58:57.445Z vk-io:updates Unsupported polling context type 80 2018-05-02T14:58:57.446Z vk-io:updates http —> 2018-05-02T14:58:58.181Z vk-io:updates http 2018-05-02T14:58:58.747Z vk-io:updates http , <> ]
negezor commented May 2, 2018
Не трудно было бы продебажить метод?
T1MOXA commented May 2, 2018
Не совсем понял что вы имеете в виду.
negezor commented May 2, 2018
В исходном коде поменять и проверить что возвращают методы в isEvent.
T1MOXA commented May 2, 2018 •
isEvent()
this.isChat() == true
А ключа payload.action не существует.
При добавлении пользователя и при кике не один объект context не содержал action
Я бы рад помочь, но не знаком с этой частью апи вк, и не знаю что я должен получить.
2018-05-02T16:42:11.499Z vk-io:updates Unsupported polling context type 80 2018-05-02T16:42:11.499Z vk-io:updates http —> 2018-05-02T16:42:12.015Z vk-io:updates http , <> ] 2018-05-02T16:42:12.017Z vk-io:updates longpoll update [ 51, 2 ] 2018-05-02T16:42:12.017Z vk-io:updates Unsupported polling context type 51 2018-05-02T16:42:12.017Z vk-io:updates longpoll update [ 52, 8, 2000000002, *** ] 2018-05-02T16:42:12.017Z vk-io:updates Unsupported polling context type 52 2018-05-02T16:42:12.017Z vk-io:updates http —> 2018-05-02T16:42:12.200Z vk-io:updates http 2018-05-02T16:42:12.439Z vk-io:updates http
Unsupported polling context type 51
VK Databases Meetup
Это не может быть причиной ?
Источник: github.com
Как можно отследить отправку сообщения с изображением, аудио, стикером и видео?
Обьясняю. Мне нужно отслеживать когда человек отправляет сообщение с изображением/аудио/стикером/видео. Это делается через vk.udpates.on([ // название события ]) или vk.updates.on(‘message_event’) ?
Я также посмотрел массив message и увидел что тип сообщения просто message:
object:< «id»: 0, «conversationMessageId»: 79, «peerId»: 2000000004, «peerType»: «chat», «senderId»: , «senderType»: «user», «createdAt»: 1685765853, «text»: «! message», «forwards»: [], «attachments»: [ < «id»: 457247444, «ownerId»: , «accessKey»: «f1dd50e544076191e8», «albumId»: -3, «text»: «», «createdAt»: 1685765850, «smallSizeUrl»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=130x119sign=0b2deac7b23a0f0df20e292c01fb2e06type=album», «mediumSizeUrl»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363sign=54dea3a277f2163dc854860363d4987ctype=album», «largeSizeUrl»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363sign=54dea3a277f2163dc854860363d4987ctype=album», «sizes»: [ < «height»: 69, «type»: «s», «width»: 75, «url»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=75x69sign=541702b9e577276fddef73bf0d1348e7type=album» >, < «height»: 119, «type»: «m», «width»: 130, «url»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=130x119sign=0b2deac7b23a0f0df20e292c01fb2e06type=album» >, < «height»: 363, «type»: «x», «width»: 396, «url»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363sign=54dea3a277f2163dc854860363d4987ctype=album» >, < «height»: 119, «type»: «o», «width»: 130, «url»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=130x119sign=0b2deac7b23a0f0df20e292c01fb2e06type=album» >, < «height»: 183, «type»: «p», «width»: 200, «url»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=200x183sign=bf458cf6e87e570577699e047d49ff9ctype=album» >, < «height»: 293, «type»: «q», «width»: 320, «url»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=320x293sign=a3a111c0023cd32a26c8d196568d14b5type=album» >, < «height»: 363, «type»: «r», «width»: 396, «url»: «https://sun9-39.userapi.com/impg/IoSai0SFV2YR0svNS1TQoa0n_ug7BpSOAnmdnQ/MOtqVHOjtek.jpg?size=396x363sign=54dea3a277f2163dc854860363d4987ctype=album» >] > ], «isOutbox»: false, «$match»: [ «! message», «message» ], «type»: «message», «subTypes»: [ «message_new» ], «state»: <> > // Свое айди я скрыл. Как вы видите тип message.
- Вопрос задан 03 июн.
- 80 просмотров
Комментировать
Решения вопроса 1
Создатель бота Nemo
Что бы обработать нужно просто делать вот так:
vk.updates.on(‘message’, async (message) => < if(message.attachments)< // проверка на фотки и тп let att = message.attachments for(let i = 0; i < att.length; i++)< if(att[i].type == photo)< // фото >else if(att[i].type == video) < // видео >// так можно продолжать и дальше. > > else < return; >>)
Ответ написан вчера
Комментировать
Нравится Комментировать
Ответы на вопрос 1
Веб разработчик x)
Для отслеживания сообщений с изображениями, аудио, стикерами и видео в VK, вы можете использовать метод vk.updates.on(‘message_new’) , который срабатывает каждый раз, когда на страницу пользователя или группы приходит новое сообщение. Для определения типа сообщения и наличия прикрепленных файлов вы можете проверять содержимое объекта message в обработчике события.
В приведенном вами примере, сообщение является обычным текстовым сообщением, однако имеет прикрепленное изображение в массиве attachments. Вы можете проверять наличие элементов в этом массиве и определять тип прикрепленного файла по полю type, которое указано в каждом элементе массива. Например, тип изображения будет указан как «type»: «photo» , а тип аудиозаписи будет «type»: «audio»
Ответ написан 03 июн.
Прикол в том что это можно определить только по
let checkPhoto = Boolean(message.attachments[0].albumId) // true or false
в вк вообще таких типов нету как photo, video и тд, все самому через костыль
Внимание! Это можно сделать через
message.attachments[0].type
Выдает по итогу Photo, Video
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- JavaScript
- +1 ещё
Сравнить роуты?
- 1 подписчик
- 9 часов назад
- 55 просмотров
Источник: qna.habr.com
VK-IO-QUESTION
Проще говоря, бот будет ждать ответа именно от пользователя, айди которого был указан в targetUserId .
По умолчанию вопрос задаётся отправителю сообщения ( context.senderId )
Получение payload
Давайте на команду /choice давать пользователю выбор из двух цветов, по нажатию на любую из которых, он получит факт о выбранном цвете
const Keyboard > = require(‘vk-io’); hearManager.hear(‘/choice’, async (context) => const answer = await context.question( ‘Зелёный или синий?’, keyboard: Keyboard.keyboard([ [ Keyboard.textButton( label: ‘Зелёный’, color: ‘positive’, payload: choice: ‘green’ > >), Keyboard.textButton( label: ‘Синий’, color: ‘positive’, payload: choice: ‘blue’ > >) ] ]).oneTime() > ); if (!answer.messagePayload) return context.send(‘Отвечать нужно было нажатием на кнопку’); > if (answer.messagePayload.choice === ‘green’) return context.send(‘Человеский глаз наиболее хорошо различает оттенки именно зеленого цвета.’); > if (answer.messagePayload.choice === ‘blue’) return context.send(‘Синий краситель долгое время был одним из самых дорогих, потому что его изготавливали из лазурита.’); > >);