| Ilya001 |
Отправлено: 25 Ноября, 2023 - 00:00:45
|


Эксперт

Покинул форум
Сообщений всего: 459
Дата рег-ции: Май 2020
Репутация: 23

|
vitalik56 пишет: Здравствуйте, товарищи подскажите пожалуйста.
Вот есть у меня код который работает исправно, он не маленький, достаточно много действий. Это игра.
Суть вот какая, как во время работы скрипта попросить кибор следить за окошком чата, если там что-то появилось причем не важно что, то он сразу отправляет сообщение в тг ,например Опасность.
Далее я, находясь не дома кибору отправляю сообщение грубо говоря цифру 2(а кибор всё это время выполняет основной скрипт, периодически проверяя чат) и при получении цифры 2 кибор останавливает скрипт, при этом отправив сообщение в игре с определенным содержанием. В голове я вроде понимаю что это возможно, но как отметить зону чата и как дать понять кибору что что-то получилось при этом не мешая работы основному скрипту (там нажатия клавиатуры и мыши, последовательно и с повторением)
Подскажите пожалуйста и скажите вообще это возможно? Даже на самом минимальном уровне.
Через таймер. Кибор может распознать текст, картинку (шаблон), цвет(пиксель), естественно можно сделать.
Я бы не советовал использовать распознавания текста, пострадает основной цикл, станет медленнее, вместо этого можно использовать либо findimage или findheapcolor итд. |
| |
|
| konctantin777 |
Отправлено: 27 Ноября, 2023 - 19:44:34
|


Эксперт

Покинул форум
Сообщений всего: 1276
Дата рег-ции: Окт. 2017
Откуда: Архангельск
Репутация: 7

|
Zireael пишет: Так не переходите по ней, не будет хук устанавливаться
Изначально пишет CODE:Добро пожаловать в телеграм Кибор Бот!
Перейдите по ссылке что бы иметь возможность отправлять Кибору комнды из Телеграма:
Если не переходить- не читает. Если перейти потом удалить, проверить, что удалён- не читает... |
| |
|
|
Отправлено: 24 Марта, 2026 - 14:42:19
|



Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0

