Readme is only available in russian
Вывод новых блокировок ресурсов в Российской Федерации через вебхуки в Discord!
Форк оригинальной Запретян, который обеспечит отправку новых блокировок при помощи Webhook без надобности создавать бота.
Запретян Лайт - это скрипт, работающий на Debian/Ubuntu, который собирает данные о блокировках и сравнивает их с предыдущими сохранёнными данными.
- Сбор аналитики: Дата и количество блокировок/разбанов
- Вывод полного списка нововведений реестра блокировок в разные чаты с разными оповещениями с помощью вебхуков. Всё зависит от вашей конфигурации
- Рассчитан на запуск раз в сутки с помощью systemd или Cron.
- Легковесность: Всё находится в одном скрипте и занимает минимум места. Меньше зависимостей, в отличии от оригинальной версии требуется только
curlиgit. В момент работы может занимать не более 30МБ места, в то время как оригинальной требуется около 400МБ библиотек для поддержания бота. - Принцип работы: Запретян создана для работу через Discord бота и использует функционал ботов, в то время как лайт версия работает через HTTP POST запросы, без возможности поддерживать бота.
- Данные: В стандартной конфигурации для вас не создаётся таблица с аналитикой, а сама лайт версия сверяет данные только заблокированых доменов без поддержки просмотра блокировок IP адресов.
- Простота: В лайт версии гораздо меньше настроек которые можно поменять. Нет управления цветами и источниками данных.
- Debian 11 или новее (О совместимости с Ubuntu неизвестно, только пробовать...)
- curl
- git
Вам понадобится Debian или Ubuntu с установленным wget
wget -O- 'https://raw.githubusercontent.com/SHULKERPLAY/Zapretyan-Lite/refs/heads/discord/service_install.sh' | bash
И не забудьте поменять конфигурацию в shell/config.cfg. А именно настройте опции banhook, unbanhook и errorping по своему усмотрению
Скачайте архив из последнего релиза
wget -O zapretyan.tar 'https://github.com/SHULKERPLAY/Zapretyan-Lite/releases/download/1/zapretyan.tar.gz'
Или скачайте архив репозитория
wget -O zapretyan.zip 'https://github.com/SHULKERPLAY/Zapretyan-Lite/archive/refs/heads/discord.zip'
Распакуйте его
tar -xf zapretyan.tar.gz или unzip zapretyan.zip
Для автоматической настройки системного юнита и зависимостей запустите с повышенными привилегиями service_install.sh и следуйте инструкциям
sudo ./service_install.sh
Устанавливаем зависимости
apt update && apt install git curl -y
Создаём директорию в которой будет работать запретян. И ложим туда папки shell и sender
Например
mkdir /root/zapretyan
mv shell /root/zapretyan/shell
Далее редактируем конфигурацию. Она лежит в shell/config.cfg
nano /root/zapretyan/shell/config.cfg
В переменную shdir пишем полный путь до папки shell
shdir=/root/zapretyan/shell
Далее вписываем вебхуки нужных каналов и сохраняем файл. Подробная инструкция по конфигу есть ниже.
Не забудьте поменять конфигурацию в shell/config.cfg. А именно настройте опции bancid, unbancid, banipcid, unbanipcid и errorping по своему усмотрению
Теперь делаем так, чтобы рассылка включалась каждый день. Главный исполнительный скрипт - shell/zapretyanlite.sh, который нужно исполнять автоматически каждый день.
-
Это можно сделать с помощью Cron (С чем я вам определённо не помогу и вам нужно будет искать гайды по крону в интернете...)
-
Или с помощью системного таймера. Рассмотрим этот вариант
Создаём системную службу
touch /etc/systemd/system/zapretyan.service
nano /etc/systemd/system/zapretyan.service
И записываем в неё строки ниже:
[Unit]
Description=Zapretyan Lite - Discord Webhook
[Service]
ExecStart=/bin/bash /path/zapretyan/zapretyanlite.sh
Где вместо /path/zapretyan/zapretyanlite.sh вы должны вписать путь к вашему расположению скрипта
Нам не нужно устанавливать это как службу, поэтому просто сохраняем файл.
Создаём системный таймер. Именно он будет запускаться с системой и триггерить каждый день сервис написанный нами выше
touch /etc/systemd/system/zapretyan.timer
nano /etc/systemd/system/zapretyan.timer
И вписываем эти строки
[Unit]
Description=Trigger for Zapretyan Discord Webhook
[Timer]
Persistent=true
OnCalendar=Mon..Sun *-*-* 08:00:00
[Install]
WantedBy=timers.target
Где время меняем на собственное или оставляем это. По стандарту наша служба запускается раз в день в 08:00:00
Устанавливаем таймер
systemctl enable zapretyan.timer
systemctl start zapretyan.timer
Поздравляем! У вас есть рабочая служба
Остановить её можно с помощью systemctl disable zapretyan.timer
Если вы захотите редактировать время в которое запускается скрипт, поменяйте значение в таймере и напишите:
systemctl daemon-reload
Аналогичным способом можно создавать и другие системные сервисы, просто меняя имя службы и путь к скрипту
Вебхук Discord — это уникальный URL-адрес, который позволяет автоматически отправлять сообщения в определенный канал сервера без участия бота. Каждый URL привязывается к чату, в который запретян отсылает списки. Именно поэтому, желательно, для блокировок и разбанов нужно два отдельных чата, соответственно и два вебхука.
Создать вебхук можно в настройках Discord сервера в разделе "интеграции"
shdir=/example/shell - Путь к папке shell этого скрипта. Скрипт исполняет все команды по распаковке и сравнению с полными путями. При автоматической установки эта строчка перезаписывается значением в конце файла
banhook=("https://discord.com/api/webhooks/")
unbanhook=("https://discord.com/api/webhooks/")
banhook - Ссылка из созданного вебхука Discord в который будут выводиться все новые блокировки с прошлого сравнения
unbanhook - Ссылка из созданного вебхука Discord в который будут выводиться все снятые блокировки с прошлого сравнения
Для рассылки в несколько чатов (вебхуков) Файл конфигурации будет выглядеть так:
bancid=("https://discord.com/api/webhooks/000000000000000000" "https://discord.com/api/webhooks/111111111111111111")
unbancid=("https://discord.com/api/webhooks/00000000000000000" "https://discord.com/api/webhooks/111111111111111111")
При этом вы можете указать таким образом несколько вебхуков, и их количество может быть разное для каждой категории
bancid=("https://discord.com/api/webhooks/00000" "https://discord.com/api/webhooks/11111" "https://discord.com/api/webhooks/22222")
unbancid=("https://discord.com/api/webhooks/00000" "https://discord.com/api/webhooks/11111")
В кажый вебхук будет дублироваться весь сгенерированный вывод по очереди, поэтому в зависимости от количества блокировок и чатов, вывод во все чаты будет длиться дольше.
botname='Запретян~<3'
boticon='https://example.com/awesome.webp'
botname - Никнейм, который будет отображаться у отправителя сообщений
boticon - Прямая ссылка на изображение аватара отправителя. Должна быть прямая ссылка на картинку, которая желательно должна быть квадратной. Также отображается в футере встроенных сообщений
isban=true
isunban=true
isban - отключает любые отправки в вебхук banhook
isunban - отключает любые отправки в вебхук unbanhook
errorsend=true - Переключатель вывода сервисных сообщений, например, когда с прошлого дня не произошло никаких изменений
📙 В сегодняшнем списке нет новых заблокированых ресурсов! $errorping
analytics=false - Переключатель сбора аналитики. Она не выгружается в сеть, собирает в таблицу данные: Дата, кол-во блокировок, кол-во разбанов, всего заблокировано. Сохраняется в shell/analytics.csv
errorping='<@&000000000000000>' - Содержит пинг участника или роли при выводе сервисных сообщений. Оставьте errorping=' ' чтобы отключить упоминания. У Discord пинги имеют форму:
Для пользователей - <@idПользователя>
Для ролей - <@&idРоли>
Также вы можете оставить несколько пингов в это значение
errorping='<@459657842895486977> <@&683823927851614242>'
📙 В сегодняшнем списке нет новых заблокированых ресурсов! @Шалкер~<3 @Разработчик
qdate=$(date +%d/%m/%y) - Системная команда Linux собирающая дату в форме 08/08/25
Отображается в шапке первого встроенного сообщения со списком. Не вижу сценариев в которых это нужно было бы менять.
В СПИСОК ОГРАНИЧЕННЫХ РЕСУРСОВ СЕГОДНЯ ПОПАЛИ: 08/08/25
csvdate=$(date +%d.%m.%Y) - Системная команда Linux собирающая дату в форме 28.06.2025
Выводится в первом столбце таблицы shell/analytics.csv. Не вижу сценариев в которых это нужно было бы менять.
date;banned;unbanned;total
21.05.2025 ; 1667 ; 118 ; 831954
22.05.2025 ; 1772 ; 95 ; 833631
23.05.2025 ; 1573 ; 47 ; 835157
В Lite концепции не предусмотрено изменение цвета через конфигурацию, поэтому нужно менять цвет внутри скрипта
Ищем часть из строчки (Таких две похожих: Для банов и для разбанов)
"content": " ","embeds": [{"title": "Заблокированые сегодня домены","description": "'"$embedlist"'","color": 16753314, .... }]
Это строка данных которые отправляются в вебхук. Чтобы выбрать другой цвет, нужно изменить значение параметра "color":.
Сюда принимается почти любой цвет, но не в HEX а в DEC формате. Вы можете выбрать из онлайн палитр HEX код цвета и его код вбить
в конвертер шеснадцатиричных чисел в десятичные (Можно просто загуглить hex to decimal). Так, чтобы сделать чистый белый цвет,
код которого FFFFFF мы вводим "color": 16777215, и сохраняем.
Для смены текстовой части вы можете пробежаться по всему скрипту и поменять текст сообщений в кавычках под себя.
- Скрипт не будет отправлять сообщения в Discord на территории РФ. Тут тоже ничего не сделать, РКН блокирует запросы к API Discord, вы просто будете ловить тайм-аут. Поэтому машина должна быть вне РФ
Буду рад любой поддержке, связаться со мной можно на нашем сервере Discord