Vk метод опубликовать запись в страницу VK группе?
Проблема такова юзаю библиотеку simplevk-master для VK и библиотеку telelibonphp-master для TG.
Стараюсь сделать бота который репостить записи с канала TG на группу VK на стенку.
wall.post нашёл метод но он от имени пользователя а есть ли способ юзать методику от сообщества?
<?php require_once 'telelibonphp-master/tgLib.php'; //Подключаем библиотеку TG require_once "simplevk-master/autoload.php"; //Подключаем библиотеку VK use DigitalStarvk_apivk_api; $data = json_decode(file_get_contents('php://input'),true); $platform = ''; $vk1 = vk_api::create('VK', '5.131')->setConfirm('5e1fbbaf'); $vk = new tgBot('TG'); $message = $data['callback_query']['message']['text'] ?? $data['message']['text'] ?? null; $peer_id = $data['callback_query']['message']['chat']['id'] ?? $data['message']['chat']['id'] ?? null; $user_id = $data['callback_query']['message']['from']['id'] ?? $data['message']['from']['id'] ?? null; $payload = $data['callback_query']['data']; $platform = 'tg'; $command = explode(' ', mb_strtolower($message)); // Обработка команд if ($command[0] == 'время') { $date = date('d.m.y H:i:s'); $vk->sendMessage($peer_id, "Серверное время: $date"); exit; } if ($command[0] == 'инфо') { $vk->sendMessage($peer_id, "Я бот и я умею работать в ВК и Телеграмм"); exit; } if ($command[0] == 'кнопка') { if ($platform == 'vk'){ // Если событие из вк // Кнопка ВК $started = $vk->buttonText('Нажми меня', 'green', ['command' => 'play']); $kbd = [[$started]]; } else { // Иначе вставляем кнопку для телеги // Кнопка TG $kbd = [ 'inline_keyboard' => [ [['text' => 'Нажми меня', 'callback_data' => 'play']] ] ]; } $vk->sendButton($peer_id, "Держи кнопку, но знай, она отличается от выбраного месенджера", $kbd); exit; } if ($payload == 'play'){ $vk->sendMessage($peer_id, "Ты нажал кнопку и я выполяю на это какое-то событие..."); exit; } //$vk1->request('messages.send', ['message' => 'Привет', 'user_id' => 384904677]); |
<?php require_once 'telelibonphp-master/tgLib.php'; //Подключаем библиотеку TG require_once "simplevk-master/autoload.php"; //Подключаем библиотеку VK use DigitalStarvk_apivk_api; $data = json_decode(file_get_contents('php://input'),true); $platform = ''; $vk1 = vk_api::create('VK', '5.131')->setConfirm('5e1fbbaf'); $vk = new tgBot('TG'); $message = $data['callback_query']['message']['text'] ?? $data['message']['text'] ?? null; $peer_id = $data['callback_query']['message']['chat']['id'] ?? $data['message']['chat']['id'] ?? null; $user_id = $data['callback_query']['message']['from']['id'] ?? $data['message']['from']['id'] ?? null; $payload = $data['callback_query']['data']; $platform = 'tg'; $command = explode(' ', mb_strtolower($message)); // Обработка команд if ($command[0] == 'время') { $date = date('d.m.y H:i:s'); $vk->sendMessage($peer_id, "Серверное время: $date"); exit; } if ($command[0] == 'инфо') { $vk->sendMessage($peer_id, "Я бот и я умею работать в ВК и Телеграмм"); exit; } if ($command[0] == 'кнопка') { if ($platform == 'vk'){ // Если событие из вк // Кнопка ВК $started = $vk->buttonText('Нажми меня', 'green', ['command' => 'play']); $kbd = [[$started]]; } else { // Иначе вставляем кнопку для телеги // Кнопка TG $kbd = [ 'inline_keyboard' => [ [['text' => 'Нажми меня', 'callback_data' => 'play']] ] ]; } $vk->sendButton($peer_id, "Держи кнопку, но знай, она отличается от выбраного месенджера", $kbd); exit; } if ($payload == 'play'){ $vk->sendMessage($peer_id, "Ты нажал кнопку и я выполяю на это какое-то событие..."); exit; } //$vk1->request('messages.send', ['message' => 'Привет', 'user_id' => 384904677]);
Дополнительно:
Не совсем понятно, что именно надо. Публиковать от имени сообщества или сообщество должно публиковать пост? Метод понятен https://api.vk.com/method/wall.post
Я Вам на Python, можете на любой язык переделать, это несложно
1. Добавляем в инициализации params - "from_group": 1
# Инициализация params params = { "access_token": ВАШ_ТОКЕН_ПОЛЬЗОВАТЕЛЯ, "v": "5.131", "owner_id": "-идентификатор группы", "message": что-то там, "from_group": 1, # пост от имени группы, если поставить 0 то будет от имени пользователя. } |
# Инициализация params params = { "access_token": ВАШ_ТОКЕН_ПОЛЬЗОВАТЕЛЯ, "v": "5.131", "owner_id": "-идентификатор группы", "message": что-то там, "from_group": 1, # пост от имени группы, если поставить 0 то будет от имени пользователя. }
2. Если вы хотите юзать wall.post с токеном сообщества, то метод работать не будет.
- Фрагменты кода надо размещать в виде текста и оборачивать тэгом code для корректного отображения. Удобно делать кнопкой </>
Это обязательно, см.п.3.8 Регламента.
Сюда же относится traceback, ввод и вывод в консоли и другая структурированная текстовая инфа. - Алан Гибизов, спасибо:)
Ответы:
Да , способ есть
Прочитать документацию по методу и обнаружить параметр from_group
- Мне требуется не использовать токен пользователя а использовать токен группы VK.
- Айнур Бирдин, в документации сказано что метод работает с токеном юзера. Вы не можете создавать запись на стенах без авторизации юзера. А вот при авторизации юзером - можете писать от имени группы
- Айнур Бирдин, С токеном группы не получится публиковать посты в группе вк. Работает wall.post метод только с токеном пользователя который получен через способ Implicit Flow.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы опубликовать запись на стене группы VK через API, необходимо выполнить следующие шаги:
1. Получить ключ доступа (access token) для работы с API VK. Для этого необходимо зарегистрировать приложение на сайте разработчиков VK и получить access token с правами на доступ к группам.
2. Определить идентификатор группы VK, на стене которой вы хотите опубликовать запись.
3. Сформировать запрос к методу wall.post API VK, передав необходимые параметры, такие как идентификатор группы, текст записи, прикрепленные файлы (если нужно), и т.д.
Пример кода на PHP для публикации записи на стене группы VK:
$access_token = 'your_access_token'; $group_id = 'your_group_id'; $message = 'Your message here'; $request_params = array( 'owner_id' => '-' . $group_id, 'from_group' => '1', 'message' => $message, 'access_token' => $access_token, 'v' => '5.131' ); $url = 'https://api.vk.com/method/wall.post?' . http_build_query($request_params); $response = file_get_contents($url);
Замените 'your_access_token' на ваш access token, 'your_group_id' на идентификатор вашей группы VK и 'Your message here' на текст вашей записи. После выполнения этого кода, запись должна быть опубликована на стене указанной группы.
Убедитесь, что ваше приложение имеет необходимые права для публикации записей на стенах групп VK. В случае возникновения проблем, проверьте правильность передаваемых параметров и наличие необходимых разрешений у вашего приложения.