Zireael |
Отправлено: 05 Февраля, 2022 - 17:26:07
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Длл предназначена для:
Отправки сообщений, изображений, файлов в телеграм.
Получения последнего сообщения.
https://drive.google.com/file/d/...view?usp=sharing
Архив извлечь, файлы закинуть в папку с кибор.
Создаём бота в телеграм, получаем token и chat_id.
Функции:
- sendtelegrammessage - отправить сообщение
- sendtelegramphoto - отправить изображение
- sendtelegramdocument - отправить файл
- gettelegrammessage - получить последнее сообщение
Параметры функций:
- sendtelegrammessage (токен, чат id, текст сообщения, указатель на массив char или 0)
- sendtelegramphoto (токен, чат id, путь к файлу, подпись, указатель на массив char или 0)
- sendtelegramdocument (токен, чат id, текст сообщения, подпись, указатель на массив char или 0)
- gettelegrammessage (токен, чат id, указатель на массив char)
Если последним параметром функций указан адрес массива char, то она вернёт количество записанных символов. Ответ от сервера запишется в массив в виде JSON.
gettelegrammessage возвращает текст сообщения.
Примеры использования:
Отправить сообщение:
CODE:external(INT, "sendtelegrammessage", "sendtelegrammessage", "SendTelegram.dll");
string token="1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // токен
string chat_id="1234567890"; // id чата
sendtelegrammessage(token, chat_id, "Hello", 0);
Отправить сообщение и получить ответ в формате JSON:
CODE:external(INT, "sendtelegrammessage", "sendtelegrammessage", "SendTelegram.dll");
char response[9999];
sendtelegrammessage("1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "1234567890", "Hello2", address(#response[0]));
messagebox(format(#response[0]));
Отправить изображение:
CODE:external(INT, "sendtelegramphoto", "sendtelegramphoto", "SendTelegram.dll");
string PathToImage = tempfolder()+"tmpImage.jpg"; // путь куда сохранить скрин
savescreen(JPG, PathToImage, 0, 0, 300, 200, -1); // сохранить скрин части экрана
sendtelegramphoto("1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "1234567890", PathToImage, "", 0);
Отправить изображение и получить ответ в формате JSON:
CODE:external(INT, "sendtelegramphoto", "sendtelegramphoto", "SendTelegram.dll");
char response[9999];
string PathToImage = tempfolder()+"tmpImage.jpg"; // путь куда сохранить скрин
savescreen(JPG, PathToImage, 200, 100, 600, 500, -1); // сохранить скрин части экрана
sendtelegramphoto("1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "1234567890", PathToImage, "Подпись", address(#response[0]));
messagebox(format(#response[0]));
Отправить файл:
CODE:external(INT, "sendtelegramdocument", "sendtelegramdocument", "SendTelegram.dll");
string Path = tempfolder()+"tmpFile.txt"; // путь к файлу
// для примера создать файл, записать в него несколько строк
if(fopen(Path, "w"))
{
fwrite("Строка1");
fwrite(ENDL);
fwrite("Строка2");
fclose();
}
sendtelegramdocument("1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "1234567890", Path, "", 0);
Отправить файл и получить ответ в формате JSON:
CODE:external(INT, "sendtelegramdocument", "sendtelegramdocument", "SendTelegram.dll");
int color, x, y;
char response[9999];
string Path = tempfolder()+"ScreenTmp.jpg";
getdisplay(color, x, y); // получить размеры экрана
savescreen(JPG, Path, 0, 0, x, y, -1); // сохранить скрин экрана
// отправить скрин
sendtelegramdocument("1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "1234567890", Path, "", address(#response[0]));
messagebox(format(#response[0]));
Получить последнее сообщение:
CODE:external(INT, "gettelegrammessage", "gettelegrammessage", "SendTelegram.dll");
char response[9999];
gettelegrammessage("1234567890:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "1234567890", address(#response[0]));
messagebox(format(#response[0])); |
|
|
Zireael |
Отправлено: 08 Февраля, 2022 - 11:07:35
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: а можно получить картинку через ссылку?
Вы уже это спрашивали https://kibor-bot.com/forum/topi...5&topic=1435
CODE:char c[9999999];
string path = "C:\Image123.jpg"; // куда сохранить картинку
int k = sendgetweb(#c[0], "Bot", "POST", "https:/"+"/joxi.ru","DrlP8xetG9GPPr.jpg");
if(k>0)
{
if(fopen(path, "wb"))
{
fwriteb(#c[0], k);
fclose();
start(path);
}
} |
|
|
Zireael |
Отправлено: 09 Февраля, 2022 - 01:38:10
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: разделить ссылку
CODE:string link = "http:/"+"/joxi.ru/DrlP8xetG9GPPr";
messagebox(link);
string domain, file;
if(regexsearch(1, #domain, link, ".+(?=/)"))
{
messagebox(domain);
if(regexsearch(1, #file, link, "(?<=/).+?", RIGHTTOLEFT))
{
messagebox(file);
}
} (Отредактировано автором: 09 Февраля, 2022 - 01:38:40) |
|
|
Zireael |
Отправлено: 10 Февраля, 2022 - 01:39:43
|
Эксперт
Покинул форум
Сообщений всего: 4465
Дата рег-ции: Нояб. 2017
Репутация: 585
|
Цитата: ссылка получаемая из ТГ приходит в таком виде "http://joxi.ru/DrlP8xetG9GPPr","entities":[{"offset":0,"length":29,"type":"url"
Если нужен пример, то пишите строку так чтобы можно было запустить скрипт в кибор.
CODE:string link = "http:/"+"/joxi.ru/DrlP8xetG9GPPr";
messagebox(link);
Вопросы касающиеся регулярных выражений не относятся к этой теме, есть соответствующая.(Отредактировано автором: 10 Февраля, 2022 - 01:57:25) |
|
|
Budni |
Отправлено: 10 Февраля, 2022 - 02:32:10
|
Специалист
Покинул форум
Сообщений всего: 419
Дата рег-ции: Март 2018
Репутация: 2
|
Zireael пишет: Вопросы касающиеся регулярных выражений не относятся к этой теме, есть соответствующая.
Да вопрос касается как получить картинку из тг, думаю многим будет это полезно.
Просто решение в составлении правильной регулярки.
Нужно получить картинку с ТГ. Если можно на прямую было бы здорово, но хотя бы через ссылку тоже подойдет.
Вот весь код в сборе. Но ссылка вида(для просмотра ссылки Вам необходимо авторизоваться) отправленная в ТГ приходит в таком виде.
http:/"+"/joxi.ru/DrlP8xetG9GPPr ,"entities":[{"offset":0,"length":29,"type":"url"
Из за чего способ разделения как вы показали не подойдет.
CODE:external(INT, "sendtelegrammessage", "sendtelegrammessage", "SendTelegram.dll");
external(INT, "gettelegrammessage", "gettelegrammessage", "SendTelegram.dll");
string token="xxxx:xxxxxxxxxxxx"; // токен
string chat_id="xxxx"; // id чата
char response[9999];
gettelegrammessage("xxxx:xxxx", "xxxx", address(#response[0]));
string link = format(#response[0]);
messagebox(link);
string domain, file;
if(regexsearch(1, #domain, link, ".+(?=/)"))
{
messagebox(domain);
if(regexsearch(1, #file, link, "(?<=/).+?", RIGHTTOLEFT))
{
messagebox(file);
}
}
char c[9999999];
string path = "C:\Image123.jpg"; // куда сохранить картинку
int k = sendgetweb(#c[0], "Bot", "POST", domain, file);
if(k>0)
{
if(fopen(path, "wb"))
{
fwriteb(#c[0], k);
fclose();
start(path);
}
}
|
|
|
|