addStickerToSet method

Future<bool> addStickerToSet(
  1. int user_id,
  2. String name,
  3. String emojis, {
  4. dynamic png_sticker,
  5. File? tgs_sticker,
  6. MaskPosition? mask_position,
})
inherited

Use this method to add a new sticker to a set created by the bot

You must use exactly one of the fields png_sticker or tgs_sticker. Animated stickers can be added to animated sticker sets and only to them. Animated sticker sets can have up to 50 stickers. Static sticker sets can have up to 120 stickers.

Returns True on success.

https://core.telegram.org/bots/api#addstickertoset

Implementation

Future<bool> addStickerToSet(int user_id, String name, String emojis,
    {dynamic png_sticker,
    io.File? tgs_sticker,
    MaskPosition? mask_position}) async {
  var requestUrl = _apiUri('addStickerToSet');
  var body = <String, dynamic>{
    'user_id': user_id,
    'name': name,
    'emojis': emojis,
    'mask_position': mask_position == null ? null : jsonEncode(mask_position),
  };

  if (tgs_sticker == null && png_sticker == null) {
    return Future.error(TelegramException(
        'You must use exactly one of the fields \`png_sticker\` or \`tgs_sticker\`.'));
  } else if (tgs_sticker != null) {
    // filename cannot be empty to post to Telegram server
    var files = List<MultipartFile>.filled(
        1,
        MultipartFile(
            'tgs_sticker', tgs_sticker.openRead(), tgs_sticker.lengthSync(),
            filename: '${tgs_sticker.lengthSync()}'));
    return await HttpClient.httpMultipartPost(requestUrl, files, body: body);
  } else if (png_sticker is io.File) {
    // filename cannot be empty to post to Telegram server
    var files = List<MultipartFile>.filled(
        1,
        MultipartFile(
            'png_sticker', png_sticker.openRead(), png_sticker.lengthSync(),
            filename: '${png_sticker.lengthSync()}'));
    return await HttpClient.httpMultipartPost(requestUrl, files, body: body);
  } else if (png_sticker is String) {
    body.addAll({'png_sticker': png_sticker});
    return await HttpClient.httpPost(requestUrl, body: body);
  } else {
    return Future.error(TelegramException(
        'Attribute \'png_sticker\' can only be either io.File or String (Telegram file_id or image url)'));
  }
}