Как собрать диалоги ВК?

Есть функция для сбора id всех диалогов. То есть, в файл "users.txt" идёт запись id каждого пользователя, который написал сообщение в группу. Я хочу собрать все такие id, но когда программа записывает 5200 айдишник, выходит ошибка (см. ниже)

def getmessages():
    start = 0
    with open("bin/users.txt","w+",encoding="UTF-8") as users: 
        for i in range(365):    
            dialogs = auth.method("messages.getConversations",{"offset": start, "count": 200, "filter":'all'})
            for datadialogs in dialogs['items']:
                iddialog = datadialogs['conversation']['peer']['local_id']
                users.write(f"\n{iddialog}")
            start += 200
        print(f"start: {start}")
        print("завершено")

Ошибка:

Traceback (most recent call last):
  File "c:\Users\bin\code.py", line 97, in <module>
    getmessages()
  File "c:\Users\bin\code.py", line 29, in getmessages
    dialogs = auth.method("messages.getConversations",{"offset": start, "count": 200, "filter":'all'})
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\burak\AppData\Local\Programs\Python\Python311\Lib\site-packages\vk_api\vk_api.py", line 697, in method
    raise error
vk_api.exceptions.ApiError: [917] You don't have access to this chat

Не совсем понятно, почему дальше программа "не может получить доступ к чату". Созревает логичный ответ — потому что в группе и нет больше 5200 диалогов. Но это не так. Сам ВК показвыает, что в сообществе 17 тысяч неотвеченных сообщений. А нам показало лишь 5200 айдишников.

Использую этот метод - https://dev.vk.com/method/messages.getConversations

описание


Ответы (1 шт):

Автор решения: vkwi

Проблема решена устаревшим методом messages.getDialogs (https://dev.vk.com/method/messages.getDialogs).

def getmessages2():
    write_message(sender,"Получен запрос на сбор данных")
    start = 0
    with open("bin/users.txt","w+",encoding="UTF-8") as users: 
        for i in range(374):    
            dialogs = auth.method("messages.getDialogs",{"offset": start, "count": 200})
            for datadialogs in dialogs['items']:
                iddialog = datadialogs["message"]["user_id"]
                users.write(f"\n{iddialog}")
                start += 200
        print("Сбор данных завершён")
→ Ссылка