СЛЕГ! <Z> ️
523 subscribers
678 photos
20 videos
12 files
307 links
Здесь создают авторских телеграм-ботов. Когда не справляются конструкторы и веб-студии - есть СЛЕГ.

Статистика ботов:
https://ssleg.tech/bots_view.html

Написать автору: @yesitsnew

TW: ещё тут политота, утечки баз и игры в товарища майора на минималках
加入频道
Мой любимый бот Фома внезапно прошёл сейчас стресс-тест.

На чат, в котором он работает, попытался наскочить ботнет в 4070 человек. Бот выдержал нагрузку и старательно всех посчитал.

В итоге выяснилось его реальное быстродействие: 10-15, в среднем 13.3 команды в секунду и подтвердилась надёжность архитектуры.

В отличии от шилди бота, который пал смертью храбрых, Фома может переработать и бОльшие объёмы мамкиных нагибаторов.

UPD (13/02) полноценная защита от DDoS проверена ещё двумя атаками, все набегавшие забанены автоматически. Потери противника - около 9к аккаунтов.

Заказать или связаться с автором: @yesitsnew
Media is too big
VIEW IN TELEGRAM
Видео от фанатов, как Фома отбивает очередной набег ботов на чат. 😁
Интересное чтение под утренний кофе. Не знаю прав ли товарищ или нет, у меня почти нет опыта разбора некрокода. Но мысль интересная, а финальный вывод выглядит очень логично:

Проект начинает умирать в момент остановки разработки. И если нет текущих проблем, лучше их себе "выдумывать" искусственно. https://habr.com/ru/company/vdsina/blog/534696/
Нашёл кажется самый смешной баг в своём коде за последнее время.

В многоадминских больших чатах нужен механизм, предусматривающий применение наказаний только по возрастанию. То есть если админ1 даёт мьют на неделю, а админ2, секундой позже, тому же юзеру даёт сутки, должна сработать только неделя.

Такой механизм был сделан, вписан в класс-контроллер чата и успешно оттестирован.

Но. Сегодня сработал антиспам на вполне невинного чудака в чате, автоматика Фомы выдала ему три дня, все ок.

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

WARNING foma_classes [2021-02-20 19:44:00,866] наложение наказаний: (10, datetime.datetime(2021, 2, 23, 16, 55, 58, 952176)), код:10

P. S. Хорошо, что Фома пока ещё работает в режиме отладочного (полного) лога, поэтому понять что произошло было легко.
Половину дня убил вчера на реверс-инжиниринг сайта активного гражданина. Страница голосования там состоит из 4,5 мегабайт специально сделанного нечитаемым javascript кода (убраны пробелы и строки, машине пофигу, а человеку грустно).

Но, благодаря подсказкам уважаемого @eshu_coding я перехватил правильный запрос статистики. Теперь у меня есть бот-наблюдатель за выборами памятника на лубянской площади. Всего 80 строк, полный код в скринах.

Один раз в минуту записываются в файл текущие результаты и, при изменениях больше чем на 1 процент, рапортуется в чатик.
Комментарий Эшу. Всё по делу, да. Включая то, что метод post вообще предназначен для отправки данных на сервер, но в моем случае работает как get. В общем, как сказано в прекрасном фильме про все: "― Ален ноби, ностра алис! Что означает - если один человек построил, другой завсегда разобрать может!" © (римляне и фильм "формула любви")
Подумал, и поставил на мониторинг свежее, совершенно обычное голосование на активном гражданине.

В целях накопления статистики как обычно идёт голосование в АГ. Тут явно не будет конфликта и накруток и можно будет динамику использовать как референс.

Гражданский контроль, ок, значит контроль :)

P.S. Сsv с накопленными данными будет доступен для исследований по запросу.
СЛЕГ! <Z> ️
Photo
Результат первых суток наблюдения за рядовым голосованием на АГ, которое никто не накручивает. Суммарно проголосовало сию 58к людей.

