Peer id vk как узнать

Писать будем используя Сallback api(отправляет каждое действие в сообществе по отдельности на сервер). Поэтому его тоже следует настроить. Переходим в
«Управление сообществом» →»Работа с API». Для работы бота нужно зарегистрировать ключ доступа. Нажимаете «Создать ключ» и выбираете необходимые права доступа, для этого бота нужны только права на сообщения. Подтверждаем номер телефона и сохраняем куда нибудь ключ доступа. Теперь переходим во вкладку Callback API.

Ставим свое название сервера и выбираем последнюю версию API(на данный момент она 5.80, и именно с ней ниже представленный бот будет работать 100%) . Во вкладке «Типы запросов» выбираем только входящие сообщения.

Настройка сервера

Теперь вам понадобится сервер для хостинга своего бота. Вы можете использовать бесплатные хостинги, например 000webhost.

Если вы будете использовать дешевые/бесплатные хостинги, то вероятнее всего на них будет отключен cURL(вы не сможете отправлять ботом медиа файлы, только текст), и его нельзя включить. У 000webhost все с этим нормально, можете использовать. Если у вас свой сервер или хороший купленный, то вам надо подключить cURL для полноценной работы бота из нашего примера.

Как узнать id Вконтакте: чужой, свой, с пк и телефона!

Как работает Callback API и keyboard

Проведу краткий экскурс как все работает. Сallback API отсылает на ваш сервер любое событие, которое происходит в группе виде JSON. Полный список событий можно посмотреть во вкладке «Сallback API» → «Типы событий». Вот так выглядит JSON запрос когда пользователь отправляет сообщение, в данном случае он нажал на кнопку:

Тут есть несколько интересных полей, которые можно обработать: id пользователя, текст сообщения(text), полезная нагрузка кнопки(payload).

Отправка сообщений пользователю происходит с помощью метода messages.send . Если вы отправляете клавиатуру, то после всех стандартных параметров вы добавляете параметр keyboard, который содержит json кнопок, вот как он выглядит:

Работа с библиотекой

Для работы бота мы используем самописную библиотеку на PHP. (Если ссылка не работает, то вот архив)вы можете найти документацию к библиотеке и скачать саму библиотеку. Вот короткий листинг готовых функций для написания бота, подробнее ищите по ссылке выше. Если вы хотите узнавать об изменениях в библиотеке, то напишите хотя бы одно сообщение нашему боту в ВК , через него мы будет вас оповещать об изменениях.

$vk = new vk_api(vk_key, version_api) — инициализация бота. Параметры: ключ сообщества(vk_key), версия API(version_api).

sendMessage(id, text) — функция отправки сообщений юзеру. Параметры: id пользователя(id), текст сообщения(text).

sendImage(id, patch) — функция отправки изображений. Параметры: id пользователя(id), путь до изображения(patch).

sendButton(id, text, buttons, one_time) — функция отправки сообщения с кнопками. Параметры: id пользователя(id), текст сообщения(не может быть пустым)(text), массив с кнопками(buttons), не обязательный параметр one_time, по дефолту false, если поставить true, то после нажатия на любую кнопку клавиатура скроется.

Как Узнать ID Своей Страницы в ВК на Компьютере в 2022 / Как Посмотреть АйДи Профиля в ВКонтакте

request(method, array_arguments) — универсальная функция работы с методами. Параметры: method — название метода из официального api, array_arguments — массив параметров.

sendOK() — Бета функция. Используется вместо echo «ok», помогает в тех случаях, когда время работы скрипта долгое, и бот начинает повторять сообщения по несколько раз.
ВАЖНО: есть использовать эту функцию, то у вас не будет отображаться вывод ошибок. Во время дебага заменяйте на echo «ok»

Полный код бота на PHP

Теперь перейдем собственно к коду, где прокомментирована почти каждая строка.
Данный код поддерживается на PHP 5.6+
В блоке CONFIG укажите свой ключ доступа сообщества, ключ для подтверждения сервера а так же выбранную вами версию API.

Еще по теме:  Как проверить группу в ВК на активность

Полный код бота

