Sergey Pavlov
Sergey Pavlov личный блог
15 апреля 2020, 05:10

Telagram+Quik+Lua: сам себе мессенджер

Самый простой способ, которым я пользовался долгое время.
Нужно установить две программы: Tor browser и curl.
Первая, чтобы блокировки телеграма обходить. Вторая, чтобы сетевую команду исполнять.

Разумеется, телеграм-бот уже должен быть создан, вы должны знать его идентификатор, а также айди своего телеграм-аккаунта,
чтобы подписаться на бота и видеть сообщения от бота.

В луа после этого всё предельно просто:
str='C:\\curl-7.63.0-win64-mingw\\bin\\curl.exe --socks5 127.0.0.1:9150 '
	str=str..'"https://api.telegram.org/botидентификаторвашегобота/sendMessage?chat_id=айдивашегоаккаунта&text='

str=str..переменная1..": "..переменная2
str=str..'"'
os.execute(str)
Приведенный код будет слать в телеграм значения двух переменных, разделенных двоеточием.
Всё просто, но есть два нюанса:
1. Каждая отправка сообщения сопровождается вызовом окна командной строки, которая всплывает поверх всех окон на одну-две секунды. Поэтому слать такие сообщения на машине, с которой вы работаете, чаще одного раза в минуту, не стоит.
2. Я таким способом пользовался больше года и считал, что он и легкий и надежный, но оказалось, что он легкий, но ненадежный. Один раз у меня случилась такая штука. Всплыло черное окошко командной строки, сообщение в телегу не ушло, окошко продолжило висеть. Видимо, какой-то сетевой сбой. И, как оказалось, квик-поток, вызвавший эту командную строку через os.execute, тоже завис и квик перестал коннектиться почему-то, потерял данные и тд. После того, как я это окошко закрыл крестиком, квик продолжил работу. Грубо говоря, из десятков тысяч запусков за год применения такого способа 1 вот такой глюк. Редко, но неприятно.

А какие вы знаете простые, легкие и надежные способы информирования без необходимости много кодить?

9 Комментариев
  • iddqd3n
    15 апреля 2020, 07:48
    Должна быть библиотека для сокетов внутри луа, тогда курл не нужен.

    Кстати, этот код случаем не внутри одного из коллбэков? Они идут в основном потоке квика и вполне способны его вешать.
      • Андрей Иванов
        19 апреля 2020, 19:58
        Sergey Pavlov, чтобы такого не было зависания курла я использую ключ --connect-timeout 10 через десять секунд разорвет соединение если не будет ответа от телеграмма, возможно это поможет.
        Моя строка выглядит так
        os.execute('start /MIN C:\\curl\\curl.exe --connect-timeout 10 -k -s «api.telegram.org/»')

        окно командной строки сразу сворачивается и не мешает
  • Дмитрий К
    15 апреля 2020, 09:41
    Не знаю, у меня через сокеты и питон работает, хоть 10 раз в секунду отправляется инфа о сделке (когда по одной заявке много маленьких сделок одновременно) ничего не тормозит.  
  • Replikant_mih
    15 апреля 2020, 11:05
    Роскомнадзор, конечно, немного добавил препятствий. Тоже шлю в телегу, а точнее бот у меня. Если от квика датафидюсь, у меня VPN на локальной машине на весь траф, в т.ч. на траф из скрипта. Можно ещё прокси юзать, как вариант. А если в облаках размещаться не наших, то вообще отлично запросы к телеграму проходят). Недавно освоил запрос, который картинки в телегу шлет), теперь скрины графика себе шлю).
  • Replikant_mih
    15 апреля 2020, 11:13
    Серег, учи Python, коннекться с Alor OpenAPI и будет тебе счастье). Квик зло).
  • yurikon
    15 апреля 2020, 11:57
    Сергей, наверно лучше взять готовую библиотеку телеги под луа и ее использовать. Что-нибудь такое:
    https://github.com/wrxck/telegram-bot-lua

  • Евгений Гуревич
    15 апреля 2020, 13:53
    Делаю приблизительно так же, только вместо тора — опера с включенным VPN, и запускается она из кода на C++
  • quant_trader
    15 апреля 2020, 15:28
    «2. Я таким способом пользовался больше года и считал, что он и легкий и надежный, но оказалось, что он легкий, но ненадежный.»

    Не стоит завешивать (ждать выполнения) роботов/квик. Через командную строку дергаем vbs/питон скрипт который отработается или не отработается сам по себе, подождет ответа от сервиса, перепошлет если надо, запишет в лог реплай от сервиса итд. Из Ами дергаю по ShellExecute, он не ждет ответа, из Квика просто пишу в файлы а алерты уже из своего софта по тому же принципу. Это относится к телеграммам, емейлу, смс итд.

    «А какие вы знаете простые, легкие и надежные способы информирования без необходимости много кодить?»

    Емейл (через встроенный в виндоуз функционал, без сторонних прог) и смс через http запросы. Несколько строк в vbs. На андроиде есть прога AlarmManager, умеет читать смс и вотсап, по кейвордам может включить звуковой алерт, оч удобно.

    Понимаю что телега очень удобно но в случае суверенного интернета действительно критичные алерты надо слать исключительно через локальные сервисы и исключительно через открытые протоколы типа http.

    Имхо

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн