getMessagesByIds method

Future<List<SjMessageDto>> getMessagesByIds(
  1. List<int> ids
)

Получение данных сообщений через список айди.

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();
}