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

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

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

TW: ещё тут политота, утечки баз и игры в товарища майора на минималках
加入频道
Ахтунг-ахтунг!
Вышел PyСharm версии 2020.1.2. Липовый сервер активации на нем не работает. Китайцы убрали лекарство из общего доступа и развивать его больше не планируют. Не обновляйтесь, если у вас нет лицензии!

Последняя боеспособная версия PyCharm, которую можно использовать с китайским лекарством: 2020.1.1 (её можно взять здесь)

P. S. Это касается pro версии. Коммьюнити была и остаётся бесплатной, но она мало что умеет.
Сделал самый крутой канал в телеграм: @purekaraul - только авторские посты Караульного в которых он жжот напалмом. А на скрине модуль бота, который его наполняет. Это полный код. Все оказалось очень просто, как только я разделил ботов на модули. Подписывайтесь, чтобы не пропустить, когда Караулка опять напьётся :)
Пятиминутка ненависти к 🐍

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

Переношу бота на VPS. Из консоли все работает. Бот уже месяц не менялся, все давно отлажено, блохи вычесаны. Добавляю в автозапуск крон. Падает. Не смотря даже на логи, падает молча. В логе крон тоже пусто.

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

file = open('spec.txt')
for line in file: - бумц. (всю жизнь же работало)

Вывожу хандлер файла и рыдаю:
file <_io.TextIOWrapper name='spec.txt' mode='r' encoding='ANSI_X3.4-1968'>
us-ascii, ага. Самое то, чтобы читать юникод.

Лечение:
file = open('spec.txt', encoding='UTF-8')
Работает.

Но логгинга все равно нет. Потому что из крона он понимает только латиницу, если без шаманских плясок. Как я писал 20 лет назад все на английском, так и надо продолжать делать.

2020 год? Не, не слышали. В итоге питон работает хорошо только на той машине и в том окружении, на котором написан скрипт. Любой перенос на другую платформу это неочевидные приключения в разных местах 🤷‍♂
И минутка рекламы. Вот у этих ребят я VPS на месяц взял погонять, бесплатно. Сервис простенький, но постгрес и питон развернулись на ура, проблем не возникает пока.
UPD (22/06): сервис дерьмо полное, за 19-21 июня он три раза ложился отдыхать на 2-4 часа. Категорически не рекомендуется ни для чего, кроме как бесплатно потрогать и понастраивать VPS.
Пока политический сектор "решает судьбы страны", сторонники бойкота ломают копья об сторонников голосования, в реальности у людей наконец-то наступило лето.

На этой неделе, дважды, приток свежих пользователей в политчаты стал меньше 1000 человек в сутки. Впервые за всю историю наблюдения (с начала апреля).
Внезапно ожил большой чат борцунов с режимом, который был приватным с начала апреля. Забавно, что при разрастании по численности в два раза, актив вырос всего на 5 человек. Набегайте, если интересно, через канал @munscanner (но там вяленько, судя по количеству сообщений)
У белорусов вскипело. Тихий и унылый чат про короновирус переименовали в "выборы в Беларуси" и понеслась. Приток более 1200 юзеров в сутки, 8к сообщений вчера и 3,5к с утра сегодня. Окунуться:
@majakrainablr
Хех, как просто оказывается, когда разобрался в теме. Зря я вообще в cron лазал. Лучший способ работы ботов это инсталляция его системным сервисом.

В конкретном применении к телеграм это имеет пару деталек, поэтому небольшая инструкция. Будет работать на ubuntu и его клонах как минимум.

Делай раз — обмазываемся bash:
создаем в папке home файл admin.sh
#!/usr/bin/env bash
cd /home/admin_utils
./magic.py

Это обязательно, без установки рабочей папки телетон не найдет сессионый файл.

Делай два - объясняем systemd что у него новый сервис:
создаем в папке /etc/systemd/system файл admin.service
[Unit]
Description=Admin
After=multi-user.target

[Service]
Type=idle
ExecStart=/home/admin.sh
Restart=always

[Install]
WantedBy=multi-user.target

В консоли набираем
systemctl daemon-reload
systemctl enable admin

Все.
Теперь бот сам запускается при загрузке системы.
Если бот ловит ошибку и вылетает, systemd его перезапускает автоматически. Обновление кода и добавление фишечек делается заливкой файлов на сервер и набором одной команды
systemctl restart admin

Осталось немного украсить код, чтобы бот правильно выключал телеграм при перезагрузке сервиса или системы. В основной код бота надо дописать:
import signal

async def terminate():
await client.disconnect()

def sigterm_call(signum, frame):
levent = 'получен SIGTERM ' + str(signum)
logging.info(levent)
client.loop.create_task(terminate())

