1
0
Fork 0
mirror of https://github.com/EDeev/chatping_abobot.git synced 2026-10-07 20:49:45 +03:00
Commit graph

34 commits

Author SHA1 Message Date
737b3b57af Образы на git.deev.su вместо dcr.deev.su: реестр zot выведен из работы, копию из GHCR делает синхронизатор 2026-10-06 17:03:57 +03:00
af372fbdf0 README: версия 4 — PostgreSQL, ограничения больших чатов, /settings, /top, /month, учёт бота в группах, развёртывание 2026-10-06 11:26:12 +00:00
a2a0adcf8e AboBot 4.0: PostgreSQL, обработчики по роутерам, HTML-разметка, новые команды
База — PostgreSQL (asyncpg) вместо четырёх файлов SQLite с таблицей на каждый чат:
chats, users, members, chat_stats и member_stats с полем «период» — месяцы хранятся, а не
обнуляются; счётчики растут одним запросом без блокировки бота. scripts/migrate_sqlite.py
переносит старые базы со сверкой сумм (проверено на копии рабочих баз: 20 694 пользователя,
45 чатов, 3 142 038 сообщений — совпадает).

Учёт бота в чатах: статус и права бота (событие my_chat_member и сверка с Telegram при
запуске и раз в 6 часов), история изменений в bot_status_history; из чатов, где бота
исключили, данные не удаляются — меняется только статус.

Большие чаты (больше 100 участников): /all — только для админов, раз в 5 минут и только
писавшие за 30 дней; упоминание одного человека по имени — не чаще раза в минуту. В любом
чате /all делится на сообщения до 4096 символов (раньше в чате на 14 тысяч падал).

Новое: /settings (упоминания, имена в голосовых, ивенты, удаление служебных сообщений —
меняют админы), /top, /month (итоги месяца по команде). /stop_bot раньше ничего не
выключал — флаг не проверялся; теперь работает. Участник, вышедший из чата, больше не
упоминается, но его статистика сохраняется. Ошибки — в технический чат DEBUG_CHAT_ID.

Код: handlers.py разбит на роутеры, Markdown заменён на HTML (экранирование через html.escape),
тесты на PostgreSQL (18), CI на Python 3.10 и 3.12.
2026-10-06 11:16:00 +00:00
9123f57968 Зависимости, тесты, CI, Docker, лицензия MIT и README на русском и английском
requirements.txt раньше не устанавливался (sqlite3, несуществующий enchant==1.6.6) и тянул
неиспользуемые asyncio-mqtt, pyaudio, pydub. README: распознавание — SpeechRecognition,
а не gTTS; число пользователей — по базе бота.
2026-10-06 01:10:52 +00:00
f5441bdde6 Исправлены упоминания, экранирование и блокировка бота
- ответ на текст в неправильной раскладке упоминал автора ссылкой tg://user_id?id= —
  такой нет, упоминание не работало; теперь tg://user?id=;
- имена и текст пользователей подставлялись в Markdown как есть: «_» или «*» в имени
  ломали отправку статистики, ивентов и упоминаний;
- каждое голосовое в группе распознавалось через Google прямо в обработчике, и бот на это
  время не отвечал никому; распознавание, озвучка и запрос совета — в отдельном потоке,
  у запроса совета есть таймаут;
- временные файлы голосовых и озвучки — во временной папке на запрос (раньше общий
  voice.ogg и файлы со случайным номером, остававшиеся при ошибке);
- падения: упоминание двух имён, одно из которых — автор; сообщение из одних знаков
  препинания; глагол, который pymorphy3 не может поставить в прошедшее время;
- script.py берёт соединения с базами из init.py, а не открывает вторые;
- токен — из BOT_TOKEN.
2026-10-06 01:10:52 +00:00
e4786d8b68 Статистика «за месяц» обнуляется в начале месяца
Раньше месячные счётчики нигде не сбрасывались — ни в коде, ни на сервере — и копились с
момента создания таблиц. При первом запуске месяц только запоминается (в таблице meta),
обнуление — со следующей смены месяца.
2026-10-06 01:10:52 +00:00
e00b035265 Статистика: атомарные счётчики, схема баз создаётся при первом запуске
Счётчики увеличивались через SELECT и UPDATE с ручным +1 — одновременные сообщения
терялись. Теперь UPDATE … SET mes = mes + 1. Имя таблицы чата приводится к int перед
подстановкой в SQL. Таблицы work/stat/month/edit/users/groups создаются, если их нет, —
пустые базы убраны из репозитория (схема та же; проверено на копии рабочих баз).
2026-10-06 01:10:51 +00:00
4cd8470087 Переводы строк приведены к LF, удалено чужое голосовое из data/voices
1_7047.oga — голосовое сообщение участника чата, оставшееся от отладки распознавания.
2026-10-06 00:51:37 +00:00
ef4af56486 README.md 2025-06-30 20:11:37 +03:00
9bc792cac6 README.md 2025-06-30 13:26:57 +03:00
7e93ce2205 requirements 2025-06-30 13:24:31 +03:00
4d62d227f6 v. 3.0 2025-06-30 13:14:57 +03:00
fc867213b7 Delete libraries.txt 2025-06-30 13:12:14 +03:00
Egor Deev
f119501d4a v. 2.2 2023-10-19 13:24:47 +03:00
Egor Deev
26f31d1460 v. 1.1 2023-10-19 13:23:42 +03:00
Egor Deev
b39d83e9fc Delete data/data directory 2023-10-19 13:22:26 +03:00
Egor Deev
41611ad267 v. 2.2 2023-10-19 12:53:58 +03:00
Egor Deev
45d5665db0 v. 2.1 2022-11-22 14:25:20 +03:00
Egor Deev
edc2df45c3 Delete data/putin directory 2022-11-22 14:24:20 +03:00
Egor Deev
b13b23e3a9 Delete sql.py 2022-11-22 14:23:44 +03:00
Egor Deev
da43310fb8 Delete script.py 2022-11-22 14:23:34 +03:00
Egor Deev
0d7248c069 Delete month.txt 2022-11-22 14:23:23 +03:00
Egor Deev
68623252c1 Delete groups.db 2022-11-22 14:23:05 +03:00
Egor Deev
3ca144dce4 Delete bot.py 2022-11-22 14:22:54 +03:00
Egor Deev
b54a7c2ba0 Delete base.py 2022-11-22 14:22:43 +03:00
Egor Deev
b4ace3b040 v. 2.1 2022-11-22 14:22:09 +03:00
Egor Deev
538ca96cf3 v. 2 2022-03-22 20:52:16 +07:00
Egor Deev
9f3a105580 Version 1.0 2021-09-14 16:20:50 +07:00
Egor Deev
00ec12f328 Run File / Version 1.0 2021-09-14 16:11:07 +07:00
Egor Deev
4e4e548b80 Version 1.0 2021-09-14 16:05:22 +07:00
Egor Deev
9e1d50293b libraries 2021-09-14 16:03:32 +07:00
Egor Deev
be2c4273e0 Readme 2021-09-14 16:00:22 +07:00
Egor Deev
d41ee21f9f Create README.md 2021-09-14 15:59:08 +07:00
Egor Deev
0a7a2618e7 Version 1.0 2021-09-14 15:41:47 +07:00