«Fish»], «А какие бывают?», «blue»]; //Код кнопки «Fish» const BTN_BACK = [[«command» => «start»], » «Pink_salmon»], «Горбуша», «white»]; // Код кнопки «Горбуша» const BTN_GOLDFISH = [[«animals» => «Goldfish»], «Золотая рыбка», «blue»]; // Код кнопки «Золотая рыбка» const BTN_PLOTVA = [[«animals» => «Plotva»], «Плотва», «green»]; // Код кнопки «Плотва» $vk = new vk_api(VK_KEY, VERSION); // создание экземпляра класса работы с api, принимает ключ и версию api $data = json_decode(file_get_contents(«php://input»)); //Получает и декодирует JSON пришедший из ВК if ($data->type == «confirmation») < //Если vk запрашивает ключ exit(ACCESS_KEY); //Завершаем скрипт отправкой ключа >$vk->sendOK(); //Говорим vk, что мы приняли callback if (isset($data->type) and $data->type == «message_new») < //Проверяем, если это сообщение от пользователя $id = $data->object->from_id; //Получаем id пользователя, который написал сообщение $message = $data->object->text; if (isset($data->object->peer_id)) $peer_id = $data->object->peer_id; // Получаем peer_id чата, откуда прилитело сообщение else $peer_id = $id; if (isset($data->object->payload))< //получаем payload $payload = json_decode($data->object->payload, True); > else < $payload = null; >if (isset($payload[«command»]) or mb_strtolower($message) == «начать») < //Если нажата кнопка начать или sendButton($peer_id, «Хочешь посмотреть на рыбок?», []); //Отправляем кнопку пользователю >else < if ($payload != null) < // если payload существует switch ($payload[«animals»]) < //Смотрим что в payload кнопках case «Fish»: //Если это Fish $vk->sendButton($peer_id, «Вот такие, выбирай», [ //Отправляем кнопки пользователю , ]); break; case «Pink_salmon»: //Если это Горбуша $vk->sendMessage($peer_id, «Держи свою горбушу!»); //отправляем сообщение $vk->sendImage($peer_id, «img/pink_salmon.jpg»); //отправляем картинку break; case «Goldfish»: //Если это Золотая рыбка $vk->sendMessage($peer_id, «Она исполнит твои желания. «); $vk->sendImage($peer_id, «img/goldfish.jpg»); break; case «Plotva»: //Если это Плотва $vk->sendMessage($peer_id, «Ой, похоже картинку перепутали)»); $vk->sendImage($peer_id, «img/plotva.jpg»); break; default: break; > > > > ?>

//Подключаем библиотеку для работы с api vk

const VK_KEY = «your_key» ; //тот самый длинный ключ доступа сообщества

const ACCESS_KEY = «your_key» ; //например c40b9566, введите свой

const VERSION = «5.80» ; //ваша версия используемого api

const BTN_FISH = [ [ «animals» = > «Fish» ] , «А какие бывают?» , «blue» ] ; //Код кнопки «Fish»

