Форум программистов, компьютерный форум, киберфорум
PHP: API, боты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для worldandlife
629 / 41 / 25
Регистрация: 25.04.2017
Сообщений: 513

Не отправляется картинка бот VK

03.02.2019, 20:58. Показов 1408. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пытаюсь написать бота вконтакте и такая проблема:
Бот не отвечает если раскомментировать строку $photo = _bot_uploadPhoto($user_id, BOT_IMAGES_DIRECTORY.'/cat.jpeg');
Если закомментировать и убрать $attachments из vkApi_messagesSend, то бот отвечает. В чем может быть проблема?

bot.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
 
function bot_sendMessage($user_id) {
  $users_get_response = vkApi_usersGet($user_id);
  $user = array_pop($users_get_response);
  $msg = "Привет, {$user['first_name']}!";
 
 $photo = _bot_uploadPhoto($user_id, BOT_IMAGES_DIRECTORY.'/cat.jpeg');
 /*
  $voice_message_file_name = yandexApi_getVoice($msg);
  $doc = _bot_uploadVoiceMessage($user_id, $voice_message_file_name);*/
 
  $attachments = array(
    'photo'.$photo['owner_id'].'_'.$photo['id'],
    'doc'.$doc['owner_id'].'_'.$doc['id'],
  );
 
  vkApi_messagesSend($user_id, $msg);
}
 
 function _bot_uploadPhoto($user_id, $file_name) {
  $upload_server_response = vkApi_photosGetMessagesUploadServer($user_id);
  $upload_response = vkApi_upload($upload_server_response['upload_url'], $file_name);
 
  $photo = $upload_response['photo'];
  $server = $upload_response['server'];
  $hash = $upload_response['hash'];
 
  $save_response = vkApi_photosSaveMessagesPhoto($photo, $server, $hash);
  $photo = array_pop($save_response);
 
  return $photo;
}
/*
function _bot_uploadVoiceMessage($user_id, $file_name) {
  $upload_server_response = vkApi_docsGetMessagesUploadServer($user_id, 'audio_message');
  $upload_response = vkApi_upload($upload_server_response['upload_url'], $file_name);
 
  $file = $upload_response['file'];
 
  $save_response = vkApi_docsSave($file, 'Voice message');
  $doc = array_pop($save_response);
 
  return $doc;
}
 */


vk_api.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<?php
 
define('VK_API_VERSION', '5.67'); //Используемая версия API
define('VK_API_ENDPOINT', 'https://api.vk.com/method/');
 
function vkApi_messagesSend($peer_id, $message, $attachments = array()) {
  return _vkApi_call('messages.send', array(
    'peer_id'    => $peer_id,
    'message'    => $message,
    'attachment' => implode(',', $attachments)
  ));
}
 
function vkApi_usersGet($user_id) {
  return _vkApi_call('users.get', array(
    'user_id' => $user_id,
  ));
}
 
function vkApi_photosGetMessagesUploadServer($peer_id) {
  return _vkApi_call('photos.getMessagesUploadServer', array(
    'peer_id' => $peer_id,
  ));
}
 
function vkApi_photosSaveMessagesPhoto($photo, $server, $hash) {
  return _vkApi_call('photos.saveMessagesPhoto', array(
    'photo'  => $photo,
    'server' => $server,
    'hash'   => $hash,
  ));
}
 
function vkApi_docsGetMessagesUploadServer($peer_id, $type) {
  return _vkApi_call('docs.getMessagesUploadServer', array(
    'peer_id' => $peer_id,
    'type'    => $type,
  ));
}
 
function vkApi_docsSave($file, $title) {
  return _vkApi_call('docs.save', array(
    'file'  => $file,
    'title' => $title,
  ));
}
 
function _vkApi_call($method, $params = array()) {
  $params['access_token'] = VK_API_ACCESS_TOKEN;
  $params['v'] = VK_API_VERSION;
 
  $query = http_build_query($params);
  $url = VK_API_ENDPOINT.$method.'?'.$query;
 
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  $json = curl_exec($curl);
  $error = curl_error($curl);
  if ($error) {
    log_error($error);
    throw new Exception("Failed {$method} request");
  }
 
  curl_close($curl);
 
  $response = json_decode($json, true);
  if (!$response || !isset($response['response'])) {
    log_error($json);
    throw new Exception("Invalid response for {$method} request");
  }
 
  return $response['response'];
}
 
