bivashy / java-vk-bots-long-poll-api-examples

Examples of usage Java VK Bots Long Poll API
https://github.com/bivashy/java-vk-bots-long-poll-api
MIT License
1 stars 0 forks source link

Невозможно получить список бесед, в которых участвует бот. #5

Closed alllexey123 closed 2 years ago

alllexey123 commented 2 years ago

vk.messages.getConversations().execute().getResponse() не возвращает список бесед, в которых участвует бот. Так же и при использовании .getCount() возвращается количество чатов без учёта бесед. Но если использовать vk.messages.getConversationsById().setPeerIds(2000000000 + [номер беседы]).execute() .getResponse().getItems().get(0); то можно получить конкретную беседу, однако это очень неэффективно с точки зрения потраченного времени на обращение к серверу при их большом количестве. Может ли быть добавлена возможность получения всех бесед или хотя-бы только их количества?

yvasyliev commented 2 years ago

На сколько помню, messages.getConversations никогда не возвращал список бесед для ботов. Вы можете получить ID беседы в методе public void onMessageNew(MessageNew messageNew) и потом сохранить в Set, например:

private final Set<Integer> chatIds = new HashSet<>();

@Override
public void onMessageNew(MessageNew messageNew) {
    Integer chatId = messageNew.getMessage().getPeerId();
    chatIds.add(chatId);
}

Если вам нужно последовательно выполнить несколько запросов, то вы можете использовать метод execute:

String code = "var group = API.groups.getById();\n" +
        "var chats = API.messages.getConversations();\n" +
        "// other method call\n" +
        "return chats.count; // return anything";

Execute.ResponseBody responseBody = vk.other.execute().setCode(code).execute();

Документация здесь.

alllexey123 commented 2 years ago

Спасибо за пояснение!