Telegram UserBot
Модульный Telegram UserBot на JavaScript с поддержкой динамической загрузки команд.
Установка
- Получите API ключи на https://my.telegram.org
- Установите зависимости: ```bash npm install ```
- Замените в
telegram-userbot.js:YOUR_API_IDна ваш API IDYOUR_API_HASHна ваш API HashYOUR_PHONE_NUMBERна ваш номер телефона
Запуск
```bash node telegram-userbot.js ```
Встроенные команды
!help- Список всех команд!info- Информация о системе и аптайме!ping- Пинг до DC2 Telegram!calc <выражение>- Калькулятор!time- Текущее время!docs- Документация.lm <имя_модуля>- Загрузить новый модуль
Создание модулей
Структура модуля
Создайте файл в папке modules/ с расширением .js:
```javascript export default { name: 'имя_команды', description: 'Описание команды', usage: '!команда [параметры]', async execute(client, message, args) { // Ваш код здесь await client.sendMessage(message.chatId, { message: 'Ответ команды' }); } }; ```
Параметры функции execute
client- Экземпляр GramJS клиентаmessage- Объект сообщения с полями:chatId- ID чатаtext- Текст сообщенияsenderId- ID отправителя
args- Массив аргументов команды (без самой команды)
Пример простого модуля
```javascript
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}!
});
}
};
```
Пример модуля с API запросом
```javascript export default { name: 'weather', description: 'Получить погоду', usage: '!weather <город>', async execute(client, message, args) { 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: 'Ошибка получения данных о погоде'
});
}
}
}; ```
Загрузка модулей
- Автоматическая загрузка: Поместите файл в папку
modules/и перезапустите бота - Динамическая загрузка: Используйте команду
.lm имя_модулядля загрузки без перезапуска
Рекомендации
- Используйте async/await для асинхронных операций
- Обрабатывайте ошибки с помощью try/catch
- Проверяйте наличие аргументов перед их использованием
- Используйте описательные имена команд
- Добавляйте проверки входных данных
- Не забывайте про обработку edge cases
Отладка
Для отладки используйте console.log() в коде модуля. Логи будут отображаться в консоли бота.
Безопасность
- Не используйте
eval()или подобные функции - Валидируйте пользовательский ввод
- Не храните чувствительные данные в коде
- Используйте переменные окружения для API ключей