diff --git a/README.md b/README.md index e50ba46..d5f7f43 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,206 @@ -# userbot +# πŸ“š 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 ΠΊΠ»ΡŽΡ‡Π΅ΠΉ +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 +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}!` + }); + } +}; +\`\`\` + +## ⚑ ДинамичСская Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ + +### Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ модуля +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 +// ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с 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'); +\`\`\` + +## 🀝 Π’ΠΊΠ»Π°Π΄ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ + +1. Π‘ΠΎΠ·Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ +2. Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ свой ΠΊΠΎΠ΄ +3. ВСстируйтС ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ +4. Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ ΡΡ‚ΠΈΠ»ΡŽ кодирования ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° + +## πŸ“ž ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° + +ΠŸΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: +1. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π»ΠΎΠ³ΠΈ Π² консоли +2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ API ΠΊΠ»ΡŽΡ‡Π΅ΠΉ +3. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ синтаксис ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ +4. ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ GramJS