getMessagesByIds method
Получение данных сообщений через список айди.
ids - должен быть ограничен длиной 1.000 значений.
Для получения айди всех существующих сообщений используйте метод getUpdates. А потом этот метод для получения их данных...
Например:
final updates = await getUpdates(msgs: DateTime(2022));
final newMessagesChatIds = updates.msgs;
if (newMessagesChatIds != null) {
for (final chatId in newMessagesChatIds.keys) {
final newMessagesIds = newMessagesChatIds[chatId]!;
if (newMessagesIds.isEmpty) continue;
final newMessages = await client.getMessagesByIds(newMessagesIds);
log(
'### Новые сообщения с [$lastUpdated] из чата $chatId\n'
'${_prettyJson(newMessages.map((e) => e.toJson()).toList())}',
);
}
}
См: urls.apiMsgsGet, SjMessageDto.
Implementation
Future<List<SjMessageDto>> getMessagesByIds(List<int> ids) async {
assert(ids.isNotEmpty, 'ids не должен быть пуст');
assert(ids.length <= 1000, 'Слишком много ids');
final result = await $httpPost(urls.apiMsgsGet, {'ids': ids});
if (!result.containsKey('msgs')) {
throw const FormatException('invalid response');
}
final res = result['msgs'] as List;
return res.cast<Map>().map(SjMessageDto.fromJson).toList();
}