Skip to content

Latest commit

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

DC Moderator — бот модерации Telegram-чата

Простой, но расширяемый модератор на Telegraf + better-sqlite3 (long polling, без Docker).

Что умеет

  • Иммунитет для админов, анонимных админов и связанного канала — их сообщения никогда не трогаются и не учитываются.
  • Автобан за inline-кнопки в сообщении (обычные юзеры их прислать не могут → спам).
  • Удаление + варн за: стоп-слова, сообщения via_bot, запрещённые/новичковые ссылки, (опц.) AI-флаг.
  • Система варнов: WARN_LIMIT предупреждений → мут на WARN_MUTE_HOURS часов.
  • Антифлуд: > N сообщений за окно → мут.
  • Чистка сервисных сообщений (вход/выход участников).
  • Лог-канал всех действий (опц.).
  • Статистика активности: /top 1d|7d|30d — топ-10.
  • Все тексты — в lang/ru.yaml, списки — в data/*.txt.

Команды

КомандаДоступОписание
/top 1d | 7d | 30dвсеТоп-10 активных за период
/warns (reply)админПоказать варны пользователя
/unwarn (reply)админСнять варны
/reloadадминПеречитать списки и тексты без рестарта

Структура

src/
bot.js # сборка и запуск
config.js # .env -> config, нормализация ID
texts.js # загрузка lang/ru.yaml, t(key, vars)
db.js # better-sqlite3: messages, warns
admins.js # кэш админов + иммунитет
moderation/
pipeline.js # порядок проверок
inlineButtons.js # детект reply_markup
stopwords.js
links.js # извлечение доменов + black/white list
flood.js # антифлуд
ai.js # OpenAI omni-moderation (опц.)
lists.js # загрузка data/*.txt
actions.js # delete / warn / mute / ban / лог
commands/
top.js
admin.js # reload / warns / unwarn
data/
stopwords.txt
links-blacklist.txt
links-whitelist.txt
lang/
ru.yaml # все тексты сообщений

ID чатов (важно)

Супергруппы и каналы в Bot API имеют префикс -100:

  • Чат 1096132026-1001096132026
  • Канал 1012435573-1001012435573

MODERATED_CHAT_ID — группа обсуждений. PROTECTED_CHANNEL_ID — привязанный канал (несколько id через запятую, оба формата: -1001012435573,1012435573).

В .env лежат уже нормализованные значения. Если вставить «голый» id — бот сам добавит -100.

Запуск

npm install
cp .env.example .env # впиши BOT_TOKEN и (опц.) LOG_CHAT_ID
npm start

Требования к боту в чате

Бот должен быть администратором модерируемого чата с правами: удалять сообщения, банить/ограничивать участников. Также отключи у бота privacy mode через @BotFather (/setprivacy → Disable), иначе он не увидит все сообщения.

AI-модерация (опционально, бесплатно)

OpenAI omni-moderation-latest — бесплатная модель. Включается флагом:

AI_MODERATION=true
OPENAI_API_KEY=sk-...

Установи зависимость: npm install openai (она в optionalDependencies).

Настройка

  • Тексты сообщений — lang/ru.yaml (плейсхолдеры {user}, {count} и т.д.).
  • Стоп-слова и ссылки — data/*.txt.
  • Пороги/лимиты — в .env.
  • После правок списков/текстов: /reload в чате (без перезапуска).

About

Telegram moderation bot for DC chat

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages