📚 Telegram UserBot - Полная документация
🚀 Описание
Модульный 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. Установка зависимостей
```bash npm install ```
2. Получение API ключей
- Перейдите на https://my.telegram.org
- Войдите в свой аккаунт Telegram
- Создайте новое приложение
- Скопируйте API ID и API Hash
3. Настройка бота
Откройте файл telegram-userbot.js и замените:
YOUR_API_IDна ваш API IDYOUR_API_HASHна ваш API HashYOUR_PHONE_NUMBERна ваш номер телефона
4. Запуск
```bash node telegram-userbot.js ```
📋 Встроенные команды
| Команда | Описание | Пример использования |
|---|---|---|
!help |
Показать все доступные команды | !help |
!info |
Системная информация и статистика | !info |
!ping |
Пинг до Telegram DC2 | !ping |
!calc |
Калькулятор с поддержкой скобок | !calc 2+2*3 |
!time |
Текущее время и дата | !time |
!docs |
Показать документацию | !docs |
.lm |
Загрузить новый модуль | .lm mymodule |
🔧 Создание собственных модулей
Структура модуля
```javascript export default { name: 'commandname', // Имя команды (обязательно) description: 'Описание команды', // Описание (опционально) usage: '!commandname ', // Пример использования (опционально)
async execute(client, message, args, commands) {
try {
// Ваш код здесь
await client.sendMessage(message.chatId, {
message: 'Ответ команды'
});
} catch (error) {
console.error('Ошибка:', error);
await client.sendMessage(message.chatId, {
message: '❌ Произошла ошибка'
});
}
}
}; ```
Параметры функции execute
- client - Экземпляр GramJS клиента для взаимодействия с Telegram API
- message - Объект сообщения с полями:
chatId- ID чатаtext- Полный текст сообщенияfromId- ID отправителя
- args - Массив аргументов команды (без имени команды)
- commands - Map всех загруженных команд
Полезные методы client
```javascript // Отправка сообщения await client.sendMessage(chatId, { message: 'Текст' });
// Получение информации о себе const me = await client.getMe();
// Получение списка чатов const dialogs = await client.getDialogs(); ```
Пример простого модуля
```javascript // modules/hello.js export default { name: 'hello', description: 'Приветствие пользователя', usage: '!hello [имя]',
async execute(client, message, args) {
const name = args.length > 0 ? args.join(' ') : 'Мир';
await client.sendMessage(message.chatId, {
message: `👋 Привет, ${name}!`
});
}
}; ```
⚡ Динамическая загрузка модулей
Загрузка нового модуля
- Создайте файл модуля в папке
modules/ - Используйте команду
.lm имя_файладля загрузки - Модуль будет доступен сразу без перезапуска бота
Перезагрузка существующего модуля
Используйте .lm имя_модуля для перезагрузки уже существующего модуля с обновлениями.
🔒 Безопасность
- Userbot работает только с сообщениями от вашего аккаунта
- Не передавайте API ключи третьим лицам
- Будьте осторожны с модулями от неизвестных источников
- Регулярно проверяйте код загружаемых модулей
🐛 Отладка
Логирование
Бот выводит подробные логи в консоль:
- Загрузка модулей
- Выполнение команд
- Ошибки и исключения
Частые проблемы
-
"require is not defined"
- Убедитесь, что используете
export defaultвместоmodule.exports - Проверьте наличие
"type": "module"в package.json
- Убедитесь, что используете
-
"Could not find the input entity"
- Проблема с параметрами sendMessage
- Убедитесь, что передаете правильный chatId
-
Модуль не загружается
- Проверьте синтаксис модуля
- Убедитесь, что файл находится в папке modules/
📈 Расширенные возможности
Работа с базами данных
```javascript // Пример работы с JSON файлом как БД import fs from 'fs';
const data = JSON.parse(fs.readFileSync('data.json', 'utf8')); data.users.push(newUser); fs.writeFileSync('data.json', JSON.stringify(data, null, 2)); ```
HTTP запросы
```javascript // Пример HTTP запроса const response = await fetch('https://api.example.com/data'); const data = await response.json(); ```
Работа с файлами
```javascript import fs from 'fs'; import path from 'path';
// Чтение файла const content = fs.readFileSync('file.txt', 'utf8');
// Запись файла fs.writeFileSync('output.txt', 'content'); ```
🤝 Вклад в проект
- Создавайте полезные модули
- Документируйте свой код
- Тестируйте перед публикацией
- Следуйте стилю кодирования проекта
📞 Поддержка
При возникновении проблем:
- Проверьте логи в консоли
- Убедитесь в правильности API ключей
- Проверьте синтаксис модулей
- Обратитесь к документации GramJS