Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: novhome on June 05, 2021, 06:02:51 PM

Title: Передать текст Telegram-боту
Post by: novhome on June 05, 2021, 06:02:51 PM
Зравствуйте!
Столкнулся с проблемой. Никак не могу понять, как отправить текст в чат Telegram напрямую из Clickermann.
Отправка через браузер работает, а можно ли напрямую?
Title: Re: Текстовое сообщение из Clickermann в Telegram
Post by: Dlmx on June 23, 2021, 01:48:03 PM
Code: (clickermann) [Select]
// Клики в строку сообщения

TOCLIP("Текст")
WAITMS (10)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)
WAITMS (50)

// Скрипт отправляет сообщение
Title: Re: Текстовое сообщение из Clickermann в Telegram
Post by: novhome on August 20, 2021, 12:17:20 PM
Наверное, я неправильно описал ситуацию.
Пытаюсь отправить сообщение telegram-боту через HTTPGET
Code: [Select]
HTTPGET("https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text=Test")В errorlog.txt получаю ошибку HTTPGET Error.
Если в качестве ссылки вставить, например, "https://yandex.ru", то ошибки нет.
Windows 7x64. Clickermann v.4.13.014x32. Рядом с экзешником лежат libeay32.dll и ssleay32.dll.
Если вставить ссылку в браузер, то все срабатывает и боту приходит текст.
Куда копать никак не пойму.
Title: Re: Передать текст Telegram-боту
Post by: Vint on August 20, 2021, 05:44:05 PM
Может функция HTTPGET примитивная и ждёт HTML, а здесь приходит JSON.
Мне не удавалось получить ответ и на другом ресурсе, где возвращается 'Content-Type': 'application/json'

P.S. Но я попробовал костыль через curl в cmd, всё работает.
Code: (clickermann) [Select]
$url = "https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text="
$text = "Hoba!"

EXECUTE("cmd.exe", STRCONCAT("/C curl ", CHAR(34), $url, $text, CHAR(34)))

HALT

curl уже встроен начиная с Windows 10 v 1803
Title: Re: Передать текст Telegram-боту
Post by: novhome on August 22, 2021, 03:19:42 AM
Спасибо за наводку.
Получилось через curl, но немного пришлось поправить код. HTTPGET не нужен, с ним curl выдает ошибку.
Сделал так:
Code: (Clickermann) [Select]
$url = "https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text="
$text = "Hoba!"
 
EXECUTE("cmd.exe", STRCONCAT("/C curl ", CHAR(34), $url, $text, CHAR(34)))
 
HALT
[size=78%]В процессе отладки выяснилось, что через curl не отправляется текст на кириллице (выдает ошибку, что текст не UTF-8). Возможно, это настраивается, но я не нашел.[/size]
[/size][size=78%]В скрипте требуется отправка сообщений на кириллице.[/size]

Title: Re: Передать текст Telegram-боту
Post by: Vint on August 22, 2021, 09:59:48 AM
HTTPGET конечно не нужен, это случайно скопировал твой пример без редактирования, я то использовал реальный токен и id..
А кириллица по стандарту и не может быть в запросе. В любом случае русский текст и англ. текст с пробелами или не ASCII нужно перекодировать url-энкодером.
Пробел это %C и т.д. если замечал в адресной строке.
Title: Re: Передать текст Telegram-боту
Post by: Vint on August 22, 2021, 10:03:43 AM
Нужно или предварительно перекодировать строку энкодером если набор строк постоянный, или перекодировать онлайн ресурсами на лету, или самому написать энкодер.