telegramBotApi method
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");
}