Telegram бот для отправки голосовых сообщений, создания стикеров-цитат и запрета репостов из заблокированных чатов.
Python 3.10+
python-telegram-bot[job-queue] >= 20.2
Pillow >= 9.4.0
- опционально
pilmoji >= 2.0.2
- опционально
- Установите Python 3.10+
- Установите зависимости:
pip install -r requirements.txt
- В файл
data/import/token.txt
запишите свой токен бота. - Запустите
start_admin_tool.py
и импортируйте токен. - Запустить бота можно с помощью
start_bot.py
или командойpython -m snearl
.
(В формате для /setcommands BotFather)
help - Помощь с ботом
info - Информация о чате
block - Внести канал в чёрный список
allow - Разблокировать канал
blacklist - Посмотреть чёрный список
v - Добавить войс
voice_delete - Удалить войс
voicelist - Посмотреть список войсов
q - Добавить цитату
quote_delete - Удалить цитату
quote_random - Шанс рандомной цитаты
quotelist - Посмотреть список цитат
Команды block
, v
нужно отправить ответом на сообщение. Команду q
можно использовать как через ответ, как и без.
Бот выдает инлайн полный список сохраненных в
ойсов и ц
итат. Перейти к отдельной категории можно если ввести выделенную букву в начале запроса.
Модуль start_admin_tool.py
содержит некоторые команды недоступные через бота.
Модуль содержит функции импорта/экспорта/удаления данных из базы данных, а также функцию миграции и локального режима.
Инструкции для каждой функции можно прочитать при её запуске.
Для прочих своих запросов редактируйте data/database.db
через СУБД Sqlite.
Импорт производится из директории data/import
.
Экспорт производится в директорию data/export
.
Структуры этих двух папок одинаковы:
token.txt
- содержит токен бота.
blacklist.csv
- список заблокированных чатов и пользователей.
voicelist/
- иерархия аудио-файлов. Используется в импорте если у вас уже имеются сторонние файлы .ogg.
quotelist/
- иерархия стикеров. Используется в импорте если у вас уже имеются сторонние файлы .webp.
- Войсы и цитаты хранятся привязанными к каждому отдельному чату. Администратор может сменить эту привязку на другой чат вручную.
- При смене типа чата на супергруппу привязка в базе данных меняется автоматически.
- Все данные чата удаляются если бот выходит из него.
В этом режиме бот разрешает использовать команды изменяющие базу данных только администраторам и владельцам одного избранного чата. С выключенным режимом в любом другом чате пользователи смогут создать собственный набор войсов и список блокировок.
Файлы модуля хранятся в snearl/module/
. Там же можно посмотреть на примере как модули реализованы.
Помимо этого нужно:
- Импортировать новый модуль в
snearl/instance.py
вstart_bot()
; - Если модуль использует БД, то добавить нужные вызовы функций в
module/dataupdate.py
вchat_migrate()
иbot_status_changed()
; - Если модуль использует инлайн, то добавить по аналогии в
module/inline_handler.py
;
Администраторские функции обычно выносятся в отдельный файл и:
- Импортируются в файле
start_admin_tool.py
; - В массив
commands
добавляются доступные пользователю команды; - В
clear_table()
добавляется возможность удалить все записи из таблицы БД модуля;