mirror of
https://github.com/ada-dmitry/remote-control.git
synced 2026-09-24 01:10:38 +00:00
Init Repo
This commit is contained in:
@@ -0,0 +1,3 @@
|
|||||||
|
BOT_TOKEN = "your_tg_bot_token"
|
||||||
|
PC_MAC = "your_mac"
|
||||||
|
ALLOWED_USER_IDS=
|
||||||
@@ -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.
|
||||||
@@ -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 <repository-url>
|
||||||
|
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
|
||||||
@@ -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()
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
wakeonlan
|
||||||
|
python-dotenv
|
||||||
|
python-telegram-bot
|
||||||
Reference in New Issue
Block a user