sendMediaGroup method

Future<List<Message>> sendMediaGroup(
  1. ID chatId,
  2. List<InputMedia> media, {
  3. int? messageThreadId,
  4. bool? disableNotification,
  5. bool? protectContent,
  6. ReplyParameters? replyParameters,
  7. String? businessConnectionId,
  8. String? messageEffectId,
  9. bool? allowPaidBroadcast,
  10. int? directMessagesTopicId,
})

Sends a group of photos, videos, documents or audios as an album.

Messages sent as a group cannot be edited or deleted individually. On success, an array of Messages that were sent is returned.

Implementation

Future<List<Message>> sendMediaGroup(
  ID chatId,
  List<InputMedia> media, {
  int? messageThreadId,
  bool? disableNotification,
  bool? protectContent,
  ReplyParameters? replyParameters,
  String? businessConnectionId,
  String? messageEffectId,
  bool? allowPaidBroadcast,
  int? directMessagesTopicId,
}) async {
  final params = <String, dynamic>{
    'chat_id': chatId,
    'media': media,
    'message_thread_id': ?messageThreadId,
    'disable_notification': ?disableNotification,
    'protect_content': ?protectContent,
    'reply_parameters': ?replyParameters,
    'business_connection_id': ?businessConnectionId,
    'message_effect_id': ?messageEffectId,
    'allow_paid_broadcast': ?allowPaidBroadcast,
    'direct_messages_topic_id': ?directMessagesTopicId,
  };

  final files = _prepareFiles(
    media.expand((e) => e.getInputFiles().map((e) => (null, e))),
  );

  final payload = Payload(params, files);
  final response = await _makeRequest<List<dynamic>>(
    APIMethod.sendMediaGroup.name,
    payload,
  );

  return response.map((json) => Message.fromJson(json)).toList();
}