sendDocument method
Future<Message>
sendDocument(
- dynamic chat_id,
- dynamic document, {
- dynamic thumb,
- String? parse_mode,
- bool? disable_content_type_detection,
- bool? disable_notification,
- int? reply_to_message_id,
- bool? allow_sending_without_reply,
- ReplyMarkup? reply_markup,
inherited
Use this method to send general files
On success, the sent Message
is returned.
Bots can currently send files of any type of up to 50 MB in size, this limit may be changed in the future.
Implementation
Future<Message> sendDocument(dynamic chat_id, dynamic document,
{dynamic thumb,
String? caption,
String? parse_mode,
List<MessageEntity>? caption_entities,
bool? disable_content_type_detection,
bool? disable_notification,
int? reply_to_message_id,
bool? allow_sending_without_reply,
ReplyMarkup? reply_markup}) async {
if (chat_id is! String && chat_id is! int) {
return Future.error(TelegramException(
'Attribute \'chat_id\' can only be either type of String or int'));
}
var requestUrl = _apiUri('sendDocument');
var body = <String, dynamic>{
'chat_id': chat_id,
'caption': caption,
'parse_mode': parse_mode,
'caption_entities':
caption_entities == null ? null : jsonEncode(caption_entities),
'disable_content_type_detection': disable_content_type_detection,
'disable_notification': disable_notification,
'reply_to_message_id': reply_to_message_id,
'allow_sending_without_reply': allow_sending_without_reply,
'reply_markup': reply_markup == null ? null : jsonEncode(reply_markup),
};
var multiPartFiles = <MultipartFile>[];
if (document is io.File) {
multiPartFiles.add(HttpClient.toMultiPartFile(document, 'document'));
} else if (document is String) {
body.addAll({'document': document});
} else {
return Future.error(TelegramException(
'Attribute \'document\' can only be either io.File or String (Telegram file_id or image url)'));
}
if (thumb != null) {
if (thumb is io.File) {
multiPartFiles.add(HttpClient.toMultiPartFile(thumb, 'thumb'));
} else if (thumb is String) {
body.addAll({'thumb': thumb});
} else {
return Future.error(TelegramException(
'Attribute \'thumb\' can only be either io.File or String (Telegram file_id or image url)'));
}
}
return multiPartFiles.isEmpty
? Message.fromJson(await HttpClient.httpPost(requestUrl, body: body))
: Message.fromJson(await HttpClient.httpMultipartPost(
requestUrl, multiPartFiles,
body: body));
}