Untitled
unknown
plain_text
3 years ago
4.5 kB
8
Indexable
#include <Wininet.mqh> #include <stdlib.mqh> #define TELEGRAM_BOT_TOKEN "your_bot_token" #define TELEGRAM_CHAT_ID "your_chat_id" #define SCREENSHOT_ENABLED true string message; // Sends a message to a Telegram chat void SendTelegramMessage(string message) { string url = "https://api.telegram.org/bot" + TELEGRAM_BOT_TOKEN + "/sendMessage?chat_id=" + TELEGRAM_CHAT_ID + "&text=" + message; url = StringReplace(url, " ", "%20"); url = StringReplace(url, "\n", "%0A"); InternetCloseHandle(InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL)); HINTERNET hInternet = InternetOpen("", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInternet == NULL) return; HINTERNET hConnect = InternetConnect(hInternet, "api.telegram.org", INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); if (hConnect == NULL) return; HINTERNET hRequest = HttpOpenRequest(hConnect, "GET", url, "HTTP/1.1", NULL, NULL, INTERNET_FLAG_SECURE, 0); if (hRequest == NULL) return; BOOL bSend = HttpSendRequest(hRequest, NULL, 0, NULL, 0); if (!bSend) return; InternetCloseHandle(hRequest); InternetCloseHandle(hConnect); InternetCloseHandle(hInternet); } // Sends a screenshot to a Telegram chat void SendTelegramScreenshot(string message) { string fileName = "screenshot.png"; int width = WindowGetWidht(0); int height = WindowGetHeight(0); uchar* buffer = new uchar[width*height*3]; if (buffer == NULL) return; if (!ScreenShot(buffer, fileName, width, height)) { delete[] buffer; return; } string boundary = "---------------------------7e01fd520604e"; string data = "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"chat_id\"\r\n\r\n" + TELEGRAM_CHAT_ID + "\r\n" + "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"caption\"\r\n\r\n" + message + "\r\n" + "--" + boundary + "\r\n" + "Content-Disposition: form-data; name=\"photo\"; filename=\"screenshot.png\r\n" + "Content-Type: image/png\r\n\r\n"; int fileSize = FileSize(fileName); if (fileSize <= 0) { delete[] buffer; return; } uchar* fileBuffer = new uchar[fileSize]; if (fileBuffer == NULL) { delete[] buffer; return; } int result = FileReadArray(fileName, fileBuffer, fileSize); if (result != fileSize) { delete[] fileBuffer; delete[] buffer; return; } data += (string)fileBuffer; delete[] fileBuffer; data += "\r\n--" + boundary + "--\r\n"; InternetCloseHandle(InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, NULL)); hInternet = InternetOpen("", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInternet == NULL) { delete[] buffer; return; } hConnect = InternetConnect(hInternet, "api.telegram.org", INTERNET_DEFAULT_HTTPS_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); if (hConnect == NULL) { delete[] buffer; return; } string url = "https://api.telegram.org/bot" + TELEGRAM_BOT_TOKEN + "/sendPhoto"; hRequest = HttpOpenRequest(hConnect, "POST", url, "HTTP/1.1", NULL, NULL, INTERNET_FLAG_SECURE, 0); if (hRequest == NULL) { delete[] buffer; return; } string headers = "Content-Type: multipart/form-data; boundary=" + boundary + "\r\n" + "Content-Length: " + (string)data.Length() + "\r\n"; bSend = HttpSendRequest(hRequest, headers, headers.Length(), (char*)data.c_str(), data.Length()); if (!bSend) { delete[] buffer; return; } InternetCloseHandle(hRequest); InternetCloseHandle(hConnect); InternetCloseHandle(hInternet); delete[] buffer; } int OnInit() { // Initialize the Expert Advisor return(INIT_SUCCEEDED); } void OnDeinit(const int reason) { // Deinitialize the Expert Advisor } void OnTick() { // Check if an alert message is available if (AlertGet(message)) { // Send the alert message to the Telegram chat SendTelegramMessage(message); // If screenshot is enabled, send a screenshot of the chart to the Telegram chat if (SCREENSHOT_ENABLED) SendTelegramScreenshot(message); } }
Editor is loading...