Задать вопрос
@Overlrdd

Почему не работает бот вк?

Я новичок в написании ботов для ВК, да и с python никогда в жизни еще не работал. Решил попробовать создать банального бота(точнее просто переписал код уже готовый), но все это дело не заработало, хотя по идее должно. Пересмотрел пару видео, сделал так же, но результата никакого. Заранее спасибо!
Вот код:
import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType

def write_msg(user_id, msg):
    vk.method('messages.send', {'user_id': user_id, 'message': msg})

# API-ключ созданный ранее
token = "..."

# Авторизуемся как сообщество
vk = vk_api.VkApi(token=token)

# Работа с сообщениями
longpoll = VkLongPoll(vk)

# Основной цикл
for event in longpoll.listen():

    # Если пришло новое сообщение
    if event.type == VkEventType.MESSAGE_NEW:
        # Сообщение от пользователя
        request = event.text

        # Каменная логика ответа
        if request == "привет":
            write_msg(event.user_id, "Привет")
        elif request == "пока":
            write_msg(event.user_id, "Пока")
        else:
            write_msg(event.user_id, "...")

А вот ошибки:
Traceback (most recent call last):
File "C:/Users/Ovrlrdd/Desktop/VK.py", line 30, in
write_msg(event.user_id, "Не поняла вашего ответа...")
File "C:/Users/Ovrlrdd/Desktop/VK.py", line 5, in write_msg
vk.method('messages.send', {'user_id': user_id, 'message': msg})
File "D:\VK\venv\lib\site-packages\vk_api\vk_api.py", line 615, in method
raise error
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: random_id is a required parameter
Сам код запускается и работает ровно до того момента, пока я боту не отправлю любое сообщение, после этого как раз и появляются эти ошибки.
  • Вопрос задан
  • 3496 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
alsolovyev
@alsolovyev
¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
В ошибке же написано, что не предоставлен random_id
Vk api
random_id Unique identifier to avoid resending the message.
int (number), accessible for versions from 5.45

Вот офф документация vk_api
Вот код, который отвечает за передачу сообщения:
vk.messages.send(
    user_id=event.user_id,
    message='No results'
)

Откуда Вы взяли свой код я не знаю. Наверно, устарел Ваш источник(или попробуйте добавить radnom_id самостоятельно, мб сработает. Что-то такое:
vk.method('messages.send', {
    'user_id': user_id,
    'message': msg,
    'random_id': random_id
})

). VK обновлял что-то у себя недавно
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alternativshik
@alternativshik
Попробуйте почитать документацию по API ВК... Текст ошибки написан предельно понятно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы