Автоматизация и боты

Тест самодокументированной диалоговой ИИ-системы

 Помощь      Поиск      Пользователи
Сайт Кибор     Программируемый кликер Кибор     Видео обучение     Заказать бот

 Страниц (6): « 1 2 3 4 5 [6]   

> Описание: Двухстороння связь Кибор с Телеграмом
Ilya001
Отправлено: 25 Ноября, 2023 - 00:00:45
Post Id



Пользователь
Эксперт


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




 vitalik56 пишет:
Здравствуйте, товарищи подскажите пожалуйста.
Вот есть у меня код который работает исправно, он не маленький, достаточно много действий. Это игра.
Суть вот какая, как во время работы скрипта попросить кибор следить за окошком чата, если там что-то появилось причем не важно что, то он сразу отправляет сообщение в тг ,например Опасность.
Далее я, находясь не дома кибору отправляю сообщение грубо говоря цифру 2(а кибор всё это время выполняет основной скрипт, периодически проверяя чат) и при получении цифры 2 кибор останавливает скрипт, при этом отправив сообщение в игре с определенным содержанием. В голове я вроде понимаю что это возможно, но как отметить зону чата и как дать понять кибору что что-то получилось при этом не мешая работы основному скрипту (там нажатия клавиатуры и мыши, последовательно и с повторением)
Подскажите пожалуйста и скажите вообще это возможно? Даже на самом минимальном уровне.


Через таймер. Кибор может распознать текст, картинку (шаблон), цвет(пиксель), естественно можно сделать.
Я бы не советовал использовать распознавания текста, пострадает основной цикл, станет медленнее, вместо этого можно использовать либо findimage или findheapcolor итд.
 
 Top
konctantin777
Отправлено: 27 Ноября, 2023 - 19:44:34
Post Id



Пользователь
Эксперт


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




 Zireael пишет:
Так не переходите по ней, не будет хук устанавливаться

Изначально пишет
CODE:
Добро пожаловать в телеграм Кибор Бот!

Перейдите по ссылке что бы иметь возможность отправлять Кибору комнды из Телеграма:

Если не переходить- не читает. Если перейти потом удалить, проверить, что удалён- не читает...
 
 Top
Отправлено: 24 Марта, 2026 - 14:42:19
Post Id



Пользователь



Покинул форум
Сообщений всего: 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)

 
 Top
Dantes3000
Отправлено: 31 Мая, 2026 - 13:41:09
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 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;
}
 
 Top
Dantes3000
Отправлено: 17 Июля, 2026 - 01:21:37
Post Id



Пользователь
Эксперт


Покинул форум
Сообщений всего: 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;
}
}
 
 Top
Страниц (6): « 1 2 3 4 5 [6]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« О программе Кибор »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 




Powered by