Забавно, что москвичи мало спят, ночное плато по голосам всего-то с 23:30 до 06:30.
ag_mon.zip
4.2 KB
Я закончил разбираться в устройстве Активного Гражданина и теперь могу предоставить вам набор инструментов для изучения голосований.

Все потроха спрятаны внутрь класса AgController, из которого наружу выведены два метода:

detect_new_poll() - обнаруживает новые голосования и начинает их мониторить.
Возвращает 0 или количество новых голосований.

write_stats() - собирает и записывает все данные по всем активным голосованиям.
Возвращает True. Если хотя бы один вопрос получить с сервера не удалось, то False.

Достаточно эти два метода вызывать раз в 5 минут (период обновления данных голосований) и у вас есть вся информация.

Закончившиеся голосования перестают мониториться автоматически.
Количество вопросов в одном голосовании и вариантов ответов - любое.
СЛЕГ! <Z> ️
ag_mon.zip
Продолжение, начало выше ⬆️

Состав пакета:
main.py - демонстратор работы с классом
ag_classes.py - модуль с классами АГ
ag_poll_results.sqlite - пустая БД Sqlite, куда складываются данные.
sqlite_create.sql - скрипт для создания БД (на всякий случай)
visualisation.py - бонус-трек, программа для автоматической генерации графиков голосования. Единственное что нужно делать руками - менять параметр question_number в начале кода.

Лицензия - вы можете использовать, модифицировать, распространять и делать вообще что угодно с кодом. Но желательно не стирать указание на автора (MIT/BSD)
Я знаю, что мой канал читает несколько девушек, увлекающихся/работающих в области программирования и датасатанизма.

С праздником, девушки! А эта красивая картинка - праздничный цветочек :)
Вы спрашивали, что такое быдлокодер и чем он отличается от программиста? 😂
Телеграм предупреждает, что он поверил в свое светлое будущее и собирается вырасти до более чем 2.15 миллиардов пользователей.

Программирующим на Python беспокоиться не нужно. А вот тем кто пишет на C и близких к нему языках, пора проверить тип хранения поля user_id

P. S. Сейчас свежие user_id раздают в диапазоне 1.6-1.7 миллиарда.

P. P. S. Но питонистам тоже есть что обновить. Сейчас понял, что в базе данных у меня user_id таки integer. Мне необходимо будет обновить таблицы postgresql до использования bigint.
Как внезапно приходит слава. Официальный саппорт Qiwi рекламирует мой модуль, написанный в августе 2020 года, как референсный. Сейчас помог человеку запустить модуль в его проекте. Это уже как минимум шестой проект на нем (из тех, что я достоверно знаю). Спасибо Киви за такой пиар.
Есть. Мой модуль контроля Активного Гражданина засек новое голосование в момент его начала и собирает данные. Весь код работает корректно. А вот к данным есть некоторые вопросы, впрочем раньше, чем через пару месяцев накопления, всерьез я ничего заявить не смогу. :)

Upd (16/03). К данным все же вопросов нет.
Новая голосовалка на АГ из трех вопросов. Сегодня уже 10 дней как я полностью собираю все данные всех опросов активного гражданина.

Придётся признать, что он состоит из живых людей, которые там голосуют. Все проблемы на графиках оказались моими проблемами, иногда АГ обновляется раз в 10 минут, а не раз в 5, что приводит к выбросам на графиках активности.

Соответственно большую статью с графиками я планирую написать в начале апреля, через месяц непрерывного наблюдения. Выведу средние параметры количества проголосовавших, время жизни голосования по дням и так далее. Только придётся ещё написать нормализацию данных для графиков.

Ещё выяснилось, что АГ проводит очень много мелких голосований, выделяя отдельные группы москвичей по районам, социальному статусу, количеству детей, наличию животных и так далее. Там проголосовавших ~10-15к. Некоторые из этих голосовалок можно найти простым подбором poll_id. В целом получается, что мэрию интересует мнение москвичей и АГ реальный инструмент его выяснения.