Обновить README.md
This commit is contained in:
parent
be98d92890
commit
707a53eb3b
248
README.md
248
README.md
@ -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: 'Получить погоду',
|
||||||
const data = JSON.parse(fs.readFileSync('data.json', 'utf8'));
|
usage: '!weather <город>',
|
||||||
data.users.push(newUser);
|
async execute(client, message, args) {
|
||||||
fs.writeFileSync('data.json', JSON.stringify(data, null, 2));
|
if (args.length === 0) {
|
||||||
|
await client.sendMessage(message.chatId, {
|
||||||
|
message: 'Укажите название города'
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const city = args.join(' ');
|
||||||
|
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
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user