signal.signal(signal.SIGTERM, sigterm_call)
Тонкость в том, что хандлер сигтерм не асинхронный. И из него надо вызвать asyncio функцию, которая вызовет дисконнект клиента, после чего программа полностью и корректно завершится. :)
По "утечке 40 млн" могу сказать следующее:
На малой выборке моих приятелей, 7 из 13 человек в этой базе есть. Исходный формат этой базы - кронос. Это специальная БД, разработанная в ГИВЦ ФСБ РФ (сейчас называется по другому).

Ещё одно подтверждение, что телеграм это самый защищённый мессенджер, по версии ФСБ РФ.
Продолжим изучение трудов товарища майора aka «утечка 40 млн. телефонов».

Товарищ майор традиционно криворук, поэтому разобранная база выглядят так:
В ней 40 640 449 записей.
Из них:
7 364 556 записей является дубликатами, 218 записей вообще не содержат информации (пустые строки).

Итого, реально в базе 33 275 675 номеров телефонов в привязке к аккаунтам пользователей.

Так же найдена замечательная «открытка» от автора утечки. С удовольствием ее процитирую:


«|11006325|ПАВЕЛ ЛЕОНИДОВИЧ СИТНИКОВ|Крыса ворующая базы с RaidForums и продающая их в своем канале https://yangx.top/ freedomf0x|79992161984|ИНН 602507478203|Паспорт Серия 5806 № **|выдан 18.10.2006|»

😂
Разбивка по странам ещё интереснее. Большая часть базы оказалась соседнего майора, Иранского.

1. Иран - 21 059 091
2. Россия - 12 019 757
3. Сирия - 82 736
4. Узбекистан - 49 150
5. Турция - 25 192
6. Хохлы - 6 499
7. США - 4 216
8. Саудовская Аравия - 2 634
9. Дойчланд - 2 002
10. Армения - 1 698
11. Ирак - 1 435
12. Великобритания - 1 397
13. Бульба - 1 384
14. Малайзия - 1 240
15. Кыргызстан - 939
16. ОАЭ - 859
17. Ливан - 839
18. Египет - 753
19. Латвия - 678
20. Азербайджан - 639
21. Таджикистан - 618
22. Кувейт - 580
23. Франция - 576
24. Эстония - 555
25. Иордания - 550

всего:
телефонов - 33 275 675
правильных - 33 275 623
поврежденных - 52
стран - 141
Прогнал через базу несколько произвольных чатов

На 120 человек, 68 телефонов.
На 66 человек, 45 телефонов.
На 279 человек, 103 телефона.
На 94 человека, 20 телефонов (худший результат).

Наконец, один из крупнейших чатов оппозиции, зелёная лента: на 1794 человека 673 телефона.

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

Всё телефоны валидны.

Мычание пресс-службы телеграм про "неактуальность" следует признать враньем.

А товарищ майор знает тележеньку очень хорошо. Впрочем, я и не сомневался.
Итак, кому интересно, можете написать вот тому парню - @lshtshfum (его зовут Фома):
Привет!
или
Hello!

Регистр и пробелы неважны, восклицательный знак - обязателен.

Он посмотрит вас в той самой базе и ответит либо номером телефона, либо дежурным приветствием 😉
О пользе конвертации данных из посконного кроноса в богомерзкий SQL. А так же, зачем на таблице нужны индексы.

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

Нижние две картинки: простенькая одноядерная VPS. Но таблица индексирована.

Содержимое таблиц одинаково, 12+ млн записей, запросы одинаковы также. Разница, как говорится, на лице.

30 миллисекунд, Карл :)
На днях сторонники Навального придумали новую акцию, вставлять красный крест в своё имя. Это должно было символизировать протест против голосования по конституции и помочь "увидеть, как нас много".

Чтож, я подсчитал. Не благодарите.

В 593 открытых чатах тележной политоты находится 206 411 человек (уникальных пользователей). Красный крест есть у 182 человек. То есть у 0.09% пользователей.

При этом, хотя бы один крестоносец есть в 199 из 593 чатов. Таким образом, проникновение составляет 34% чатов.

Телефоны найдены для 77 из 182 человек, эффективность базы 42%. 😁
Сделал суточное обновление популяции крестоносцев:
208 человек (вчера 182, прирост 14%)
207 чатов (вчера 199, прирост 4%)

93 телефона на 208 человек, эффективность базы 45% (вчера 42%).

P. S. Каналу пора обзавестись обратной связью. Пусть будет @yesitsnew . Туда складывайте все вопросы, отзывы, идеи и предложения.