Author Topic: Передать текст Telegram-боту  (Read 5167 times)

0 Members and 1 Guest are viewing this topic.

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Передать текст Telegram-боту
« on: June 05, 2021, 06:02:51 PM »
Зравствуйте!
Столкнулся с проблемой. Никак не могу понять, как отправить текст в чат Telegram напрямую из Clickermann.
Отправка через браузер работает, а можно ли напрямую?
« Last Edit: August 20, 2021, 12:18:12 PM by novhome »

Dlmx

  • Зашел в гости
  • *
  • Posts: 9
    • View Profile
Re: Текстовое сообщение из Clickermann в Telegram
« Reply #1 on: June 23, 2021, 01:48:03 PM »
Code: (clickermann) [Select]
// Клики в строку сообщения

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

// Скрипт отправляет сообщение

novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Текстовое сообщение из Clickermann в Telegram
« Reply #2 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.
Если вставить ссылку в браузер, то все срабатывает и боту приходит текст.
Куда копать никак не пойму.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Передать текст Telegram-боту
« Reply #3 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
« Last Edit: August 22, 2021, 10:00:20 AM by Vint »


novhome

  • Освоившийся
  • **
  • Posts: 31
    • View Profile
Re: Передать текст Telegram-боту
« Reply #4 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]


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Передать текст Telegram-боту
« Reply #5 on: August 22, 2021, 09:59:48 AM »
HTTPGET конечно не нужен, это случайно скопировал твой пример без редактирования, я то использовал реальный токен и id..
А кириллица по стандарту и не может быть в запросе. В любом случае русский текст и англ. текст с пробелами или не ASCII нужно перекодировать url-энкодером.
Пробел это %C и т.д. если замечал в адресной строке.
« Last Edit: August 22, 2021, 10:01:23 AM by Vint »


Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Передать текст Telegram-боту
« Reply #6 on: August 22, 2021, 10:03:43 AM »
Нужно или предварительно перекодировать строку энкодером если набор строк постоянный, или перекодировать онлайн ресурсами на лету, или самому написать энкодер.