function vkApi_upload($url, $file_name) {
  if (!file_exists($file_name)) {
    throw new Exception('File not found: '.$file_name);
  }
 
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_POSTFIELDS, array('file' => new CURLfile($file_name)));
  $json = curl_exec($curl);
  $error = curl_error($curl);
  if ($error) {
    log_error($error);
    throw new Exception("Failed {$url} request");
  }
 
  curl_close($curl);
 
  $response = json_decode($json, true);
  if (!$response) {
    throw new Exception("Invalid response for {$url} request");
  }
 
  return $response;
}

index.php
Кликните здесь для просмотра всего текста
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
 
define('CALLBACK_API_EVENT_CONFIRMATION', 'confirmation');
define('CALLBACK_API_EVENT_MESSAGE_NEW', 'message_new');
 
require_once 'config.php';
require_once 'global.php';
 
require_once 'api/vk_api.php';
 
require_once 'bot/bot.php';
 
if (!isset($_REQUEST)) {
  exit;
}
 
callback_handleEvent();
 
function callback_handleEvent() {
  $event = _callback_getEvent();
 
  try {
    switch ($event['type']) {
      //Подтверждение сервера
      case CALLBACK_API_EVENT_CONFIRMATION:
        _callback_handleConfirmation();
        break;
 
      //Получение нового сообщения
      case CALLBACK_API_EVENT_MESSAGE_NEW:
        _callback_handleMessageNew($event['object']);
        break;
 
      default:
        _callback_response('Unsupported event');
        break;
    }
  } catch (Exception $e) {
    log_error($e);
  }
 
  _callback_okResponse();
}
 
function _callback_getEvent() {
  return json_decode(file_get_contents('php://input'), true);
}
 
function _callback_handleConfirmation() {
  _callback_response(CALLBACK_API_CONFIRMATION_TOKEN);
}
 
function _callback_handleMessageNew($data) {
  $user_id = $data['user_id'];
  bot_sendMessage($user_id);
  _callback_okResponse();
}
 
function _callback_okResponse() {
  _callback_response('ok');
}
 
function _callback_response($data) {
  echo $data;
  exit();
}

P.S.
Бот не отвечает если раскомментировать строку
Сообщения почему то приходят не один раз, а будто в цикле через некоторые промежутки времени
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.02.2019, 20:58
Ответы с готовыми решениями:

Отправка html версии письма с картинкой (картинка не отправляется)
Всем привет) Нужно сделать отправку html версии письма с картинкой, но картинка не отправляется.. где ошибка? $subj = &quot;Письмо с...

Не отправляется текст, но отправляется вложение
Не показывается текст mail php, а вложение идет. Вот мой код, приходит вложенный файл, но не приходит текст( if ( isset($_POST) ) { ...

Нужно, чтобы картинка на сайте растягивалась под размер экрана, как это сделать ? (Пропорционально, картинка высокого расширения и качества)
binding text

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.02.2019, 20:58
Помогаю со студенческими работами здесь

По таймеру плавно появлялась картинка в pictureBox, затем исчезала, и через минуту появлялась другая картинка
Здравствуйте, пожалуйста, подскажите, как сделать в проекте на c# чтобы по таймеру плавно появлялась картинка в pictureBox, затем плавно...

Есть сайт на Jommla 1.7. В нем сбоку модуль (блок). В этом модуле есть картинка. Как сделать так, чтобы автоматически обновлялась только картинка?
http://stost.ru/ny/ny.php - вот картинка, может, кому пригодится) типа сколько до НГ осталось)

При нажатии на кнопку должна отображатся другая картинка ,при повторном нажатии снова первая картинка
На html языке отобразить картинку и кнопку.При нажатии на кнопку должна отображатся другая картинка ,при повторном нажатии снова первая...

Не отправляется письмо
День добрый. есть такой код: if (isset($_POST)) { mail(&quot;adr@inbox.ru&quot;, &quot;the subject&quot;, &quot;Example message&quot;,&quot;From:...

Не отправляется форма
Код: &lt;?php include ('head.php'); ?&gt; &lt;body&gt; &lt;div id=&quot;wrapper&quot;&gt; &lt;div id=&quot;header&quot;&gt; &lt;?php include ('logo.php'); ?&gt; &lt;/div&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru