Обновить README.md

This commit is contained in:
пошел нахуй 2025-08-22 20:44:55 +00:00
parent be98d92890
commit 707a53eb3b

246
README.md
View File

@ -1,206 +1,144 @@
# 📚 Telegram UserBot - Полная документация # Telegram UserBot
## 🚀 Описание Модульный Telegram UserBot на JavaScript с поддержкой динамической загрузки команд.
Модульный Telegram UserBot на JavaScript с использованием библиотеки GramJS. Работает от имени вашего аккаунта и поддерживает динамическую загрузку команд.
## 📁 Структура проекта ## Установка
\`\`\`
scripts/
├── telegram-userbot.js # Основной файл бота
├── modules/ # Папка с модулями команд
│ ├── help.js # Справка по командам
│ ├── info.js # Системная информация
│ ├── ping.js # Пинг до Telegram DC2
│ ├── calc.js # Калькулятор
│ ├── time.js # Текущее время
│ ├── loadmod.js # Динамическая загрузка модулей
│ └── docs.js # Документация
├── package.json # Зависимости проекта
└── USERBOT_DOCS.md # Эта документация
\`\`\`
## 🛠️ Установка и настройка 1. Получите API ключи на https://my.telegram.org
2. Установите зависимости:
### 1. Установка зависимостей
\`\`\`bash \`\`\`bash
npm install npm install
\`\`\` \`\`\`
3. Замените в `telegram-userbot.js`:
- `YOUR_API_ID` на ваш API ID
- `YOUR_API_HASH` на ваш API Hash
- `YOUR_PHONE_NUMBER` на ваш номер телефона
### 2. Получение API ключей ## Запуск
1. Перейдите на https://my.telegram.org
2. Войдите в свой аккаунт Telegram
3. Создайте новое приложение
4. Скопируйте API ID и API Hash
### 3. Настройка бота
Откройте файл `telegram-userbot.js` и замените:
- `YOUR_API_ID` на ваш API ID
- `YOUR_API_HASH` на ваш API Hash
- `YOUR_PHONE_NUMBER` на ваш номер телефона
### 4. Запуск
\`\`\`bash \`\`\`bash
node telegram-userbot.js node telegram-userbot.js
\`\`\` \`\`\`
## 📋 Встроенные команды ## Встроенные команды
| Команда | Описание | Пример использования | - `!help` - Список всех команд
|---------|----------|---------------------| - `!info` - Информация о системе и аптайме
| `!help` | Показать все доступные команды | `!help` | - `!ping` - Пинг до DC2 Telegram
| `!info` | Системная информация и статистика | `!info` | - `!calc <выражение>` - Калькулятор
| `!ping` | Пинг до Telegram DC2 | `!ping` | - `!time` - Текущее время
| `!calc` | Калькулятор с поддержкой скобок | `!calc 2+2*3` | - `!docs` - Документация
| `!time` | Текущее время и дата | `!time` | - `.lm <имя_модуля>` - Загрузить новый модуль
| `!docs` | Показать документацию | `!docs` |
| `.lm` | Загрузить новый модуль | `.lm mymodule` |
## 🔧 Создание собственных модулей ## Создание модулей
### Структура модуля ### Структура модуля
Создайте файл в папке `modules/` с расширением `.js`:
\`\`\`javascript \`\`\`javascript
export default { export default {
name: 'commandname', // Имя команды (обязательно) name: 'имя_команды',
description: 'Описание команды', // Описание (опционально) description: 'Описание команды',
usage: '!commandname <args>', // Пример использования (опционально) usage: '!команда [параметры]',
async execute(client, message, args) {
async execute(client, message, args, commands) { // Ваш код здесь
try { await client.sendMessage(message.chatId, {
// Ваш код здесь message: 'Ответ команды'
await client.sendMessage(message.chatId, { });
message: 'Ответ команды'
});
} catch (error) {
console.error('Ошибка:', error);
await client.sendMessage(message.chatId, {
message: '❌ Произошла ошибка'
});
}
} }
}; };
\`\`\` \`\`\`
### Параметры функции execute ### Параметры функции execute
- **client** - Экземпляр GramJS клиента для взаимодействия с Telegram API - `client` - Экземпляр GramJS клиента
- **message** - Объект сообщения с полями: - `message` - Объект сообщения с полями:
- `chatId` - ID чата - `chatId` - ID чата
- `text` - Полный текст сообщения - `text` - Текст сообщения
- `fromId` - ID отправителя - `senderId` - ID отправителя
- **args** - Массив аргументов команды (без имени команды) - `args` - Массив аргументов команды (без самой команды)
- **commands** - Map всех загруженных команд
### Полезные методы client
\`\`\`javascript
// Отправка сообщения
await client.sendMessage(chatId, { message: 'Текст' });
// Получение информации о себе
const me = await client.getMe();
// Получение списка чатов
const dialogs = await client.getDialogs();
\`\`\`
### Пример простого модуля ### Пример простого модуля
\`\`\`javascript \`\`\`javascript
// modules/hello.js
export default { export default {
name: 'hello', name: 'hello',
description: 'Приветствие пользователя', description: 'Приветствие пользователя',
usage: '!hello [имя]', usage: '!hello [имя]',
async execute(client, message, args) { async execute(client, message, args) {
const name = args.length > 0 ? args.join(' ') : 'Мир'; const name = args.length > 0 ? args.join(' ') : 'Мир';
await client.sendMessage(message.chatId, { await client.sendMessage(message.chatId, {
message: `👋 Привет, ${name}!` message: `Привет, ${name}!`
}); });
} }
}; };
\`\`\` \`\`\`
## ⚡ Динамическая загрузка модулей ### Пример модуля с API запросом
### Загрузка нового модуля
1. Создайте файл модуля в папке `modules/`
2. Используйте команду `.lm имя_файла` для загрузки
3. Модуль будет доступен сразу без перезапуска бота
### Перезагрузка существующего модуля
Используйте `.lm имя_модуля` для перезагрузки уже существующего модуля с обновлениями.
## 🔒 Безопасность
- Userbot работает только с сообщениями от вашего аккаунта
- Не передавайте API ключи третьим лицам
- Будьте осторожны с модулями от неизвестных источников
- Регулярно проверяйте код загружаемых модулей
## 🐛 Отладка
### Логирование
Бот выводит подробные логи в консоль:
- Загрузка модулей
- Выполнение команд
- Ошибки и исключения
### Частые проблемы
1. **"require is not defined"**
- Убедитесь, что используете `export default` вместо `module.exports`
- Проверьте наличие `"type": "module"` в package.json
2. **"Could not find the input entity"**
- Проблема с параметрами sendMessage
- Убедитесь, что передаете правильный chatId
3. **Модуль не загружается**
- Проверьте синтаксис модуля
- Убедитесь, что файл находится в папке modules/
## 📈 Расширенные возможности
### Работа с базами данных
\`\`\`javascript \`\`\`javascript
// Пример работы с JSON файлом как БД export default {
import fs from 'fs'; name: 'weather',
description: 'Получить погоду',
usage: '!weather <город>',
async execute(client, message, args) {
if (args.length === 0) {
await client.sendMessage(message.chatId, {
message: 'Укажите название города'
});
return;
}
const data = JSON.parse(fs.readFileSync('data.json', 'utf8')); try {
data.users.push(newUser); const city = args.join(' ');
fs.writeFileSync('data.json', JSON.stringify(data, null, 2)); const response = await fetch(`https://api.openweathermap.org/data/2.5/weather?q=${city}&appid=YOUR_API_KEY&units=metric&lang=ru`);
const data = await response.json();
if (data.cod === 200) {
const weather = `🌤 Погода в ${data.name}:\n` +
`🌡 Температура: ${data.main.temp}°C\n` +
`💨 Ветер: ${data.wind.speed} м/с\n` +
`💧 Влажность: ${data.main.humidity}%`;
await client.sendMessage(message.chatId, {
message: weather
});
} else {
await client.sendMessage(message.chatId, {
message: 'Город не найден'
});
}
} catch (error) {
await client.sendMessage(message.chatId, {
message: 'Ошибка получения данных о погоде'
});
}
}
};
\`\`\` \`\`\`
### HTTP запросы ### Загрузка модулей
\`\`\`javascript
// Пример HTTP запроса
const response = await fetch('https://api.example.com/data');
const data = await response.json();
\`\`\`
### Работа с файлами 1. **Автоматическая загрузка**: Поместите файл в папку `modules/` и перезапустите бота
\`\`\`javascript 2. **Динамическая загрузка**: Используйте команду `.lm имя_модуля` для загрузки без перезапуска
import fs from 'fs';
import path from 'path';
// Чтение файла ### Рекомендации
const content = fs.readFileSync('file.txt', 'utf8');
// Запись файла - Используйте async/await для асинхронных операций
fs.writeFileSync('output.txt', 'content'); - Обрабатывайте ошибки с помощью try/catch
\`\`\` - Проверяйте наличие аргументов перед их использованием
- Используйте описательные имена команд
- Добавляйте проверки входных данных
- Не забывайте про обработку edge cases
## 🤝 Вклад в проект ### Отладка
1. Создавайте полезные модули Для отладки используйте `console.log()` в коде модуля. Логи будут отображаться в консоли бота.
2. Документируйте свой код
3. Тестируйте перед публикацией
4. Следуйте стилю кодирования проекта
## 📞 Поддержка ### Безопасность
При возникновении проблем: - Не используйте `eval()` или подобные функции
1. Проверьте логи в консоли - Валидируйте пользовательский ввод
2. Убедитесь в правильности API ключей - Не храните чувствительные данные в коде
3. Проверьте синтаксис модулей - Используйте переменные окружения для API ключей
4. Обратитесь к документации GramJS