Бот должен пересылать личное сообщение от одного пользователя другому. Простое сообщение отправляется без каких-либо ошибок.
А вот ошибка заключается, в том, что сервер не отправляет приложение к сообщению (в моем случае это фотография). Примечательно, что это зависит от того, с какой страницы отправляется запрос — если это та страница, с которой был выдан ключ-доступа к сообщениям, то все нормально работает и картинка пересылается, а вот со всех остальных страниц — нет. То есть проблема вряд ли должна быть связана с кодом, скорее всего с какими-то правами. API используется последнее, самое актуальное. Вот код ошибки целиком
- One of the parameters specified was missing or invalid: message is empty or invalid. request_params = {‘v’:
‘5.103’, ‘method’: ‘messages.send’, ‘oauth’: ‘1’, ‘random_id’: ‘0’, ‘attachment’:
‘photo582248194_457239051_63093a408ca6ab8d48’, ‘user_id’: ‘мой айди’}
message = str(data['message']['text'])
if data['message']['attachments']==[]:
attachment = []
else:
attach = data['message']['attachments'][0]
attach_type = attach['type']
attachment = "{0}{1}_{2}_{3}".format(
attach_type,
attach[attach_type]['owner_id'],
attach[attach_type]['id'],
attach[attach_type]['access_key']
)
# Отправка
vkapi.send_message(user_id, token, message, attachment)
Может быть у кого-то была похожая проблема? Поддержка вк не отвечает нормально)
Спасибо заранее!
Здравствуйте! Есть код, бот должен по идее отмечать сообщения прочитанными:
$vk->request('messages.markAsRead', ['message_ids' => $msg_id, 'peer_id' => $peer_id]);
Но почему-то получаю эрроры:
[Exception]: возникла ошибка:
[Exception]: текст: {«error»:{«error_code»:100,»error_msg»:»One of the parameters specified was missing or invalid: message is empty or invalid»,»request_params»:[{«key»:»method»,»value»:»messages.send»},{«key»:»oauth»,»value»:»1″},{«key»:»peer_id»,»value»:»476598060″},{«key»:»v»,»value»:»5.103″},{«key»:»random_id»,»value»:»1344668602″}]}}
[Exception]: код ошибки: 100
[Exception]: файл: /home/бла/бла/бла/public_html/test/simplevk-master/src/vk_api.php:223
[Exception]: путь ошибки: #0 /home/бла/бла/бла/public_html/test/simplevk-master/src/vk_api.php(392): DigitalStar\vk_api\vk_api->request(‘messages.send’, Array)
#1 /home/бла/бла/бла/public_html/test/bot.php(98): DigitalStar\vk_api\vk_api->sendMessage(‘476598060’, »)
#2 {main}
Даже пробовал так:
$vk->request('messages.markAsRead', ['message_ids' => $msg_id, 'peer_id' => 'ID группы']);
Подскажите, почему бот не хочет отмечать сообщения прочитаннымии ругается. Версия апи 5.103
Бот должен пересылать личное сообщение от одного пользователя другому. Простое сообщение отправляется без каких-либо ошибок.
А вот ошибка заключается, в том, что сервер не отправляет приложение к сообщению (в моем случае это фотография). Примечательно, что это зависит от того, с какой страницы отправляется запрос — если это та страница, с которой был выдан ключ-доступа к сообщениям, то все нормально работает и картинка пересылается, а вот со всех остальных страниц — нет. То есть проблема вряд ли должна быть связана с кодом, скорее всего с какими-то правами. API используется последнее, самое актуальное. Вот код ошибки целиком
- One of the parameters specified was missing or invalid: message is empty or invalid. request_params = {‘v’:
‘5.103’, ‘method’: ‘messages.send’, ‘oauth’: ‘1’, ‘random_id’: ‘0’, ‘attachment’:
‘photo582248194_457239051_63093a408ca6ab8d48’, ‘user_id’: ‘мой айди’}
message = str(data['message']['text'])
if data['message']['attachments']==[]:
attachment = []
else:
attach = data['message']['attachments'][0]
attach_type = attach['type']
attachment = "{0}{1}_{2}_{3}".format(
attach_type,
attach[attach_type]['owner_id'],
attach[attach_type]['id'],
attach[attach_type]['access_key']
)
# Отправка
vkapi.send_message(user_id, token, message, attachment)
Может быть у кого-то была похожая проблема? Поддержка вк не отвечает нормально)
Спасибо заранее!
What did you do?
async function uploadPhoto(title, urlList) { const photoList = urlList.map(link=> { return {value: link}; }); const response = await vk.upload.photoAlbum({ album_id: (await Album.getAlbums()).find(a=>a.title.startsWith(title)).id, source: { values: photoList } }); return response; }; uploadPhoto('albumName', ['img url'])
What did you expect to happen?
Загрузка фотографии в альбом
What was the actual result?
Пустое значение { key: 'photos_list', value: '' }
APIError: Code №100 - One of the parameters specified was missing or invalid: photos_list is invalid at SequentialWorker.execute (D:devvknode_modulesvk-iolibindex.js:1440:39) at processTicksAndRejections (internal/process/task_queues.js:97:5) { code: 100, params: [ { key: 'method', value: 'photos.save' }, { key: 'oauth', value: '1' }, { key: 'v', value: '5.122' }, { key: 'album_id', value: '276855811' }, { key: 'server', value: '856316' }, { key: 'photos_list', value: '' }, { key: 'aid', value: '276855811' }, { key: 'hash', value: 'e00ad5dbaa6dbf172e4da706518ec17d' } ] }
Additional Info
photoList содержит
[ { value: 'https://sun9-59.userapi.com/impf/ПРАВИЛЬНУЮ__ССЫЛКУ.jpg' } ]
Versions
package | version |
---|---|
vk-io |
4.0.2 |
node |
12.18.3 |
npm |
6.14.6 |
Перейти к содержанию
VK API Error Code – Коды ошибок Вконтакте
Список всех возвращаемых кодов ошибок API в ВК
Код ошибки | Описание |
---|---|
1 | Произошла неизвестная ошибка. Попробуйте повторить запрос позднее. |
2 | Приложение выключено. Нужно включить приложение в настройках https://vk.com/editapp?id={Ваш API_ID} или воспользоваться тестовым режимом (test_mode=1) |
3 | Передан неизвестный метод. Нужно проверить указано ли название вызываемого метода: https://vk.com/dev/methods. |
4 | Неверная подпись. |
5 | Авторизация пользователя не удалась. Следует убедиться, что используется верная схема авторизации. |
6 | Слишком много запросов в секунду. Нужно задать больший интервал между запросами или использовать метод execute. Узнать подробнее об ограничениях на частоту вызовов можно тут: https://vk.com/dev/api_requests. |
7 | Нет прав для выполнения этого действия. Следует проверить, получены ли необходимые права доступа при авторизации. Сделать это можно с помощью метода account.getAppPermissions. |
8 | Неверный запрос. Нужно проверить синтаксис запроса и список параметров, которые используются. |
9 | Слишком много однотипных действий. Нужно уменьшить число однотипных обращений. Для оптимизации работы можно использовать execute или JSONP. |
10 | Произошла внутренняя ошибка сервера. Попробуйте повторить запрос позже. |
11 | В тестовом режиме приложение должно быть выключено или пользователь должен быть залогинен. Следует выключить приложение в настройках https://vk.com/editapp?id={Ваш API_ID} |
14 | Требуется ввод кода с картинки (Captcha). Процесс обработки этой ошибки подробно описан на странице. |
15 | Доступ запрещён. Следует убедиться, что используются верные идентификаторы, а также, что доступ к запрашиваемому контенту для текущего пользователя есть в полной версии сайта. |
16 | Требуется выполнение запросов по протоколу HTTPS, т.к. пользователь включил настройку, требующую работу через безопасное соединение. Во избежание возникновения этой ошибки, в Standalone-приложении можно предварительно проверять состояние этой настройки у пользователя методом account.getInfo. |
17 | Требуется валидация пользователя. Действие требует подтверждения — нужно перенаправить пользователя на служебную страницу для валидации. |
18 | Страница удалена или заблокирована. Страница пользователя была удалена или заблокирована |
20 | Данное действие запрещено для не Standalone приложений. Если ошибка появляется несмотря на то, что приложение имеет тип Standalone, следует убедиться, что при авторизации было использовано redirect_uri=https://oauth.vk.com/blank.html. Подробнее на странице: https://vk.com/dev/auth_mobile. |
21 | Данное действие разрешено только для Standalone и Open API приложений. |
23 | Метод был выключен. Ознакомиться со всеми актуальными методами ВК API, доступными в настоящий момент можно тут: https://vk.com/dev/methods. |
24 | Требуется подтверждение со стороны пользователя. |
27 | Ключ доступа сообщества недействителен. |
28 | Ключ доступа приложения недействителен. |
29 | Достигнут количественный лимит на вызов метода. Узнать подробнее об ограничениях на количество вызовов можно тут: https://vk.com/dev/data_limits |
30 | Профиль является приватным. Информация, которая запрашивается о профиле, недоступна с используемым ключом доступа |
33 | Еще не реализовано. |
100 | Один из необходимых параметров был не передан или неверен. Следует проверить список требуемых параметров и их формат на странице с описанием метода. |
101 | Неверный API ID приложения. Нужно найти приложение в списке администрируемых на странице, и указать в запросе правильный API_ID (идентификатор приложения). |
113 | Неверный идентификатор пользователя. Следует убедиться, что используется правильный идентификатор. Получить ID по короткому имени можно методом utils.resolveScreenName. |
150 | Неверный timestamp (метка времени). Актуальное значение можно получить методом utils.getServerTime. |
200 | Доступ к альбому запрещён. Нужно убедиться, что используются верные идентификаторы (для пользователей owner_id — положительный, для сообществ — отрицательный), и доступ к контенту, которые запрашивается, для текущего пользователя есть в полной версии сайта. |
201 | Доступ к аудио запрещён. Нужно убедиться, что используются верные идентификаторы (для пользователей owner_id — положительный, для сообществ — отрицательный), и доступ к контенту, которые запрашивается, для текущего пользователя есть в полной версии сайта. |
203 | Доступ к группе запрещён. Нужно убедиться, что текущий пользователь является участником или руководителем группы (для закрытых и частных групп и встреч). |
300 | Альбом переполнен. Перед продолжением работы нужно удалить лишние объекты из альбома или использовать другой альбом. |
500 | Действие запрещено. Вы должны включить переводы голосов в настройках приложения. Следует проверить настройки приложения: https://vk.com/editapp?id={Ваш API_ID}§ion=payments |
600 | Нет прав на выполнение данных операций с рекламным кабинетом. |
603 | Произошла ошибка при работе с рекламным кабинетом. |
3300 | Требуется рекапча. |
3301 | Требуется подтверждение телефона. |
3302 | Требуется подтверждение пароля. |
3303 | Требуется проверка приложения Otp. |
3304 | Требуется подтверждение по электронной почте. |
3305 | Требуется утвердить голоса. |
KvaksManYT 1 / 0 / 1 Регистрация: 07.08.2018 Сообщений: 80 |
||||
1 |
||||
18.11.2019, 20:44. Показов 16912. Ответов 3 Метки python, web api (Все метки)
писал бота для ВК
выдаёт ошибку: Код привет Traceback (most recent call last): File "H:/Users/Admin/Desktop/del/python/vk_bot/vk_bot.py", line 33, in <module> write_msg(event.user_id, "Хай") File "H:/Users/Admin/Desktop/del/python/vk_bot/vk_bot.py", line 5, in write_msg vk.method('messages.send', {'user_id': user_id, 'message': message}) File "F:Pythonlibsite-packagesvk_apivk_api.py", line 646, in method raise error vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: random_id is a required parameter
__________________ 0 |
Бьюсь о грабли, не пойму где они
Выдает такой документ:
Код: Выделить всё
This XML file does not appear to have any style information associated with it. The document tree is shown below.<error><error_code>100</error_code><error_msg>One of the parameters specified was missing or invalid: photos_list is invalid</error_msg><request_params list="true"><param><key>oauth</key><value>1</value></param><param><key>method</key><value>photos.save.xml</value></param><param><key>server</key><value>316216</value></param><param><key>gid</key><value>57370658</value></param><param><key>aid</key><value>178554524</value></param><param><key>photo</key><value>[{"photo":"673fc968ed:z","sizes":[["s","316216621","b074","tr4_U3VYzlQ",75,56],["m","316216621","b075","kLkenyFHMPI",130,97],["x","316216621","b076","3jEY5QIrhy0",604,453],["y","316216621","b077","b2S2YXSwR8o",807,605],["z","316216621","b078","m8SUuO-1ZBo",1024,768],["o","316216621","b079","SvlNfBygyHw",130,98],["p","316216621","b07a","ND9l4SOlN0c",200,150],["q","316216621","b07b","ZVKsY1e44Yw",320,240],["r","316216621","b07c","AVHLE3Q-7Ns",510,383]],"kid":"774d4453523eced272351d755b64ae29"}]</value></param><param><key>hash</key><value>*****</value></param><param><key>access_token</key><value>******</value></param></request_params></error>
Сам код на c#:
Код: Выделить всё
System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; System.Net.WebRequest post_request2 = System.Net.WebRequest.Create("https://api.vkontakte.ru/method/photos.getUploadServer?gid=57370658&aid=178554524&access_token=" + Settings1.Default.token); System.Net.WebResponse post_request_response2 = post_request2.GetResponse(); System.IO.Stream post_request_stream2 = post_request_response2.GetResponseStream(); System.IO.StreamReader post_request_stream_reader2 = new System.IO.StreamReader(post_request_stream2); string post_request_answer2 = post_request_stream_reader2.ReadToEnd(); string[] words_empty = post_request_answer2.Split('"'); string s = words_empty[5]; s = s.Replace("\/", "/"); s = s.Replace("\/", "/"); s = s.Replace("\/", "/"); //отправка файла на полученый сервер NameValueCollection nvc = new NameValueCollection(); //nvc.Add("user", "user"); //nvc.Add("passwd", "passwd"); string s9; s9 = HttpUploadFile(s, @"C:1.jpg", "photo", "image/jpeg", nvc); char[] delimiterChars = { ':', ',' }; string[] parameters = s9.Split(delimiterChars); string server = parameters[1]; char[] delimiterChars2 = { ':' }; string[] parameters2 = s9.Split(delimiterChars2); string hash = parameters2[8]; char[] delimiterChars3 = { '"' }; string[] parameters3 = hash.Split(delimiterChars3); hash = parameters3[1]; string photo = s9.Substring(s9.IndexOf("photo") + 14, s9.IndexOf("aid") - s9.IndexOf("photo") - 17); MessageBox.Show(photo); photo = photo.Replace("\"", """); //сохранение фотографии на сервере string url3 = "https://api.vk.com/method/photos.save.xml?server=" + server + "&gid=57370658" + "&aid=178554524" + "&photo=" + HttpUtility.UrlEncode(photo) + "&hash=" + hash + "&access_token=" + Settings1.Default.token; textBox3.Text = textBox3.Text + " ---------- " + url3; System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; System.Net.WebRequest post_request3 = System.Net.WebRequest.Create(url3); System.Net.WebResponse post_request_response3 = post_request3.GetResponse(); System.IO.Stream post_request_stream3 = post_request_response3.GetResponseStream(); System.IO.StreamReader post_request_stream_reader3 = new System.IO.StreamReader(post_request_stream3); string post_request_answer3 = post_request_stream_reader3.ReadToEnd();
функция отправки файла:
Код: Выделить всё
public static string HttpUploadFile(string url, string file, string paramName, string contentType, NameValueCollection nvc) { Console.WriteLine(string.Format("Uploading {0} to {1}", file, url)); string boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x"); byte[] boundarybytes = System.Text.Encoding.ASCII.GetBytes("rn--" + boundary + "rn"); HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url); //wr.ContentType = "multipart/form-data; boundary=" + boundary; wr.ContentType = "multipart/form-data; boundary=" + boundary; wr.Method = "POST"; wr.KeepAlive = true; wr.Credentials = System.Net.CredentialCache.DefaultCredentials; Stream rs = wr.GetRequestStream(); string formdataTemplate = "Content-Disposition: form-data; name="{0}"rnrn{1}"; foreach (string key in nvc.Keys) { rs.Write(boundarybytes, 0, boundarybytes.Length); string formitem = string.Format(formdataTemplate, key, nvc[key]); byte[] formitembytes = System.Text.Encoding.UTF8.GetBytes(formitem); rs.Write(formitembytes, 0, formitembytes.Length); } rs.Write(boundarybytes, 0, boundarybytes.Length); string headerTemplate = "Content-Disposition: form-data; name="{0}"; filename="{1}"rnContent-Type: {2}rnrn"; string header = string.Format(headerTemplate, paramName, file, contentType); byte[] headerbytes = System.Text.Encoding.UTF8.GetBytes(header); rs.Write(headerbytes, 0, headerbytes.Length); FileStream fileStream = new FileStream(file, FileMode.Open, FileAccess.Read); byte[] buffer = new byte[4096]; int bytesRead = 0; while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0) { rs.Write(buffer, 0, bytesRead); } fileStream.Close(); byte[] trailer = System.Text.Encoding.ASCII.GetBytes("rn--" + boundary + "--rn"); rs.Write(trailer, 0, trailer.Length); rs.Close(); WebResponse wresp = null; try { wresp = wr.GetResponse(); Stream stream2 = wresp.GetResponseStream(); StreamReader reader2 = new StreamReader(stream2); //Form Form1 = new Form1(); //Form //textBox6.Text = reader2.ReadToEnd(); //MessageBox.Show(s3); //Console.WriteLine(string.Format("File uploaded, server response is: {0}", reader2.ReadToEnd())); string s3 = reader2.ReadToEnd(); return s3; } catch (Exception ex) { Console.WriteLine("Error uploading file", ex); if (wresp != null) { wresp.Close(); wresp = null; } wresp = wr.GetResponse(); Stream stream2 = wresp.GetResponseStream(); StreamReader reader2 = new StreamReader(stream2); string s3 = reader2.ReadToEnd(); return s3; } finally { wr = null; } }
При работе с API ВКонтакте, как и при работе с подобными инструментами других соцсетей или сервисов, нужно соблюдать опубликованные разработчиками правила. Но не всегда они прозрачны, из-за чего могут возникать различные ошибки в процессе создания приложений или направления запросов к API. В этой статье мы собрали 5 самых распространенных ошибок, с которыми приходится сталкиваться при разработке приложения с использованием API VK.
Обратите внимание:
В статье приводятся 5 наиболее часто возникающих возвращаемых ошибок API VK по мнению редакции сайта.
Ошибка 9 – слишком много однотипных действий
Ошибка явно указывает, что пользователь делает слишком много однотипных действий.
Решение: Рекомендуется для эффективной работы использовать методы execute или JSONP, чтобы сократить количество однотипных обращений к API ВКонтакте.
Ошибка 10 – ошибка сервера
Internal server error code 10. Эта ошибка является наиболее распространенной, если вы работаете строго по инструкциям. Она возникает при нестабильном соединении или при наличии проблем на серверах самого ВКонтакте.
Решение: Исправить самостоятельно данную ошибку никак нельзя. Если проблем с интернет-соединением не наблюдается, вероятнее всего проблема на стороне ВКонтакте. Остается подождать, а после повторить запрос. Обычно через 10-20 минут, если проблема была в серверах, ошибка пропадает.
Рекомендация:
Если вы планируете создавать свой требовательный к мощностям сервера проект, не рекомендуется на этом экономить. Лучше арендовать сервер с проверенной репутацией, подобрав оптимальный вариант по мощности под свои задачи. Тогда пользователи не будут сталкиваться с проблемами при обращении к вашему серверу.
Ошибка 27 – ключ доступа сообщества недействителен
Еще одна распространенная ошибка среди программистов – использование неверного токена. Если вы при разработке приложения пытаетесь с токеном сообщества вызвать метод, который возможно вызвать только с токеном пользователя, вернется ошибка под номером 27.
Обратите внимание:
Такая ошибка может возникнуть, если срок действия токена сообщества закончился.
Решение: Использовать правильный токен.
Ошибка 28 – ключ действия приложения недействителен
Эта ошибка практически идентична той, что была описана выше. Она говорит о том, что используемый ключ действия приложения недействителен – вышел его срок или он введен неверно.
Решение: Использовать верный ключ действия приложения.
Ошибка 100 – неверная передача параметров
Полностью ошибка звучит следующим образом: «Один из необходимых параметров был не передан или неверен». Как можно понять из описания, при передаче параметров была допущена ошибка.
Решение: На странице с описанием метода ознакомиться со списком требуемых параметров и их форматом, чтобы устранить возникшую проблему.
Эти 5 ошибок, рассмотренные в статье, возникают наиболее часто. Как можно видеть, чаще всего они связаны с невнимательностью или с ошибками на стороне самого сервера ВКонтакте. Отсюда вывод один – внимательно читайте документация по работе с API.
New issue
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
Closed
DanLudan opened this issue
Mar 14, 2021
· 4 comments
Comments
What did you do?
await vk_io.api.messages.send(
initFunctionality({
start: true,
})
);
const initFunctionality = ({ start }) => {
const getFunctionality = () => {
if (start) console.log("старт");
};
return
getFunctionality();
};`
What did you expect to happen?
Не получить ошибку
What was the actual result?
Additional Info
Versions
package | version |
---|---|
vk-io |
4.1.4 |
node |
14.15.3 |
TypeScript |
X.Y.Z |
yarn or npm |
npm |
await vk_io.api.messages.send({ ...(initFunctionality({ start: true, })), random_id: 0 });
await vk_io.api.messages.send({ …(initFunctionality({ start: true, })), random_id: 0 });
Появилась новая ошибка:
ExecuteError: Code №100 — One of the parameters specified was missing or invalid: you should specify peer_id, user_id, domain, chat_id or user_ids param
При этом, всё также работает и сообщения приходят.
Читайте документацию как сообщения отправлять. vk.com/dev
Читайте документацию как сообщения отправлять. vk.com/dev
спасибо, я решил свою проблему
2 participants