|
Zireael пишет: Цитата: Если будет возможно сделайте пожалуйста, возможность отключать / включать это сообщение.
Используйте sendgetweb.
Удалить хук (если переходили по ссылке от кибор):
CODE:string token="1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // токен
string s;
sendgetweb(#s, "Bot", "POST", "https:/"+"/api.telegram.org","bot"+token+"/"+"deleteWebhook");
Отправить сообщение:
CODE:string token="1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // токен
string chat_id="1234567890"; // id чата
string message="Привет Hello";
string s;
sendgetweb(#s, "Bot", "POST", "https:/"+"/api.telegram.org","bot"+token+"/"+"sendMessage?chat_id="+chat_id+"&text="+ansitoutf8(message));
Получить сообщение:
CODE:string token="1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // токен
string chat_id="1234567890"; // id чата
string s;
sendgetweb(#s, "Bot", "POST", "https:/"+"/api.telegram.org","bot"+token+"/"+"getUpdates?chat_id="+chat_id+"&offset=-1");
parserjson(Json, s);
messagebox(Json.result[0].message.text);
Zireael подскажите пожалуйста, если используется кириллица, почему в ТГ приходят ????
>?????? Hello
моё сообщение для вашего кода(Отредактировано автором: 24 Марта, 2026 - 14:42:35) |
| |
|
| Dantes3000 |
Отправлено: 31 Мая, 2026 - 13:41:09
|


Эксперт

Покинул форум
Сообщений всего: 1514
Дата рег-ции: Июнь 2016
Репутация: 58

|
//отправить картинку в телеграм без длл
CODE:string token = "97654321:AAG3v_bgRV6-wIyYe9JEt5eEA";
string chat_id = "12345789";
send_photo_tg("D:\screenshot.bmp", "This is caption");
function send_photo_tg(string file_path, string caption)
{
external(INT, "DeleteFile", "DeleteFileA", "kernel32.dll");
string log_path = tempfolder()+"tg_response.txt";
string response, temp;
if(fopen(file_path, "rb") == 0) {messagebox("File not found:^n^n"+file_path); return 0;} else fclose();
temp = "curl -s -F chat_id="+chat_id;
temp = temp + " -F photo=@"+file_path;
if (size(caption) > 0) temp = temp + " -F caption=^""+caption+"^"";
temp = temp + " ^"https:/"+"/api.telegram.org/bot"+token+"/sendPhoto^"";
temp = temp + " > "+log_path+" 2>&1";
system(temp);
if(fopen(log_path, "r"))
{
while (freadline(temp) > 0) response = response + temp;
fclose();
} else messagebox("Error open "+log_path);
if (regexsearch(1, #temp, response, "^"ok^":true")==0) messagebox("Error send Telegram:^n^n"+response);
DeleteFile(log_path);
return 1;
} |
| |
|
| Dantes3000 |
Отправлено: 17 Июля, 2026 - 01:21:37
|


Эксперт

Покинул форум
Сообщений всего: 1514
Дата рег-ции: Июнь 2016
Репутация: 58

|
================================================================
// Telegram через sendgetweb — без лимита ~13 секунд
// Аналоги sendtelegram / gettelegram
// Должен быть отключен webhook
================================================================
CODE:
int tg_offset=0; // update_id+1 последнего прочитанного
int tg_debug=1; // 1 = показывать сырой ответ (для отладки). Потом поставь 0.
// -------- ДЕМО (убери при вставке в свой бот) --------
string DEMO_TOKEN = "023456789:AAAA333_QAAAAAAWWDWD_dasdasd";
string DEMO_CHATID = "1111111111";
TG_reset(DEMO_TOKEN, DEMO_CHATID);
TG_send(DEMO_TOKEN, DEMO_CHATID, "Бот запущен");
string DemoRez;
loop()
{
if(TG_get(DEMO_TOKEN, DEMO_CHATID, #DemoRez))
{
messagebox("Пришло: [" + DemoRez + "]");
if(DemoRez=="1") beep(1000, 500);
if(DemoRez=="2") beep(3000, 500);
}
pause(1500);
}
// -------------------- конец демо --------------------
// Ищет в buf строку startd, возвращает в out символы после неё до кода endcode.
// endcode - ASCII код символа-ограничителя (34 = кавычка, 44 = запятая).
// Возврат 1 если найдено, 0 если нет.
function TgBetween(char #buf, string startd, int endcode, string #out)
{
char sd[512];
char res[16384];
int blen, sdlen, i, j, k, ok, start;
out = "";
strcpy(#sd[0], startd);
blen = size(#buf[0]);
sdlen = size(startd);
start = -1;
for(i=0; i<=blen-sdlen; i++)
{
ok=1;
for(j=0; j<sdlen; j++) { if(buf[i+j]!=sd[j]) { ok=0; break; } }
if(ok) { start=i+sdlen; break; }
}
if(start<0) return 0;
k=0;
for(i=start; i<blen; i++)
{
if(formatci(buf[i])==endcode) break;
res[k]=buf[i]; k++;
}
res[k]=0;
out = format(#res[0]);
return 1;
}
// URL-кодирование (cp1251 -> UTF-8 -> %XX)
function UrlEncode(string s)
{
string utf, out;
char c[8192];
char hex[17];
int i, b, hi, lo, n;
utf = ansitoutf8(s);
strcpy(#c[0], utf);
n = size(utf);
strcpy(#hex[0], "0123456789ABCDEF");
out = "";
for(i=0; i<n; i++)
{
b = formatci(c[i]);
if(b<0) b = b + 256;
if((b>=48 && b<=57) || (b>=65 && b<=90) || (b>=97 && b<=122) || b==45 || b==95 || b==46 || b==126)
{
out = out + c[i];
}
else
{
hi = b/16;
lo = b - hi*16;
out = out + "%";
out = out + hex[hi];
out = out + hex[lo];
}
}
return out;
}
// Отправить сообщение. 1 = успех, 0 = ошибка.
function TG_send(string token, string chat_id, string text)
{
char resp[8192];
string path, okv;
int r;
path = "bot"+token+"/sendMessage?chat_id="+chat_id+"&text="+UrlEncode(text);
r = sendgetweb(#resp[0], "KiborBot", "GET", "https:/^/api.telegram.org", path, 7000);
if(r <= 0) return 0;
if(TgBetween(#resp[0], "^"ok^":", 44, #okv) > 0) { if(okv=="true") return 1; }
return 0;
}
// Принять одно новое сообщение. out -> текст. 1 = получено, 0 = нет.
function TG_get(string token, string chat_id, string #out)
{
char resp[16384];
string path, uid, txt;
int r;
out = "";
path = "bot"+token+"/getUpdates?offset="+format(tg_offset)+"&limit=1&timeout=0";
r = sendgetweb(#resp[0], "KiborBot", "GET", "https:/^/api.telegram.org", path, 7000);
if(r <= 0) return 0;
if(TgBetween(#resp[0], "^"update_id^":", 44, #uid) <= 0) return 0; // сообщений нет
if(tg_debug) messagebox("Сырой ответ:^n^n"+format(#resp[0]));
tg_offset = formatsn(uid) + 1;
if(TgBetween(#resp[0], "^"text^":^"", 34, #txt) > 0) out = utf8toansi(txt);
return 1;
}
// Пропустить старые сообщения (один раз при старте).
function TG_reset(string token, string chat_id)
{
char resp[16384];
string uid;
if(sendgetweb(#resp[0], "KiborBot", "GET", "https:/^/api.telegram.org", "bot"+token+"/getUpdates?offset=-1&limit=1", 7000) > 0)
{
if(TgBetween(#resp[0], "^"update_id^":", 44, #uid) > 0) tg_offset = formatsn(uid) + 1;
}
}
|
| |
|
|