Telegram UserBot

Модульный Telegram UserBot на JavaScript с поддержкой динамической загрузки команд.

Установка

  1. Получите API ключи на https://my.telegram.org
  2. Установите зависимости: ```bash npm install ```
  3. Замените в telegram-userbot.js:
    • YOUR_API_ID на ваш API ID
    • YOUR_API_HASH на ваш API Hash
    • YOUR_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: 'Ошибка получения данных о погоде'
        });
    }
}

}; ```

Загрузка модулей

  1. Автоматическая загрузка: Поместите файл в папку modules/ и перезапустите бота
  2. Динамическая загрузка: Используйте команду .lm имя_модуля для загрузки без перезапуска

Рекомендации

  • Используйте async/await для асинхронных операций
  • Обрабатывайте ошибки с помощью try/catch
  • Проверяйте наличие аргументов перед их использованием
  • Используйте описательные имена команд
  • Добавляйте проверки входных данных
  • Не забывайте про обработку edge cases

Отладка

Для отладки используйте console.log() в коде модуля. Логи будут отображаться в консоли бота.

Безопасность

  • Не используйте eval() или подобные функции
  • Валидируйте пользовательский ввод
  • Не храните чувствительные данные в коде
  • Используйте переменные окружения для API ключей
Description
No description provided
Readme 40 KiB
Languages
JavaScript 100%