Проблемы с VK api: при отправке сообщений боту в личку он не выдаёт ошибки
Вечер добрый, начинаю писать бота в вк. Никогда не сталкивался с ВК Апи и возникли проблемы.
import vk_api
from vk_api.utils import get_random_id
from vk_api.bot_longpoll import VkBotLongPoll, VkBotEventType
vk_session = vk_api.VkApi(token = "Тут стоит токен, но сейчас я его убрал")
cmd_list = ['Ничего']
from vk_api.longpoll import VkLongPoll, VkEventType
longpoll = VkLongPoll(vk_session)
vk = vk_session.get_api()
for event in longpoll.listen():
if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
if event.text == 'Начать' or event.text == 'Привет'or event.text == 'привет'or event.text == 'начать':
if event.from_user:
vk.messages.send(
user_id=event.user_id,
message='И тебе не хворать! Если хочешь узнать, что я могу, напиши "Что ты умеешь?"'
)
elif event.from_chat:
vk.messages.send(
chat_id=event.chat_id,
message='И тебе не хворать!'
)
if event.type == VkEventType.MESSAGE_NEW and event.to_me and event.text:
if event.text == 'Что ты умеешь?':
vk.messages.send(
user_id = event.user_id,
message = camd_list
)
По итогу выдаёт ошибку:
File "arc_bot.py", line 22, in <module>
vk.messages.send(
File "C:\Users\zolot\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\vk_api.py", line 696, in __call__
return self._vk.method(self._method, kwargs)
File "C:\Users\zolot\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\vk_api.py", line 656, in method
raise error
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: random_id is a required parameter
Кто сталкивался, может подсказать, что я именно делаю не так? В ВК включил ЛонгПолл.
Ответы (2 шт):
В ошибке же все написано: vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: random_id is a required parameter, то что у тебя не хватает обязательного параметра.
random_id - уникальный (в привязке к API_ID и ID отправителя) идентификатор, предназначенный для предотвращения повторной отправки одинакового сообщения. Сохраняется вместе с сообщением и доступен в истории сообщений.
Заданный random_id используется для проверки уникальности за всю историю сообщений, поэтому используйте большой диапазон (до int32).
целое число, доступен начиная с версии 5.45
Ссылка на документацию - https://vk.com/dev/messages.send
Нужно в запросы заполнять параметр random_id. Добавьте его во все vk.messages.send
Пример:
vk.messages.send(
user_id=event.user_id,
message='И тебе не хворать! Если хочешь узнать, что я могу, напиши "Что ты умеешь?"',
random_id=get_random_id(),
)