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

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

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

TW: ещё тут политота, утечки баз и игры в товарища майора на минималках
加入频道
Когда ты Беларус из Барановичей, пришёл "слить шкуру", а слил себя, свое лицо и телефон 😂
И, чтобы закрыть тему поздняковского чатика, вот вам полные списки актива. Все кто пробыл больше недели и написал больше 100 сообщений. Всего 405 человек. Первые два поля позволяют однозначно идентифицировать аккаунт, даже если его переименовали (а там многие уже на измену присели). Имён у некоторых два, у тех кто в последнее время переименовывался. Обычно актуальнее второе. В общем берите лупы в руки, там ещё многих можно найти 😁
pozdnyakov_spisok.csv
27.6 KB
Содержание списков одинаковое. Эксель и csv (разделитель - табуляция) кому что удобнее. :)
Логгер бесценен при работе с telegramclient в асинхронном режиме, но мне ещё хотелось вывод в консоль. Оказалось, всего три строчки превращают стыдную практику "отладки принтами" в полноценный вывод событий на терминал.
А чо, так можно было? Собственно проблема, если нужно решать много задач от одного аккаунта тг, то эвент-хандлеры раздуваются до нечитаемости и неуправляемости. А уж быстро добавить новую задачу становится невозможно. Если запустить много процессов от одного аккаунта, то событие произвольным образом происходит только в одном из них. Но все просто. Каждая задача запихивается в один модуль, а главный модуль только создаёт и запускает один экземпляр telegramclient. И раздаёт его как параметр. Всё, после этого каждый модуль ловит событие и делает что ему там надо. Вообще не видя и не зная, что происходит в других.

P. S. Этот канал моя записная книжка, поэтому товарищи свежеподписавшиеся, следующий слив будет неизвестно когда и неизвестно кого. Я развлекаюсь исследованием тележной политоты и сбором маленькой бигдаты. Такой тащмайор на минималках. Инструменты: python + telethon + postgresql
Десталинизация в России успешна как никогда: «К настоящему времени в общественных местах и на частных территориях под открытым небом установлено не менее 105 памятников Сталину, примерно треть из них расположены на территории северо-кавказских республик. Типовой современный памятник Сталину в России представляет собой установленный на пьедестале бюст.»
Источник
Ахтунг-ахтунг!
Вышел 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 человек в этой базе есть. Исходный формат этой базы - кронос. Это специальная БД, разработанная в ГИВЦ ФСБ РФ (сейчас называется по другому).

Ещё одно подтверждение, что телеграм это самый защищённый мессенджер, по версии ФСБ РФ.