Модуль для работы с ВКонтакте API и Callback API ВКонтакте.
Установка
npm install VK-Promise
Tl;dr
var VK = require(‘VK-Promise’), vk = new VK(‘сюда access_token’); // запрос vk(/*string*/ метод, /*object*/ данные) .then(/*function*/ on_response) .catch(/*function*/ on_error); // Загрузка файла vk.upload( /*string*/ метод_получения_сервера, /*string*/ метод_сохранения_файла, < get: , save: , files: > ); // Получение всего что у чего есть offset vk.getAll(/*string*/ метод_получения_данных, /*object*/ данные, /*function*/ отслеживание_прогресса) // Функции vk.longpoll.start(/*object*/ options); // Запуск получения сообщения через LongPoll vk.init_execute_cart(/*number*/ интервал_запросов_50_для_групп_или_334); // Запуск пакетной обработки запросов через execute vk.callback_api.getCallback(/*confirmation res*/, /* pass */); // Получения обработчика для http.createServer vk.callback_api.setServer(/* opts */); // Поднятие и установка callback api сервера vk.callback_api.initAllListeners(); // Включает обработку лишний событий в callback api // Разное VK.getAttachmentUrl(/*object*/ массив_или_объект_вложений, /*string*/ тип_добавляемы_массиву_вложений); // Получения url из msg.attachments VK.Array2Object(/*Array*/ array); // [< key: key, value: value >] => < key: value >// Авторизация vk.auth(< username: ‘логин’, password: ‘пароль’ >) .then(vk.users.get) .then(console.log, console.error);
Элементарный запрос
vk.users.get(< user_id: 1 // данные передаваемые API >).then(function onResponse(res) < console.log(‘response’,res); >).catch(function onError(error) < console.log(‘Ошибка’,error); >);
Элементарный бот
vk.longpoll.start(); // Запускаем получение сообщений через LongPoll vk.on(‘message’, function onMessage(event, msg) < // Обрабатываем сообщения if (msg.body == ‘ping’) < // Если текст сообщения равен ping msg.send(‘pong’); // Отвечаем pong >>);
Обработка need_captcha
vk.on(‘captcha’, function onCaptcha(event, data) < console.log(‘Ссылка на код:’, data.captcha_img); data.submit(‘Вводим код с картинки’); >); // API метод вызова captcha vk(‘captcha.force’, <>)
Элементарный бот для группы через Callback API с оптимизацией ответа на сообщения через execute
var http = require(‘http’); // Запускаем http сервер на 80 порту с обработкой Callback API // PS: Сервер в настройках группы нужно вешать вручную var callback = vk.init_callback_api(‘Строка, которую должен вернуть сервер’, ‘secretkey’, < group: 123 >); http.createServer(callback).listen(80); // Включаем оптимизацию через execute // Собирает все запросы и выполняет пачками раз в 334мс // 334мс — 3 раза в секунду, стандартное ограничение для юзеров // Для групп указываем 50 vk.init_execute_cart(50); // message_new msg.send(‘OK’); event.ok(); // Отвечаем callback api серверу OK >); // все остальное идет в callback type // Например если участник вышел из сообщества vk.on(«group_leave», function onUserLeave(event, data) < console.log(«info», data.$); if (data.self) < // если сам вышел vk.messages.send(< // Отправляем сообщени message: ‘Ну куда же ты :_(‘, // текст сообщения peer_id: data.object.user_id // Кому >); > event.ok(); >);
Загрузка файлов
Загрузка всей стены
var readline = require(‘readline’); vk.getAll(‘wall.get’, < owner_id: -2158488, count: 100 >, function onProgress(progress) < readline.clearLine(process.stdout, 0); readline.cursorTo(process.stdout, 0); process.stdout.write(‘Загружено: ‘ + progress.offset + ‘ из ‘ + progress.count); >).then(function onDone(res) < readline.clearLine(process.stdout, 0); readline.cursorTo(process.stdout, 0); console.log(‘Загружено записей:’, res.length); >, console.error);
Остановка LongPoll с последующим восстановлением
vk.longpoll.start(); vk.longpoll.stop().then(function onResponse(data) < setTimeout(vk.longpoll.listen, 10000, data); >);
Callback API
vk.callback_api.setServer(< group_id: 1234567, // ID группы serverModule: hipc, // Модуль/функция для поднятия сервера hipc/http/https (req, res) listen: ‘/ipc/path’, // порт/путь прослушки (передает в listen) url: ‘http://domain/path/’, // url сервера secret_key: ‘pass1234’, // секретный ключ message_new: 1, // далее данные для groups.setCallbackSettings >); // В then отдает opts и server, который можно использовать например для установки ssl, но лучше использовать http + nginx
Дополнительные данные
- vk
- retry: false — Отключение повтора запроса при 6й ошибке: (true)
- ignore_cart: true — Игнорирование очереди запросов (false)
- ignore_execute_cart: true — Игнорирование сборщика запросов (false)
- reject_captcha: true — Выкидывать ошибку при проверочном коде (false)
- headers — заголовки
- max_offset — максимальный offset
Что нового
- Автоматическая настройка Callback API
- Bots LongPoll API
- Исправлена функция msg.editChat
- Добавлены функции vk.upload.widgetsAppImage и vk.upload.widgetsGroupImage
- В vk.init_callback_api добавлен аргумент data (key, secret, data) для передачи к событиям data.$
- Новое событие confirmation, для CallBack API
- vk.longpoll.stop возвращает Promise
- исправления в msg.get
- Добавил msg.user_id, msg.source_text, source_old_text с LongPoll
- vk.longpoll.listen — функция прослушки LongPoll сервера
- VK.default_options.longpoll — хранит стандартные параметры LongPoll
- callback vk.longpoll.stop теперь отдает данные для восстановления через vk.longpoll.listen
- msg.setActivity теперь принимает type
- Исправления msg.setActivity и msg.delete
- Добавлен метод messages.pin
- Из запросов идущих через сбор запросов убирается lang, если равно текущей и reject_captcha
- Починил return в msg.get
- Исправления в документации
- vk.longpoll.start
- vk.longpoll.stop
- Испрвлен метод VK.getAttachmentUrl
- Функция vk.longpoll.start получила опции которые передаются в messages.getLongPollServer
- В vk.longpoll.start изменены опции mode: 234, version: 1, что позволяет получать события о закреплении сообщений
- Исправлена очепятка unsupported
- Обновлена версия API до 5.69
- В vk.upload добавлена вожможность вывода ответа без сохранения, для вывода ответа после загрузаки используйте метод для сохранения «return»
- Исправленна функция vk.upload.chatPhoto
- VK.parseAttachments может принимать вторым параметром тип вложения
- msg теперь класс, в будущем все на него перепишу.
- msg.sendAttachment, msg.pin, msg.unpin, msg.addChatUser, msg.removeChatUser итд
- msg.body_decoded убрано, ищите в msg.data[6]
- vk.init_execute_cart теперь принемает интервал таймера и сразу его запускает
- Из запросов идущих через сбор запросов убирается версия api, если она равна текущей
- msg.send возвращает Promise с функциями edit и pin, для редактирования сообщения после отправки или пина
- Новое событие LongPollStop вызываемое ручной при остановке лонгполла
- Изменены события upload.get_server, upload.part, upload.end, upload.save
- Добавлено save_method «return», для методов не требующих сохранения
- Добавлены методы секции stories
- Методы для загрузки историй: vk.upload.storiesPhoto, vk.upload.storiesVideo
- reject_captcha: true — Выкидывать ошибку при проверочном коде
- Убран модуль fs, поэтому если вы использовали msg.sendPhoto или msg.sendDoc для загрузки с диска, то используйте fs.createReadStream
- Исправлена ошибка vk.request
- Новый раздел документации (ниже)
- Исправлен вывод ошибок в vk.upload
- vk.auth, пока без капч и 2фа
- Небольшие исправления
- Улучшена секция vk.upload
- Изменения в vk.request:
- Если передать url и data, то по умолчанию будет GET запрос и data вложится в search
- Добавлена обработка 302 ошибки
- При statusCode !== 200 запрос уйдет в catch
- Переписан build_execute_request
Разное
- VK — функция создания vk
- default_options — Стандартные параметры
- filename — стандартное имя файла для загрузки
- cart_interval — интервал выполнения запросов
- host — хост api
- method — метод передачи данных
- body — вложения в запрос
- v — версия api
- user-agent — id
- listeners — список функций для vk.on
- on — получение событий
- все события
- start — функция включение получения сообщений через longpoll
- stop — функция остановки longpoll
- listen — функция прослушивания сервера
- exit — переменная для выхода из цикла longpoll
- timer — таймер для обработки запросов
- execute_cart — использовать ли build_execute_request
- init — функция включения очереди запросов
- deinit — функция отключения очереди запросов
- photos = photo — фото
- wallPhotos = wallPhoto — фото на стену
- ownerPhoto — фото в профиль
- messagesPhoto — фото в сообщение
- chatPhoto — фото на аватарку беседы
- marketPhoto — фото в товар
- marketAlbumPhoto — фото на альбом товаров
- audio — аудио
- video — видео
- docs = doc — документ
- wallDocs = wallDoc — документ на стену
- groupCover — обложка группы
- data — данные с longpoll
- send — отправить сообщение
- edit — отредактировать отправленное сообщение
- pin — закрепить
Current Tags
- 0.5.1 . latest ( 4 years ago )
- 0.3.2 . next ( 5 years ago )
35 Versions
- 0.0.1 . 7 years ago
- 0.0.2 . 7 years ago
- 0.0.3 . 7 years ago
- 0.0.4 . 6 years ago
- 0.0.5 . 6 years ago
- 0.0.6 . 6 years ago
- 0.0.7 . 6 years ago
- 0.0.8 . 6 years ago
- 0.0.9 . 6 years ago
- 0.0.10 . 6 years ago
- 0.1.0 . 6 years ago
- 0.1.1 . 6 years ago
- 0.1.2 . 6 years ago
- 0.1.3 . 6 years ago
- 0.1.4 . 6 years ago
- 0.1.5 . 6 years ago
- 0.1.6 . 6 years ago
- 0.1.7 . 6 years ago
- 0.1.8 . 6 years ago
- 0.1.9 . 6 years ago
- 0.2.1 . 6 years ago
- 0.2.2 . 6 years ago
- 0.2.3 . 6 years ago
- 0.2.4 . 6 years ago
- 0.2.5 . 6 years ago
- 0.2.6 . 6 years ago
- 0.2.7 . 6 years ago
- 0.2.91 . 6 years ago
- 0.3.0 . 5 years ago
- 0.3.1 . 5 years ago
- 0.3.2 . 5 years ago
- 0.4.0 . 4 years ago
- 0.4.1 . 4 years ago
- 0.5.0 . 4 years ago
- 0.5.1 . 4 years ago
Источник: npmmirror.com
Раскрутка группы в ВК: Как подключить CallBack API и не потерять клиентов ВКонтакте
Настраиваем Callback API Бот. Подробная инструкция. Очень лёгкая
Проблема с Callback api в вк
Делаю бота для группы, запросы идут, а сообщение нет и как вывести $data, чтобы я мог на нее посмотреть?
$data = json_decode(file_get_contents(‘php://input’)); switch ($data->type) < case ‘confirmation’: echo $confirmation_token; break; case ‘message_new’: $user_id = $data->object->user_id; // $message = $data->object->text; $user_info = json_decode(file_get_contents(«https://api.vk.com/method/users.get?user_ids=)); $user_name = $user_info->response[0]->first_name; $request_params = array( ‘message’ => «Hello, !», ‘user_id’ => $user_id, ‘access_token’ => $token, ‘v’ => ‘5.107’ ); $get_params = http_build_query($request_params); file_get_contents(‘https://api.vk.com/method/messages.send?’. $get_params); echo(‘ok’); break; >
Отслеживать
задан 8 июн 2020 в 5:36
user342801 user342801
может проблема в кодировке?
Хотя стоит utf8
– user342801
8 июн 2020 в 9:14
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Для метода messages.send надо обязательно указывать аргумент random_id=0 без него сообщение не отправится.
Вывести значение $data можно например в файл
file_put_contents(«callback.log», date(«[d-m-Y H:i:s] «).json_encode($data).»n», FILE_APPEND);
В этом примере создастся callback.log в папке со скриптом
Кроме того ваш код надо дополнить логированием ошибок в случае если вызов API завершился неудачно, например так:
$request_params = array( ‘message’ => «Hello, !», ‘user_id’ => $user_id, ‘access_token’ => $token, ‘random_id’ => ‘0’, ‘v’ => ‘5.107’ ); $get_params = http_build_query($request_params); $context = stream_context_create(array( ‘http’ => array(‘ignore_errors’ => true), )); $res = file_get_contents(‘https://api.vk.com/method/messages.send?’ . $get_params, false, $context); $responseData = json_decode($res); if (!$responseData || isset($responseData[‘error’]))
Источник: ru.stackoverflow.com
Saved searches
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
Callback Buttons рекурсивный payload #358
viridius-hub opened this issue Oct 19, 2020 · 3 comments
Callback Buttons рекурсивный payload #358
viridius-hub opened this issue Oct 19, 2020 · 3 comments
package: vk-io Issues related to vk-io
viridius-hub commented Oct 19, 2020 •
Что-то я не понимаю. Делаю callback кнопки, все работает, там где они могут работать. Но как дело касается браузера, где нет callback кнопок, то всё. Возвращает мне первый раз в messagePayload вот это:
command: ‘not_supported_button’, button_type: ‘callback’, payload: » >
Во второй раз, это:
command: ‘not_supported_button’, button_type: ‘callback’, payload: ‘»>’ >
В третий раз payload увеличивается и так пока вк не станет игнорить отправляемые сообщения боту.
Что это? Как с этим бороться, мне ведь просто из payload нужно достать command: «other» , что бы выполнить запрашиваемую команду на стороне бота, раз callback не поддерживается.
Ошибка ли это вк, или все таки где-то у меня что-то не так. А может в vk-io дело, не знаю, потому обращаюсь за помощью.
Versions
The text was updated successfully, but these errors were encountered:
Источник: github.com