Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Discord Activity Bot 🤖

Простой и надёжный Discord-бот для отслеживания активности участников сервера по 4 категориям.

Что делает бот

Хранит очки по категориям для каждого пользователя:

  • Текстовые каналы — максимум 15 очков
  • Голосовые каналы — максимум 10 очков
  • Ивенты — максимум 5 очков
  • Другая активность — максимум 5 очков
  • Максимум всего = 35 очков

Считает процент активности: percent = total_points / 35 * 100

Сравнивает с проходным баллом (по умолчанию 65%, можно менять).

Установка

1. Требования

  • Python 3.8+
  • Токен Discord-бота

2. Клонируем репозиторий и переходим в папку

cd discord_activity_bot

3. Устанавливаем зависимости

pip install -r requirements.txt

4. Создаём файл .env (можно скопировать .env.example)

cp .env.example .env

Отредактируй .env и добавь свой токен:

DISCORD_TOKEN=твой_токен_здесь

5. Запускаем бот

python bot.py

Если всё работает, ты увидишь:

Logged in as BotName (id: 123456789)

Команды

!add

Добавляет очки к текущему значению (не превышает максимум)

!add @user text 3         — добавить 3 очка в текст
!add @user voice 10       — добавить 10 очков в голос
!add @user events 5       — добавить 5 очков в события
!add @user other 2        — добавить 2 очка в другое

!set

Установить точные значения для одной или нескольких категорий

!set @user text 12 voice 8 events 5 other 4  — установить всё сразу
!set @user text 15                            — установить только текст
!set @user voice 10 events 3                  — установить голос и события

!score

Показать полную статистику пользователя

!score @user      — показать статистику для пользователя
!score            — показать свою статистику

Выведет:

Статистика для UserName:
Текст: 12/15
Голос: 8/10
Ивенты: 5/5
Другая активность: 2/5

Всего: 27/35  — 77.14%
Проходной балл: 65%
Статус: ПРОЙДЁТ ✅

!reset

Сбросить все очки пользователя на 0

!reset @user      — сбросить для пользователя
!reset            — сбросить свои очки

!setthreshold

Установить проходной процент для сервера (только администраторы)

!setthreshold 70  — установить порог на 70%
!setthreshold 50  — установить порог на 50%

!helpactivity

Показать справку по всем командам

!helpactivity

Структура БД

Бот использует SQLite (activity.db), которая создаётся автоматически.

Таблица users:

  • guild_id — ID сервера Discord
  • user_id — ID пользователя
  • text — очки за текстовые каналы (0-15)
  • voice — очки за голосовые каналы (0-10)
  • events — очки за события (0-5)
  • other — очки за другую активность (0-5)
  • threshold — проходной процент (по умолчанию 65)

Особенности

✅ Локальное хранилище — все данные в SQLite, ничего в облаке ✅ Изолированность серверов — каждый Discord-сервер имеет свои данные ✅ Защита от переполнения — очки не превышают максимум ✅ Гибкий порог — администраторы могут менять проходной процент ✅ Просто и надёжно — минимум зависимостей, максимум функциональности

💭 Мысли (автогенерация)

Бот умеет поддерживать «мысли» — внутренние краткие заметки о состоянии сервера, которые генерируются автоматически на основе агрегированной статистики (топы, средний балл, входы/выходы).

  • Данные хранятся локально в activity.db (таблица thoughts) и не отправляются во внешние сервисы. 🔒
  • Генерация мыслей выполняется только на основе агрегированных данных — сырые тексты сообщений не читаются и не отправляются.
  • Доступ к созданию и просмотру мыслей имеют только администраторы сервера.

Команды:

  • !enable_thoughts — включить автогенерацию мыслей для сервера (только админ)
  • !disable_thoughts — отключить (только админ)
  • !set_thought_interval <секунд> — установить интервал генерации мыслей для сервера (15–1800 секунд, только админ)
  • !think [текст] — добавить мысль вручную или сгенерировать автоматически (только админ)
  • !thoughts [N] — показать последние N мыслей (по умолчанию 5, только админ)

В Telegram-панели появилась кнопка "💭 Просмотреть мысли" для каждого сервера, где можно просмотреть последние записи.

External AI (Gemini)

Если хочешь использовать внешний генератор (например, Gemini), добавь в .env:

EXTERNAL_AI_PROVIDER=gemini
EXTERNAL_AI_API_KEY=твой_api_key
# опционально: модель (по умолчанию models/gemini-pro)
EXTERNAL_AI_GEMINI_MODEL=models/gemini-pro
  • Внешний вызов выполняется только при явном согласии автора сообщения (!ai_consent external) или если админ сам запрашивает разовый анализ.
  • Никогда не публикуй ключи в репозитории — регенирай их при утечке.

🖼️ Анализ изображений (Vision)

Бот может анализировать изображения с помощью AI Vision моделей (Gemini 1.5 Flash / GPT-4o-mini).

Команды:

  • !analyze_image [вопрос] — проанализировать прикреплённое изображение
  • !img [вопрос] — короткая версия команды
  • !vision [вопрос] — альтернативная короткая версия
  • !image_help — справка по анализу изображений

Как использовать:

  1. Прикрепи изображение к сообщению с командой !img
  2. Или ответь на сообщение с картинкой командой !img
  3. Добавь вопрос для конкретного анализа: !img что это за порода собаки?

Настройка в .env:

# Vision модели (опционально)
EXTERNAL_AI_GEMINI_VISION_MODEL=models/gemini-1.5-flash
EXTERNAL_AI_VISION_MODEL=openai/gpt-4o-mini

Поддерживаемые форматы: JPEG, PNG, GIF, WebP (до 20MB)

Важно: Пользователь должен дать согласие: !ai_consent external

Создание бота в Discord

  1. Перейди на Discord Developer Portal

  2. Нажми New Application

  3. Перейди на вкладку Bot → Add Bot

  4. В TOKEN нажми Copy и вставь в .env

  5. В INTENTS включи:

    • ✅ Message Content Intent
    • ✅ Server Members Intent
    • ✅ Message Content Privileged Intent
  6. В разделе OAuth2 → URL Generator:

    • Выбери Scopes: bot
    • Выбери Permissions:
      • ✅ Send Messages
      • ✅ Read Messages/View Channels
      • ✅ Read Message History
  7. Скопируй сгенерированный URL и пригласи бота на свой сервер

Примеры использования

# Добавляем очки участнику
!add @Alice text 10
!add @Bob voice 5

# Устанавливаем точные значения
!set @Charlie text 15 voice 10 events 5 other 5

# Проверяем результаты
!score @Alice
!score @Bob
!score @Charlie

# Изменяем проходной балл (только админ)
!setthreshold 70

# Сбрасываем всем
!reset @David

Статус показания

  • ПРОЙДЁТ ✅ — процент >= проходному баллу
  • НЕ ПРОЙДЁТ ❌ — процент < проходному баллу

Ошибки и решение проблем

DISCORD_TOKEN not set

Проверь, что в .env установлена переменная DISCORD_TOKEN и файл находится в той же папке, что и bot.py.

Intents not configured

Убедись, что в Discord Developer Portal включены Message Content Intent и Server Members Intent.

Бот не отвечает на команды

  • Проверь, что бот имеет права на отправку сообщений в канал
  • Убедись, что префикс команды правильный (по умолчанию !)
  • Проверь консоль на ошибки

Лицензия

MIT License

Автор

Создано для надёжного отслеживания активности на Discord-серверах.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages