telegramBotApi method

Stream<TelegramClientApiStatus> telegramBotApi({
  1. required List<Map> parametersRequest,
  2. Duration? durationDelay,
})

Implementation

Stream<TelegramClientApiStatus> telegramBotApi({
  required List<Map> parametersRequest,
  Duration? durationDelay,
}) async* {
  durationDelay ??= Duration(milliseconds: 500);
  if (Dart.isWeb) {
    yield TelegramClientApiStatus(
        telegramClientApiStatusType: TelegramClientApiStatusType.failed,
        value: "Can't Install Library on Web Platform");
    return;
  }
  TelegramClient tg = TelegramClient();
  tg.ensureInitialized(
    is_init_tdlib: false,
  );

  yield TelegramClientApiStatus(
      telegramClientApiStatusType: TelegramClientApiStatusType.info,
      value: "Started Send Request: ${parametersRequest.length}");
  for (var i = 0; i < parametersRequest.length; i++) {
    Map parameter = parametersRequest[i];

    if (parameter["token_bot"] is String == false) {
      if (Platform.environment["token_bot"] is String) {
        parameter["token_bot"] =
            (Platform.environment["token_bot"] as String).trim();
      } else {
        parameter["token_bot"] = "";
      }
    }
    TelegramClientData telegramClientData = TelegramClientData.telegramBotApi(
      token_bot: parameter["token_bot"],
    );

    String message_pams = "";
    parameter.forEach((key, value) {
      if (key == "@type") {
        message_pams += " Method: ${value}";
      }
      if (key == "chat_id") {
        message_pams += " Chat Id: ${value}";
      }
    });
    message_pams +=
        " Bot User Id: ${TgUtils.parserBotUserIdFromToken(telegramClientData.telegram_bot_api_token_bot)}";
    message_pams = message_pams.trim();
    String message = """
Send Request: ${i} ${parametersRequest.length} ${message_pams.trim()}
"""
        .trim();
    yield TelegramClientApiStatus(
        telegramClientApiStatusType:
            TelegramClientApiStatusType.progress_start,
        value: "Started ${message}");

    await Future.delayed(durationDelay);

    try {
      await tg.invoke(
        parameters: parameter,
        telegramClientData: telegramClientData,
      );
      yield TelegramClientApiStatus(
          telegramClientApiStatusType:
              TelegramClientApiStatusType.progress_complete,
          value: "Succes ${message}");
    } catch (e) {
      String error_message = "${e.toString()}";

      if (e is ClientException) {
        error_message = "Connection Internet Error";
      }

      yield TelegramClientApiStatus(
          telegramClientApiStatusType:
              TelegramClientApiStatusType.progress_complete,
          value:
              "Error ${message} Error: ${replaceData(text: error_message.trim())}");
    }
  }
  yield TelegramClientApiStatus(
      telegramClientApiStatusType: TelegramClientApiStatusType.succes,
      value: "Finished");
}