commit 7b288249436d28418c7d14020eed9c967a57c0b3 Author: ada Date: Wed Sep 10 16:35:21 2025 +0300 Init Repo diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..86b3cbe --- /dev/null +++ b/.env.example @@ -0,0 +1,3 @@ +BOT_TOKEN = "your_tg_bot_token" +PC_MAC = "your_mac" +ALLOWED_USER_IDS= diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..50554f9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Dmitry + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..eb443c6 --- /dev/null +++ b/README.md @@ -0,0 +1,119 @@ +# 🔌 Wake-on-LAN Telegram Bot + +Простой и удобный Telegram-бот для удалённого включения компьютера с помощью технологии Wake-on-LAN. + +## 📋 Функции + +- Включение компьютера удалённо через команду `/wake` +- Проверка доступа по ID пользователя +- Безопасное хранение конфигурации в переменных окружения + +## 🚀 Быстрый старт + +### Требования + +- Python 3.7+ +- Компьютер с поддержкой Wake-on-LAN +- Telegram Bot Token + +### Установка + +1. **Клонируйте репозиторий:** + ```bash + git clone + cd remote-control + ``` + +2. **Установите зависимости:** + ```bash + pip install -r requirements.txt + ``` + +3. **Создайте файл `.env`:** + ```env + BOT_TOKEN=your_telegram_bot_token_here + PC_MAC=XX:XX:XX:XX:XX:XX + ALLOWED_USER_IDS=123456789,987654321 + ``` + +4. **Запустите бота:** + ```bash + python main.py + ``` + +## ⚙️ Настройка + +### Переменные окружения + +| Переменная | Описание | Пример | +|------------|----------|--------| +| `BOT_TOKEN` | Токен Telegram-бота | `1234567890:ABCdefGHIjklMNOpqrsTUVwxyz` | +| `PC_MAC` | MAC-адрес целевого компьютера | `AA:BB:CC:DD:EE:FF` | +| `ALLOWED_USER_IDS` | ID пользователей через запятую | `123456789,987654321` | + +### Настройка Wake-on-LAN + +1. **В BIOS/UEFI:** Включите Wake-on-LAN (может называться "Wake on Magic Packet") +2. **В Windows:** + - Откройте Диспетчер устройств + - Найдите сетевой адаптер → Свойства → Управление питанием + - Включите "Разрешить этому устройству выводить компьютер из ждущего режима" + +### Получение MAC-адреса + +**Windows:** +```cmd +ipconfig /all +``` + +**Linux/macOS:** +```bash +ifconfig +``` + +### Создание Telegram-бота + +1. Найдите @BotFather в Telegram +2. Отправьте `/newbot` +3. Следуйте инструкциям +4. Скопируйте полученный токен + +### Получение Telegram User ID + +1. Найдите @userinfobot в Telegram +2. Отправьте `/start` +3. Скопируйте ваш User ID + +## 🛡️ Безопасность + +- Токен бота и другие чувствительные данные хранятся в переменных окружения +- Доступ к команде ограничен списком разрешённых пользователей +- Не добавляйте файл `.env` в систему контроля версий + +## 📝 Использование + +После запуска бота отправьте команду `/wake` в чат с ботом. Если ваш ID в списке разрешённых пользователей, бот отправит Magic Packet для включения компьютера. + +## 🔧 Требования к сети + +- Компьютер и устройство с ботом должны находиться в одной локальной сети +- Роутер должен поддерживать передачу Magic Packet +- Может потребоваться настройка портов в роутере для удалённого доступа + +## 📦 Зависимости + +- `python-telegram-bot` - для работы с Telegram API +- `wakeonlan` - для отправки Magic Packet +- `python-dotenv` - для загрузки переменных окружения + +## 🤝 Поддержка + +Если у вас возникли проблемы: +1. Убедитесь, что Wake-on-LAN включен в BIOS +2. Проверьте правильность MAC-адреса +3. Убедитесь, что устройства в одной сети +4. Проверьте настройки сетевого адаптера + +## 📄 Лицензия + +MIT License diff --git a/main.py b/main.py new file mode 100644 index 0000000..7cbecc6 --- /dev/null +++ b/main.py @@ -0,0 +1,27 @@ +from telegram import Update +from telegram.ext import ApplicationBuilder, CommandHandler, ContextTypes +from wakeonlan import send_magic_packet +from dotenv import load_dotenv +import os + +load_dotenv() + +BOT_TOKEN = os.environ.get("BOT_TOKEN", "") +PC_MAC = os.environ.get("PC_MAC", "") +ALLOWED_USER_IDS = os.environ.get("ALLOWED_USER_IDS", "").split(",") + + +async def wake(update: Update, context: ContextTypes.DEFAULT_TYPE): + user_id = str(update.effective_user.id) + if user_id not in ALLOWED_USER_IDS: + await update.message.reply_text("⛔ У вас нет доступа к этой команде.") + return + + send_magic_packet(PC_MAC) + await update.message.reply_text("🔌 Magic Packet sent! ПК должен включиться.") + +app = ApplicationBuilder().token(BOT_TOKEN).build() +app.add_handler(CommandHandler("wake", wake)) + +print("🚀 Бот запущен...") +app.run_polling() diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..da66a4b --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +wakeonlan +python-dotenv +python-telegram-bot