Alex
Гораздо проще реализовать было через вебхуки
Snusmumriken
Если так то ещё ничо так. Но если бот хостится на кухонном компе - ему надо делать много запросов. Если бот хостится на внутренней машине предприятия - чаще всего, ему тоже надо делать много запросов.
Я сам делал бота, которому помимо ответов надо информировать о новых событиях (например, сервер упал), доступ извне - отсутствует (безопасность). Поэтому он проверяет, не прислали ли ему новое событие, а потом запрашивает телегу (не послали ли ему команду). Ну, условно каждые пять секунд.
Snusmumriken
Кстати, можно было бы сделать асинхронными long-polling запросами, параллельно с чтением входящей внутренней фигни, хе.
Alex
А тебе нужно было писать логику чтобы отделять новые сообщения от старых?
Alex
Или телега сама отвечает непрочитанными
Snusmumriken
В запросе телеге же указываешь offset на сообщеньки, при обработке - прибавляешь единичку к offset'у.
Alex
Ну все, statefull)
Alex
А у меня stateless)
Snusmumriken
Выпендриваешься, да?
Телега сама держит состояние. Посылаешь первый запрос без offset'а (или с отрицательным, сейчас не помню), телега возвращает номер сообщеньки которое только что послало, используешь его дальше.
Alex
Просто подходы сравниваю) не отрицаю что оба варианта приемлемы)
Snusmumriken
Ладно, зайдём с другой стороны: ты используешь какие-то библиотеки для ботов (кроме сокетов)? ))
Alex
Я на php делал, он по дефолту очищает память после завершения запроса
Alex
Поэтому для хранения пришлось что-то сверху делать
Snusmumriken
Не, я спрашиваю, разбирался ли ты сам в апишке, и калякал ли свои обработчики на то что возвращает телега : )
Плюс мало ли, если использовал - библиотека могла сама держать состояние за тебя.
Alex
Обработчики писал, естественно. Нужно же разбирать ответ от телеги
Alex
Состояние не держала бы. Если бы использовал reactphp чтобы состояние сохранилось бы - тогда да, возможно
Alex
Либо реализовывал сам как-то
Alex
А так, я просто получаю запрос с сообщением
Alex
Обрабатываю и посылаю ответ
Snusmumriken
Ну я понял, фактически это php-приложуля, которая срабатывает каждый раз как его дёргает вебхук, типа как запрос за страничкой, но запрос с json-payload от телеги. Для состояний надо было бы какую-нибудь редиску дёргать.
Alex
Да
Alex
Именно) проще ожидать запроса в моем случае)
Snusmumriken
Ну это если оно работает круглосуточно, а то грустно заставлять телегу стучаться часами в пустой сокет.
Alex
Согласен) телега же если не получает ответ
Alex
Будет стучаться ещё как минимум минут 10
Snusmumriken
А потом снова заводить-кочегарить.
Михаил
Ну плюс путь не узнаешь, узнаешь только по какому имени его вызывали.
Ну там, туда передаётся modname в require("modname") в качестве параметра скрипта "...".
Так, кстати, можно узнать, вызвали ли скрипт отдельно, или в качестве библиотеки:
-- вызвали через require (как библиотеку)
if ... then
-- возвращаем либу
return M
end
-- а если дёрнули скриптом - вот тут вот можем прогнать тесты
-- или накатать примеров, которые можно запустить и проверить, если запустили как скрипт
Ну ок, тогда должен подойти package.searchpath. Вроде, он ищет по тому же алгоритму, что и require
Snusmumriken
Неплохо, но оно возвращает первое вхождение (кстати, не был в курсе о принципе работы, сяп), а типа хотелось бы увидеть всё что найдёт, в том порядке, как бы вызывалось через require.
Михаил
Ну тогда нужно мучить package.searchers и костылить что-то самому...
Snusmumriken
Ну я типа мутил пробег по package.path/package.cpath и проверку на существование файла через попытку открытия, это не так сложно и максимально точно. Всю платформозависимую фигню можно взять в package.config.
Михаил
А зачем, если не секрет, нужен список всех возможных модулей? Грузиться-то всё равно будет первый найденный
Слава
А зачем иметь сразу несколько одинаковых модулей?
Snusmumriken
А зачем иметь сразу несколько одинаковых модулей?
Они не факт что одинаковые, но называться могут одинаково.
Например, у тебя пять либ которые называются "json", в разных местах. Но одна - это cjson, другая - стыренная с форума по wow, третья - сворованная с гита какого-нибудь Александра, четвёртая - твоя лично и т.д. Ну да, они все называются 'json', но могут быть немношк разными, и иметь чутка разную апишку. А тебе нужна конкретная, причём для данного интерпретатора, их тоже может быть много : )
Слава
Это где такой сырбор творится
Snusmumriken
Хехе, на компах снуса, конечно, да и на тех же линуксах такое в норме вещей.
Ты просто привык что корона сама за тебя всё импортит, а что не импортит - ты скопируешь в папку проекта. А я одни и те же либы дёргаю и чисто lua-интерпретатором, и love2d, и короной, и нгинксом. И раскиданы они по разным местам, доступ к ним через LUA_PATH/LUA_CPATH
Слава
В смысле, у тебя либы рядом с интерпретатором лежат?
Snusmumriken
Не только : )
Слава
Короче ты как-то слишком необычно придумал
Слава
Для починки костыля делаешь костыль
Слава
Но мне нравится
Snusmumriken
Ну сорян, если ты начнёшь стабильно кодить, у тебя и не такое будет.
Слава
Выйду ли я за рамки короны в плане языка луа - большой вопрос
Слава
А вообще можно сделать свою Anaconda для lua
Михаил
Можно. Кто б сделал...
Слава
Можно собраться летом и сделать
Слава
Недельки хватит
Слава
И кинуть в OpenSource
Слава
Люди приходят в сарай
vitaly
Lucky
Lucky
Упс
Lucky
Lucky
С наступающим!
Sven
С наступающим господа!
NM
С новым годом ! Чтобы lua встраивалась и была встраиаема куда только можно !😀
Lucky
Lucky
А на острове Тонга Уже утро нового года!
Lucky
Lucky
NM
Вау !
NM
Maxim
</2018><2019>С Новым Годом!
Anonymous
year2018:close()
year2019 = io.open("2019", "wb")
С Наступившим!
vitaly
vitaly
да админ бухает и император тоже
Lucky
Snusmumriken
Утречко.
Lucky
Утречко, ага.
Snusmumriken
Всё завалили своей травой пока я спал, и после моего тонкого намёка (что можно и без этого) - ещё продолжали >:/
Lucky
Ну, зато прикольную гифку про грибы притащили
Snusmumriken
Snusmumriken
Вот тебе прикольная гифка без грибов
Lucky
нене
Lucky
про грибы интересней
Lucky
Я ещё до http://amanita-design.net/
Lucky
и их самороста
Snusmumriken
Maxim
Коллеги, кто нибудь знает есть для lua какой нибудь remote-web-driver для selenium ?
vitaly
называется пхп