const BTN_BACK = [ [ «command» = > «start» ] , » // Код кнопки » «Pink_salmon» ] , «Горбуша» , «white» ] ; // Код кнопки «Горбуша»

const BTN_GOLDFISH = [ [ «animals» = > «Goldfish» ] , «Золотая рыбка» , «blue» ] ; // Код кнопки «Золотая рыбка»

const BTN_PLOTVA = [ [ «animals» = > «Plotva» ] , «Плотва» , «green» ] ; // Код кнопки «Плотва»

$vk = new vk_api (VK_KEY , VERSION ) ; // создание экземпляра класса работы с api, принимает ключ и версию api

$data = json_decode (file_get_contents («php://input» ) ) ; //Получает и декодирует JSON пришедший из ВК

exit (ACCESS_KEY ) ; //Завершаем скрипт отправкой ключа

$vk -> sendOK () ; //Говорим vk, что мы приняли callback

$id = $data -> object -> from_id ; //Получаем id пользователя, который написал сообщение

$message = $data -> object -> text ;

if (isset ($data -> object -> peer_id ) )

$peer_id = $data -> object -> peer_id ; // Получаем peer_id чата, откуда прилитело сообщение

if (isset ($data -> object -> payload ) ) < //получаем payload

$payload = json_decode ($data -> object -> payload , True ) ;

if (isset ($payload [ «command» ] ) or mb_strtolower ($message ) == «начать» ) < //Если нажата кнопка начать или раздел разработчиков , Далее нажать создать приложение, в появившемся окне выбрать вкладку Вэб-сайт, так же вводим название вашего приложения, адрес вашего сайта и базовый домен.

Адресом будет — http://mysite.ru

Базовый домен — mysite.ru

mysite — адрес вашего сайта

После подтверждения номера телефона вы попадёте на страницу с информацией о вашем приложении, нужно нажать вкладку настройки и попадаем на страницу, где и лежит наш api id ВКонтакте.

Пользуйтесь на здоровье. Надеюсь вы получили для себя полезную информацию. До скорых встреч дорогие читатели.

Подписывайтесь на обновления блога, чтобы не пропустить выход новых статей.

С уважением С.Васильев

  • Главная
  • Веб-сервисы
  • Отслеживание активности сообщества вконтакте. Как получить ВКонтакте Api ID

Похожие публикации

Подключение трехфазного двигателя к трехфазной сети

Как сделать подсветку на клавиатуре Подключение к сети без блока питания

Микрофонный усилитель на микросхеме Схема подключения микрофона к усилителю

Подставка для телефона своими руками Самодельный держатель для телефона

Популярные записи

  • Аккумуляторы от бесперебойника
  • Как я заряжал аккумуляторы UPS Восстановление свинцового аккумулятора ибп
  • Как создать резервную копию всех Ваших писем Gmail (полное руководство)
  • Как можно скачать фото из инстаграм Instagrab для скачивания фото из Инстаграм
  • Почему экран iPhone постоянно включается сам и как это исправить?
Еще по теме:  Был в сети 5 минут назад ВК

Источник: tdelegia.ru

Peer id vk api

Заданный random_id используется для проверки уникальности за всю историю сообщений, поэтому используйте большой диапазон (до int64).

peer_id идентификатор назначения.

Для групповой беседы:
2000000000 + id беседы.

domain короткий адрес пользователя (например, illarionov). chat_id идентификатор беседы, к которой будет относиться сообщение. user_ids идентификаторы получателей сообщения (при необходимости отправить сообщение сразу нескольким пользователям). Доступно только для ключа доступа сообщества. Максимальное количество идентификаторов: 100. message текст личного сообщения. Обязательный параметр, если не задан параметр attachment. lat географическая широта (от -90 до 90). long географическая долгота (от -180 до 180). attachment медиавложения к личному сообщению, перечисленные через запятую. Каждое прикрепление представлено в формате:
  • photo — фотография;
  • video — видеозапись;
  • audio — аудиозапись;
  • doc — документ;
  • wall — запись на стене;
  • market — товар.
  • poll — опрос.

— идентификатор владельца медиавложения (обратите внимание, если объект находится в сообществе, этот параметр должен быть отрицательным).
— идентификатор медиавложения.

Параметр является обязательным, если не задан параметр message.

В случае, если прикрепляется объект, принадлежащий другому пользователю следует добавлять к вложению его access_key в формате _ _ , Например:

Играюсь с ботостроением и решил отправить сообщение в беседу, делаю такой код:

Но на выходе получаю:

Назначал группу администратором беседы, давал доступ к переписке полный, пробовал отправлять вместе с peer_id , пробовал без chat_id — результат один и тот же.

Не могу понять что за зверь такой этот peer_id

Сделал тестовую группу, отправляю ботом от нее сообщение и получаю такой объект сообщения:

Тут все логично, но как только пользователь отправляет сообщение группе, то peer_ >

Это такой баг или фича?

  • Вопрос задан 07 июл. 2019
  • 282 просмотра

peer_id — идентификатор назначения.

У вас не правильное понимание этого параметра:
from_id — тот кто совершил отправку сообщения(инициатор)
peer_id — в какой диалог было отправлено сообщение.

Вы получаете сообщения для сообщества, соответственно в peer_id хранится диалог сообщества с указанным пользователем/беседой.

Откройте свои диалоги в сообществе.
Там могут быть как беседы так и переписки с определенными пользователями.
Это и является peer_id

А вот кто отправил сообщение в диалог, тот уже from_id
from_id

Источник: teh-fed.ru

reply_to have to be message from same chat (Как боту ответить на сообщение?) #224

The text was updated successfully, but these errors were encountered:

Contributor
BrokenFG commented Jan 30, 2019

conversation_message_id это не тоже самое, что message_id, который нужен вам. Так же могу вас разочаровать, группы не получают message_id, для них его не хранят, тобишь в беседе вы никогда не сможете переслать какое-либо сообщение

Contributor
ALEXREDX commented Feb 3, 2019

image

python273 closed this as completed Feb 3, 2019
Lephin commented Aug 22, 2019

Как грустно все это. Хорошо, что нашел эту статью. А то я несколько дней искал и пытался понять, что я делаю не так. Спасибо!

muxui commented Feb 21, 2020
altbrace commented Apr 8, 2020

Год прошел, а проблема осталась.

dan0nchik commented Apr 22, 2020

2020 уже, а бот все еще не может отвечать в беседах

Sergey-Volchkov commented Apr 23, 2020

Не знаю с чем у вас проблема, ребят. Если пишете бота, работающего от имени группы, то нужно настроить везде доступы + сделать бота админом.
Если пишете бота, который отвечает от страницы пользователя, то сделайте отправку на peer_id
В видео пример корректного, рабочего кода: https://www.youtube.com/watch?v=gsSZ7VPlkKs

dan0nchik commented Apr 23, 2020
edwardgushchin commented Apr 23, 2020

Вместо user_id вставляйте peer_id беседы, и бот ответит в беседу

dan0nchik commented Apr 24, 2020

Еще по теме:  Идеи для фотосессий Вконтакте

А бот может писать в беседе? У меня настроен везде доступ, админка ему дана в беседе, но отвечает в личные сообщения

Вместо user_id вставляйте peer_id беседы, и бот ответит в беседу

bxkr commented Sep 28, 2020

image

Хорошие новости, если мне правдиво ответили:

Ждём 5.125, или что-то в этом роде.

kirillbiktya commented Nov 29, 2021

Прошло больше года, а проблема так и не решена.

Библиотеку не использовал, на обычных requests, но сам факт.

Stirven13 commented Dec 25, 2021

До сих пор не исправили, сейчас проверил. Осталось месяц подождать до годовщины ошибки и будет два года.

DragonGamees commented May 14, 2022

Вроде как есть способ. По крайней мере у меня работает. В методе vk.messages.send есть метод forward, вот через него можно и переслать сообщение:

import vk_api import json from vk_api.bot_longpoll import VkBotLongPoll vk_session = vk_api.VkApi(token=’мой токен’) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, ‘айди моей группы’) for event in longpoll.listen(): if event.from_chat and event.obj.text.lower() == ‘Привет’: fwdmsg = vk.messages.send( chat_id=event.chat_id, random_id=get_random_id(), message=’Привет!’, forward=json.dumps(fwdmsg) )

Если нужно переслать сообщение, то «reply_to» ставим в 0. Тогда можно пересылать несколько сообщений.

owoPeef commented Aug 4, 2022

Уже прошло больше 2-х лет, а так и не сделали, но спасибо тебе за это! (сам пытался сделать через forward, вообще не получалось)

Den473321 commented Feb 12, 2023

пошло 4 года, интересно, решил ли он проблему?)

dan0nchik commented Feb 12, 2023

пошло 4 года, интересно, решил ли он проблему?)

