{"id":15077868,"url":"https://github.com/notacat1/mouse-guard","last_synced_at":"2026-03-09T07:32:15.991Z","repository":{"id":254873352,"uuid":"847250952","full_name":"NotACat1/Mouse-guard","owner":"NotACat1","description":"This project is a multifunctional Discord bot written in TypeScript using the discord.js library. The bot includes various commands for managing voice channels, administering users, and providing basic interaction commands for users.","archived":false,"fork":false,"pushed_at":"2024-08-26T14:45:04.000Z","size":80,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-03T07:25:22.013Z","etag":null,"topics":["commitlint","discord","discord-bot","discord-js","eslint","husky","prettier","typescript","winston"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NotACat1.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-08-25T09:30:55.000Z","updated_at":"2024-08-26T14:47:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"1d10446e-507c-411d-a4a3-221b8ecb8405","html_url":"https://github.com/NotACat1/Mouse-guard","commit_stats":{"total_commits":10,"total_committers":2,"mean_commits":5.0,"dds":"0.19999999999999996","last_synced_commit":"da396f742959dd9eb9ba2865fb1dc7ab15a74b46"},"previous_names":["notacat1/mouse-guard"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotACat1%2FMouse-guard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotACat1%2FMouse-guard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotACat1%2FMouse-guard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NotACat1%2FMouse-guard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NotACat1","download_url":"https://codeload.github.com/NotACat1/Mouse-guard/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239377657,"owners_count":19628574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["commitlint","discord","discord-bot","discord-js","eslint","husky","prettier","typescript","winston"],"created_at":"2024-09-25T04:33:13.859Z","updated_at":"2025-11-02T04:30:24.586Z","avatar_url":"https://github.com/NotACat1.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mouse Guard\n\n![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![Discord](https://img.shields.io/badge/Discord-%235865F2.svg?style=for-the-badge\u0026logo=discord\u0026logoColor=white)\n![ESLint](https://img.shields.io/badge/ESLint-4B3263?style=for-the-badge\u0026logo=eslint\u0026logoColor=white)\n\nЭтот проект представляет собой многофункционального Discord бота, написанного на TypeScript с использованием библиотеки `discord.js`. Бот включает различные команды для управления голосовыми каналами, администрирования пользователей, а также предоставляет базовые команды для взаимодействия с пользователями.\n\n## Содержание\n\n- [Mouse Guard](#mouse-guard)\n  - [Содержание](#содержание)\n  - [Требования](#требования)\n  - [Установка](#установка)\n  - [Настройка](#настройка)\n  - [Конфигурация](#конфигурация)\n    - [1. `config.ts`](#1-configts)\n    - [2. `rolesConfig.ts`](#2-rolesconfigts)\n    - [3. `roomAdminConfig.ts`](#3-roomadminconfigts)\n    - [4. `spamConfig.ts`](#4-spamconfigts)\n    - [5. `voiceChannelConfig.ts`](#5-voicechannelconfigts)\n  - [Запуск](#запуск)\n  - [Команды](#команды)\n  - [Логирование](#логирование)\n  - [Используемые технологии](#используемые-технологии)\n  - [Вклад](#вклад)\n\n## Требования\n\nДля запуска проекта вам потребуется:\n\n- [Node.js](https://nodejs.org/en/download/package-manager) (версии 16.x или выше)\n- npm (версии 7.x или выше)\n- [Discord Bot Token](https://discord.com/developers/applications/)\n\n## Установка\n\n1. **Клонирование репозитория**:\n\n   ```bash\n   git clone https://github.com/NotACat1/Mouse-guard.git\n   cd Mouse-guard\n   ```\n\n2. **Установка зависимостей**:\n\n   ```bash\n   npm install\n   ```\n\n## Настройка\n\n**Создание конфигурационного файла**: Создайте файл `.env` в корне проекта и добавьте следующие переменные:\n\n```env\nDISCORD_TOKEN=your-discord-bot-token\n```\n\n## Конфигурация\n\nПроект использует несколько конфигурационных файлов для управления различными аспектами поведения бота:\n\n### 1. `config.ts`\n\nФайл `config.ts` определяет основные настройки приложения, такие как параметры команд и теги для сообщений.\n\n```typescript\nexport interface AppConfig {\n  moderatorLogChannelID: string; // Идентификатор канала для логирования действий модераторов\n  moderatorRoleID: string; // Идентификатор роли модератора\n  tags: {\n    muteTag: string; // Тег для сообщений, связанных с мутом\n    kickTag: string; // Тег для информационных сообщений\n  };\n  commandStart: string; // Префикс для всех команд\n}\n```\n\n### 2. `rolesConfig.ts`\n\nЭтот файл содержит конфигурацию ролей, связанных с управлением комнатами на сервере.\n\n```typescript\nexport interface RolesConfig {\n  roomAdminRoleId: string; // ID роли администратора комнаты\n  roomAdminRoleName: string; // Имя роли администратора комнаты\n}\n```\n\n### 3. `roomAdminConfig.ts`\n\nКонфигурация для ролей администраторов комнат и других параметров, связанных с управлением голосовыми каналами.\n\n```typescript\nimport { rolesConfig } from '@config/rolesConfig';\n\nexport const ALLOWED_ROLES = [rolesConfig.roomAdminRoleId]; // Роли, которым разрешено использовать команды управления комнатой\nexport const MUTE_TIME = 5 * 60 * 1000; // Время мута пользователя (5 минут)\n```\n\n### 4. `spamConfig.ts`\n\nКонфигурация для защиты от спама. Определяет параметры защиты каналов, исключения для пользователей и ролей, а также настройки наказаний за спам.\n\n```typescript\nexport interface SpamProtectionConfig {\n  protectedChannels: string[]; // Идентификаторы каналов, находящихся под защитой\n  exemptUsers: string[]; // Идентификаторы пользователей, исключенных из защиты\n  exemptRoles: string[]; // Идентификаторы ролей, исключенных из защиты\n  maxMessages: number; // Максимальное количество сообщений за указанный период времени\n  timeWindow: number; // Временное окно в миллисекундах для проверки спама\n  muteDuration: number; // Начальная продолжительность мута\n  additionalMuteDuration: number; // Дополнительное время за повторное нарушение\n  muteIncreaseInterval: number; // Интервал увеличения наказания в миллисекундах\n  goodBehaviorWindow: number; // Временное окно для сброса наказания при хорошем поведении\n  warningNotificationMessage: string; // Сообщение при предупреждении о спаме\n  muteNotificationMessage: string; // Сообщение при мутации за спам\n}\n```\n\n### 5. `voiceChannelConfig.ts`\n\nКонфигурация для управления голосовыми каналами, включает в себя настройки для отслеживания каналов и форматирования их названий.\n\n```typescript\nexport interface VoiceChannelConfig {\n  monitoredChannels: string[]; // Идентификаторы отслеживаемых голосовых каналов\n  channelNameFormat: (guildName: string, userName: string) =\u003e string; // Функция форматирования названий каналов\n}\n\nexport const voiceChannelConfig: VoiceChannelConfig = {\n  monitoredChannels: ['1277398973010804777'], // Пример идентификатора канала\n  channelNameFormat: (guildName: string, userName: string): string =\u003e\n    `${guildName} | ${userName}`, // Пример функции форматирования названий каналов\n};\n```\n\n## Запуск\n\n```bash\nnpm run start\n```\n\n## Команды\n\nБот поддерживает множество команд. Ниже перечислены основные команды:\n\n- **!mute @user** — Мутирует пользователя на время в голосовом канале.\n- **!kick @user** — Кикает пользователя из сервера.\n- **!ban @user** — Банит пользователя на сервере.\n- **!setlimit \u003cnumber\u003e** — Устанавливает лимит пользователей в текущем голосовом канале.\n- **!rename \u003cnew-name\u003e** — Переименовывает текущий голосовой канал.\n- **!closeroom** — Закрывает текущий голосовой канал для всех пользователей.\n- **!unlockroom** — Открывает голосовой канал для всех пользователей.\n- **!status** — Отображает статус и информацию о текущем сервере.\n- **!info** — Отображает информацию о сервере.\n- **!userinfo** — Отображает информацию о пользователе.\n- **!hello** — Приветствует пользователя, отправившего сообщение.\n- **!ping** — Проверяет время отклика бота.\n- **!helper** — Отображает список доступных команд.\n\n\u003e **Важно**: Команды управления каналами и пользователями доступны только для ролей, указанных в `ALLOWED_ROLES`.\n\n## Логирование\n\nБот использует `winston` для логирования действий:\n\n- Логи выводятся в консоль и сохраняются в файл `logs/app.log`.\n- Вся информация о командах, попытках использования, ошибках и других действиях логируется.\n\nПример использования логера:\n\n```typescript\nlogger.info('This is an informational message.');\nlogger.warn('This is a warning message.');\nlogger.error('This is an error message.');\n```\n\n## Используемые технологии\n\n- **Node.js** — Серверная среда выполнения.\n- **TypeScript** — Надстройка над JavaScript, добавляющая статическую типизацию.\n- **discord.js** — Библиотека для взаимодействия с Discord API.\n- **winston** — Логирование.\n\n## Вклад\n\nВаши вклады приветствуются! Если вы хотите внести свой вклад в проект, пожалуйста, создайте форк репозитория и отправьте пулреквест.\n\n1. Форкните репозиторий.\n2. Создайте новую ветку для вашей функции (`git checkout -b feature/new-feature`).\n3. Выполните коммиты ваших изменений (`git commit -m 'Add some feature'`).\n4. Запушьте изменения в ветку (`git push origin feature/new-feature`).\n5. Откройте пулреквест.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotacat1%2Fmouse-guard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnotacat1%2Fmouse-guard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnotacat1%2Fmouse-guard/lists"}