Автор Тема: Передать текст Telegram-боту  (Прочитано 3293 раз)

0 Пользователей и 1 Гость просматривают эту тему.

novhome

  • Освоившийся
  • **
  • Сообщений: 31
    • Просмотр профиля
Передать текст Telegram-боту
« : Июнь 05, 2021, 06:02:51 pm »
Зравствуйте!
Столкнулся с проблемой. Никак не могу понять, как отправить текст в чат Telegram напрямую из Clickermann.
Отправка через браузер работает, а можно ли напрямую?
« Последнее редактирование: Август 20, 2021, 12:18:12 pm от novhome »

Dlmx

  • Зашел в гости
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Текстовое сообщение из Clickermann в Telegram
« Ответ #1 : Июнь 23, 2021, 01:48:03 pm »
Код: Clickermann
  1. // Клики в строку сообщения
  2.  
  3. TOCLIP("Текст")
  4. WAITMS (10)
  5. KEYDOWN (#CTRL)
  6. WAITMS (50)
  7. KEYPRESS (#V)
  8. KEYUP (#CTRL)
  9. WAITMS (50)
  10.  
  11. // Скрипт отправляет сообщение

novhome

  • Освоившийся
  • **
  • Сообщений: 31
    • Просмотр профиля
Re: Текстовое сообщение из Clickermann в Telegram
« Ответ #2 : Август 20, 2021, 12:17:20 pm »
Наверное, я неправильно описал ситуацию.
Пытаюсь отправить сообщение telegram-боту через HTTPGET
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

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3831
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: Передать текст Telegram-боту
« Ответ #3 : Август 20, 2021, 05:44:05 pm »
Может функция HTTPGET примитивная и ждёт HTML, а здесь приходит JSON.
Мне не удавалось получить ответ и на другом ресурсе, где возвращается 'Content-Type': 'application/json'

P.S. Но я попробовал костыль через curl в cmd, всё работает.
Код: Clickermann
  1. $url = "https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text="
  2. $text = "Hoba!"
  3.  
  4. EXECUTE("cmd.exe", STRCONCAT("/C curl ", CHAR(34), $url, $text, CHAR(34)))
  5.  
  6. HALT

curl уже встроен начиная с Windows 10 v 1803
« Последнее редактирование: Август 22, 2021, 10:00:20 am от Vint »


novhome

  • Освоившийся
  • **
  • Сообщений: 31
    • Просмотр профиля
Re: Передать текст Telegram-боту
« Ответ #4 : Август 22, 2021, 03:19:42 am »
Спасибо за наводку.
Получилось через curl, но немного пришлось поправить код. HTTPGET не нужен, с ним curl выдает ошибку.
Сделал так:
Код: Clickermann
  1. $url = "https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat_id>&text="
  2. $text = "Hoba!"
  3.  
  4. EXECUTE("cmd.exe", STRCONCAT("/C curl ", CHAR(34), $url, $text, CHAR(34)))
  5.  
  6. HALT
[size=78%]В процессе отладки выяснилось, что через curl не отправляется текст на кириллице (выдает ошибку, что текст не UTF-8). Возможно, это настраивается, но я не нашел.[/size]
[/size][size=78%]В скрипте требуется отправка сообщений на кириллице.[/size]


Vint

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


Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3831
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • Просмотр профиля
Re: Передать текст Telegram-боту
« Ответ #6 : Август 22, 2021, 10:03:43 am »
Нужно или предварительно перекодировать строку энкодером если набор строк постоянный, или перекодировать онлайн ресурсами на лету, или самому написать энкодер.