лет через 10 пофиксят )

DragonGamees commented Feb 13, 2023 •

Скорее всего и не исправят, останется только тот способ, что я выше написал

DragonGamees commented Feb 19, 2023

Хах, мой код уже не умеет отвечать на сообщения, только пересылать их. VK очень классная контора.

Den473321 commented Feb 19, 2023

а как ты пересылаешь их? я так и не разобрался

DragonGamees commented Feb 19, 2023 •

Вот кусок кода, он по идее отвечает и пересылает на любое сообщение в беседе и в личном сообщении, но сейчас почему то он только пересылает. Версия API 5.95.

from random import randint from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType vk_session = vk_api.VkApi(token=’КЛЮЧ СООБЩЕСВА’) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, «ИД СООБЩЕСВА») for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: vk.messages.send( peer_id=event.obj.peer_id, random_id=randint(-2147483648, 2147483647), message=’reply_to 1′, forward = json.dumps() ) vk.messages.send( peer_id=event.obj.peer_id, random_id=randint(-2147483648, 2147483647), message=’reply_to 0′, forward = json.dumps() )

Снимок экрана 2023-02-19 222237

Пример работы кода

Если нужно только в личных сообщениях, есть другой код, где все работает
Если нужно можешь обращаться

Den473321 commented Feb 20, 2023

Вот кусок кода, он по идее отвечает и пересылает на любое сообщение в беседе и в личном сообщении, но сейчас почему то он только пересылает. Версия API 5.95.

from random import randint from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType vk_session = vk_api.VkApi(token=’КЛЮЧ СООБЩЕСВА’) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, «ИД СООБЩЕСВА») for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: vk.messages.send( peer_id=event.obj.peer_id, random_id=randint(-2147483648, 2147483647), message=’reply_to 1′, forward = json.dumps() ) vk.messages.send( peer_id=event.obj.peer_id, random_id=randint(-2147483648, 2147483647), message=’reply_to 0′, forward = json.dumps() )

Снимок экрана 2023-02-19 222237

Пример работы кода

Если нужно только в личных сообщениях, есть другой код, где все работает
Если нужно можешь обращаться

да, в личных сообщениях я умею, а вот пересылать не понял как. Спасибо

DragonGamees commented Feb 21, 2023

Все, я разобрался, мне тех поддержка помогла, в моем коде была ошибка froward принимает is_reply
Вот полностью рабочий код

from random import randint from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType vk_session = vk_api.VkApi(token=’КЛЮЧ СООБЩЕСВА’) vk = vk_session.get_api() longpoll = VkBotLongPoll(vk_session, «ИД СООБЩЕСВА») for event in longpoll.listen(): if event.type == VkBotEventType.MESSAGE_NEW: vk.messages.send( peer_id=event.obj.peer_id, random_id=randint(-2147483648, 2147483647), message=’is_reply 1′, forward = json.dumps() ) vk.messages.send( peer_id=event.obj.peer_id, random_id=randint(-2147483648, 2147483647), message=’is_reply 0′, forward = json.dumps() )

Вообще судя по всему использовать этот код, так как он работает и в личных и в беседах

Источник: github.com

Рейтинг
( Пока оценок нет )
Загрузка ...