TelegramAdvanced

Делитесь модулями
  • Название: TelegramAdvanced

    Версия: 1.2 (BETA)

    Данные: модуль, демо скрипт
    00c11f76-dea9-4150-8617-3c346054da10-TelegramAdvanced.zip

    Согласие на добавление модуля в BAS: Да

    Описание: Продвинутый модуль для работы с api telegram ботов в BAS. Планируется на смену\дополнение оригинального модуля "Telegram". На данный момент доступны функции отправки сообщений, картинок base64, кнопок, стикеров, блокировка пользователя в групповом чате, ожидание ответа от пользователя и сохранение текста сообщения в переменную, таким образом, можно дистанционно управлять софтом, например, прописав ряд команд, которые вызывают асинхронные функции, тем самым запуская работу программы. Пока что все действия на английском языке, а названия переменных могут конфликтовать с пользовательскими.

    Также к модулю прилагается исходник скрипта телеграм бота для удаленного запуска функций из телеграм.

    Список всех функций:
    alt text

    История версий:

    02-18-2023, 1.2, уменьшена задержка ожидания сообщений, добавлены функции отправки стикеров и блокировки пользователя в групповом чате, все функции теперь возвращают ответ, модуль русифицирован, модуль БОЛЬШЕ НЕ РАБОТАЕТ НА СТАРЫХ ВЕРСИЯХ BAS (скорее всего, работает только с версии 24+)
    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 Спасибо

  • А совместить отправку фото и текста можно?

  • Здравствуйте, интересный вопрос) а можно как то отправить в телеграм разгадывание капчи? то есть бот работает, вылезла капча на сайте и её гадание отправляется в телеграм и уже из самого телграма гадаешь её?))

  • @ElTigre ну если простая капча, то можно. Изучайте телеграм апи для ботов.

    Только зачем такой изврат, когда такую капча гадать стоит копейки

  • @UserTrue said in TelegramAdvanced:

    @ElTigre ну если простая капча, то можно. Изучайте телеграм апи для ботов.
    Только зачем такой изврат, когда такую капча гадать стоит копейки

    а как определить простая капча или нет) ну почему изврат, как один из вариантов решения капчи. ручной или автоматический) если вам не сложно ткните носом в нужную ссылку чтоб по изучать) давно ищу нечто подобное, но безуспешно(

  • @ElTigre https://core.telegram.org/bots/api

    Хотя судя по описанию данного модуля это можно реализовать с его помощью.

    Отправляете картинку и ждёте ответ.

    Но я всё равно не понимаю зачем это надо, если объемы маленькие то положите на баланс сервиса по разгадывание капч 100р и не занимайтесь ерундой. А если большой объем, то существует xEvil и capmonster

  • @UserTrue было бы шикарно если бы это реализовали в модуле)

  • @ElTigre said in TelegramAdvanced:

    @UserTrue было бы шикарно если бы это реализовали в модуле)

    Другими словами, вам бы очень хотелось, что бы кто то за вас сделал то, что нужно вам?

  • @Fox другими словам было бы шикарно что в этом модули была такая функция. думаю твой сарказм не к месту) да если даже так и что?) это плохо? если я не могу подобного сам сделать,а человек сможет. не вижу проблемы в принципе. лучше бы помогли с этим)

  • @ElTigre said in TelegramAdvanced:

    @Fox другими словам было бы шикарно что в этом модули была такая функция. думаю твой сарказм не к месту) да если даже так и что?) это плохо? если я не могу подобного сам сделать,а человек сможет. не вижу проблемы в принципе. лучше бы помогли с этим)

    Здесь я больше согласен с @UserTrue, программа называется "BrowserAutomationStudio", а не "BrowserManualStudio".

  • Функция ожидать сообщение не видит сообщение самого бота, как это исправить? Приходят только сообщения которые введены другими пользователями. Но я пересылаю сообщения от имени самого бота с других источников, и мне нужны они в БАС.

  • Интересно можно ли с этого сделать полноценного телеграмм бота

  • Модуль обновлен.