TelegramAdvanced



  • Название: TelegramAdvanced
    Версия: 1.1 (BETA)
    Данные: https://cloud.mail.ru/public/Kf6H/RPcQbxKcE
    Согласие на добавление модуля в BAS: Да
    Описание: Продвинутый модуль для работы с api телеграм ботов в BAS. Планируется на смену\дополнение оригинального модуля "Telegram". На данный момент доступны функции отправки сообщений, картинок base64, кнопок, ожидание ответа от пользователя и сохранение текста сообщения в переменную, таким образом, можно дистанционно управлять софтом, например, прописав ряд команд, которые вызывают асинхронные функции, тем самым запуская работу программы. Пока что все действия на английском языке, а названия переменных могут конфликтовать с пользовательскими, на днях все исправлю. В этой теме хочу видеть методы api телеграм, которые нужны вам, по-возможности добавлю их в модуль. Веду переговоры с разработчиком BAS насчет добавления модуля в официальный релиз.
    Список всех функций пока:
    14d62826-4b3e-4e5a-a622-a3726cddcc4f-image.png
    История версий:
    10-16-2021, бета 1.1, исправлена работа функции WaitMessage в режиме запуска, добавлена задержка для этого действия в 2 секунды, чтобы телеграм не банил IP
    10-14-2021, выпущена бета 1.0



  • задумка классная только русифицировать кубики и было бы шикарно



  • @Wavvy_the9 Ваш модуль использует api http-клиента BAS, в связи с этим есть несколько проблем. Во первых ваш модуль использует текущие настройки прокси http-клиента. Это значит, что невалидный прокси не позволит вам отправить сообщение:

    support1009.gif

    После использования любого действия модуля заменяется состояние последнего запроса http-клиента. То есть действие "Содержание ответа" вернёт данные запроса модуля, а не http-клиента ранее:

    support1010.gif

    Это справедливо для следующих действий:

    Текущий Url
    Содержание ответа
    Статус ответа
    Получить заголовок
    Xpath получить xml
    Xpath получить каждый xml
    Xpath получить текст
    Xpath получить каждый текст
    Xpath получить количество элементов
    Xpath проверить существование
    

    Действие "WaitMessage" срабатывает только на сообщения, которые были введены после старта действия. То есть если вы напишете боту команду до фактического запуска этого действия, то действие не вернёт результат.
    Ещё у этого действия слишком большая частота отправки запросов:

    support1011.gif

    сервер телеграм просто заблокирует ваш ip за ddos атаку, особенно при работе в многопотоке.


    Несколько моментов по коду. Для использования данных внутри функций вы зачем то используете переменные BAS:

    4141f273-4159-415e-b6db-18d68caf2dcb-изображение.png

    Особенно удивило решение использовать стандартные названия переменных других действий:

    1419dce3-4666-4bd8-b3e3-4c68205e672b-изображение.png

    То есть если пользователь заранее сохранит данные запроса из http-клиента в переменную SAVED_CONTENT, то это действие всё равно перезапишет данные.


    Ещё есть несколько проблем с оформлением, нет описания действий, нет описания полей действий, нет перевода самих действий.

    То есть нет разницы в локализации BAS, в обоих языках часть интерфейса действий будут на английском, а часть на русском:

    73c79ce5-42dc-496f-b623-dd31e085357d-изображение.png

    e382b839-9add-4bc2-9da2-3be7d7ca3481-изображение.png



  • @Fox Здравствуйте! По поводу использования стандартного HTTP клиента и стандартных названий переменных (которые могут перекликаться с переменными пользователей) мне уже сообщили, что это не очень удобно, буду менять.
    По поводу "Действие "WaitMessage" срабатывает только на сообщения, которые были введены после старта действия. То есть если вы напишете боту команду до фактического запуска этого действия, то действие не вернёт результат." - так ведь и должно быть, разве нет? Мало ли что мы пишем боту, до того, как сказали ему ждать команду, по-моему, это логично и удобно. Насчет частоты запросов тоже сомневался, но все таки, прислушаюсь к вашему совету и добавил задержку в 2 сек между запросами.
    Ну а насчет локализации, описания, и, от себя добавлю, лога, так это все будет изменено ближе к финальной версии, потому что, насколько я знаю, менять названия функций на русские можно только в самом manifest.json, и после обновления модуля из BAS (я пишу модуль именно в BAS, не чистым кодом), все названия все равно сбрасываются на английский. Также в финальной версии уберу лог, сейчас это, скорее, отладочная информация. А еще действие waitMessage не работало при запуске или многопотоке, т.к если использовать действия JSON в модуле, но не использовать в самом скрипте - ничего работать не будет, надо сообщить разработчику BAS об этой проблеме. Следовательно, экшены json из модуля я заменил на json команды через "выполнить код".
    Новая версия уже в шапке.



  • Очень большие кнопки в действии SendButton, используйте "resize_keyboard":true в теле запроса. Нет возможности добавить кнопки, если нужно использовать например 3шт. Было бы удобно передавать в действие SendButton кнопки списком и просто указывать переменную со списком и какое количество кнопок должно располагаться в одном ряду. Еще неплохо было бы добавить InlineKeyboard.



  • @John_Bradley Спасибо, учту, в будущих обновлениях добавлю.
    @Fox к вам такой вопрос: не знаете ли, как сделать несколько возвратных значений в функции? Чтобы действие "ждать сообщение", например, возвращало не только текст сообщения, но и ID юзера.



  • @Wavvy_the9 возвращать массив, а лучше объект, например:

    { userId: 123456789, message: 'Hello from telegram!' }
    

    Такое спокойно можно будет обработать тем же модулем JSON



  • @Oyasumi-Punpun Спасибо


Log in to reply
 

  • 85
  • 37
  • 117
  • 2
  • 7
  • 21
  • 162