@bodya_kireev

Как создать функцию random_id в vk_api?

Помогите реализовать функцию random_id. В документации не нашел описание функции.

import vk_api
from vk_api.longpoll import VkLongPoll, VkEventType


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


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

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

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

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

    # Если пришло новое сообщение
    if event.type == VkEventType.MESSAGE_NEW:

        # Если оно имеет метку для меня( то есть бота)
        if event.to_me:

            # Сообщение от пользователя
            request = event.text

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


Вот код ошибки:
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: random_id is a required parameter
  • Вопрос задан
  • 6059 просмотров
Пригласить эксперта
Ответы на вопрос 2
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
Для тех, кто наткнётся на вопрос в будущем (как, например, я).

random_id - это параметр, который также нужно передавать при отправке нового сообщения.
random_id - уникальный (в привязке к API_ID и ID отправителя) идентификатор, предназначенный для предотвращения повторной отправки одинакового сообщения. Сохраняется вместе с сообщением и доступен в истории сообщений.

Заданный random_id используется для проверки уникальности за всю историю сообщений, поэтому используйте большой диапазон (до int64).


Лично я рекомендую использовать в качестве random_id - дату и время в качестве уникального ключа. А именно - переводить дату и время в миллисекунды.
Ответ написан
@Dunge
vk.messages.send(peer_id = event.peer_id, random_id = 0, message = 'Текст')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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