request method

Future<Map> request(
  1. String method, {
  2. Map? parameters,
  3. bool is_form = false,
  4. String? tokenBot,
  5. String? urlApi,
  6. String? clientType,
  7. void onUploadProgress(
    1. int bytesCount,
    2. int totalBytes
    )?,
  8. bool isAutoExtendMessage = false,
  9. bool isThrowOnError = true,
  10. Client? httpClient,
})

call api latest bot api example:

request("sendMessage", parameters: {
  "chat_id": 123456,
  "text": "<b>Hello</b> <code>word</code>",
  "parse_mode": "html"
});

Implementation

Future<Map> request(
  String method, {
  Map? parameters,
  bool is_form = false,
  String? tokenBot,
  String? urlApi,
  String? clientType,
  void Function(int bytesCount, int totalBytes)? onUploadProgress,
  bool isAutoExtendMessage = false,
  bool isThrowOnError = true,
  Client? httpClient,
}) async {
  parameters ??= {};
  clientType ??= client_option["type"];
  urlApi ??= client_option["api"];
  tokenBot ??= token_bot;

  if (parameters["is_natural"] == true) {}

  if (isAutoExtendMessage) {
    if (parameters["text"] is String) {
      String text = parameters["text"];
      if (text.length >= 4096) {
        List<String> messagesJson = GeneralLibUtils.splitByLength(text, 4096);
        List result = [];
        for (var i = 0; i < messagesJson.length; i++) {
          var loopData = messagesJson[i];
          try {
            await Future.delayed(Duration(milliseconds: 500));
            parameters["text"] = loopData;
            if (RegExp(
              "(editMessageText)",
              caseSensitive: false,
            ).hashData(method)) {
              if (i != 0) {
                method = "sendMessage";
              }
            }
            var res = await invoke(
              parameters: parameters,
              is_form: is_form,
              tokenBot: tokenBot,
              urlApi: urlApi,
              clientType: clientType,
              onUploadProgress: onUploadProgress,
              isThrowOnError: isThrowOnError,
            );
            result.add(res);
          } catch (e) {
            result.add(e);
          }
        }
        return {"result": result};
      }
    }

    if (parameters["caption"] is String) {
      String caption = parameters["caption"];
      if (caption.length >= 1024) {
        List<String> messagesJson =
            GeneralLibUtils.splitByLength(caption, 1024);
        List result = [];
        for (var i = 0; i < messagesJson.length; i++) {
          var loopData = messagesJson[i];
          try {
            await Future.delayed(Duration(milliseconds: 500));
            parameters["caption"] = loopData;
            if (RegExp(
              "(editMessageCaption)",
              caseSensitive: false,
            ).hashData(method)) {
              if (i != 0) {
                parameters["text"] = loopData;
                method = "sendMessage";
              }
            }
            var res = await invoke(
              parameters: parameters,
              is_form: is_form,
              tokenBot: tokenBot,
              urlApi: urlApi,
              clientType: clientType,
              onUploadProgress: onUploadProgress,
              isThrowOnError: isThrowOnError,
            );
            result.add(res);
          } catch (e) {
            result.add(e);
          }
        }
        return {"result": result};
      }
    }
  }

  return await invoke(
    parameters: parameters,
    is_form: is_form,
    tokenBot: tokenBot,
    urlApi: urlApi,
    clientType: clientType,
    onUploadProgress: onUploadProgress,
    isThrowOnError: isThrowOnError,
  );
}