You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`<имя_аккаунта>`: Уникальное имя для нового аккаунта.
20
20
21
-
Скрипт запросит `API ID`, `API Hash`, язык и другие параметры.
22
-
23
-
### `toggle`
24
-
25
-
Включает или выключает аккаунт.
26
-
27
-
**Синтаксис:**`toggle <имя_аккаунта>`
28
-
29
-
-`<имя_аккаунта>`: Имя существующего аккаунта.
21
+
Скрипт запросит `API ID`, `API Hash`, номер телефона и все остальные данные, необходимые для создания полноценной сессии и записи аккаунта в базу данных. Вы сможете настроить язык, устройство, прокси и статус активации.
30
22
31
23
### `delete`
32
24
33
-
Безвозвратно удаляет аккаунт и все его данные.
25
+
Безвозвратно удаляет аккаунт и все его данные (включая сессию).
34
26
35
27
**Синтаксис:**`delete <имя_аккаунта>`
36
28
37
29
-`<имя_аккаунта>`: Имя аккаунта для удаления.
38
30
39
31
Скрипт запросит подтверждение перед удалением.
40
32
33
+
### `toggle`
34
+
35
+
Включает или выключает аккаунт.
36
+
37
+
**Синтаксис:**`toggle <имя_аккаунта>`
38
+
39
+
-`<имя_аккаунта>`: Имя существующего аккаунта.
40
+
41
+
Отключенные аккаунты не будут запускаться при старте бота.
Copy file name to clipboardExpand all lines: docs/for-developers/creating-modules.md
+56-17Lines changed: 56 additions & 17 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -51,7 +51,7 @@ def register(client):
51
51
## Метаданные
52
52
53
53
-`__requires__` (опционально): Список строковых имен Python-пакетов, которые необходимы для работы модуля. DeBot автоматически попытается установить их через `pip` при добавлении модуля.
54
-
-`__trusted__` (опционально): `True` или `False`. Если `True`, модуль считается потенциально опасным и требует явного одобрения от пользователя командой `.trustmod`. Только доверенные модули получают доступ к реальному объекту `TelegramClient`.
54
+
-`__trusted__` (опционально): `True` или `False`. Если `True`, модуль считается потенциально опасным и требует явного одобрения от пользователя командой `.trustmod`. Только доверенные модули получают доступ к реальному объекту `TelegramClient` и его расширенным возможностям.
55
55
-`__config__` (опционально): Словарь, описывающий настраиваемые параметры модуля. Для каждого ключа можно указать `default` (значение по умолчанию) и `description` (описание).
56
56
-`info` (обязательно): Экземпляр класса `ModuleInfo`, который используется для генерации справки в команде `.help`.
57
57
@@ -61,25 +61,64 @@ def register(client):
61
61
62
62
В зависимости от статуса доверия модуля, в `client` будет передан либо **реальный `TelegramClient`** (если модуль доверенный), либо **безопасная обертка `ModuleClient`** (если нет).
63
63
64
+
## Мультиаккаунтное взаимодействие
65
+
66
+
> ⚠️ **Требуется `__trusted__ = True`**
67
+
>
68
+
> Эта функция предоставляет доступ ко всем активным клиентам и является потенциально опасной. Используйте ее только в доверенных модулях.
69
+
70
+
Вы можете создавать модули, которые управляют всеми активными аккаунтами одновременно. Например, модуль для массового вступления в чат.
71
+
72
+
Для этого используйте метод `client.get_all_clients()`, который возвращает список всех активных экземпляров `TelegramClient`.
73
+
74
+
**Пример модуля `mass_joiner.py`:**
75
+
76
+
```python
77
+
import asyncio
78
+
from telethon import events
79
+
from telethon.tl.functions.channels import JoinChannelRequest
80
+
from userbot import TelegramClient
81
+
from userbot.src.module_info import ModuleInfo
82
+
83
+
# Этот модуль должен быть доверенным, чтобы получить доступ к другим клиентам
84
+
__trusted__ =True
85
+
86
+
info = ModuleInfo(
87
+
name="Mass Joiner",
88
+
category="tools",
89
+
patterns=[".mjoin <chat>"],
90
+
descriptions=["Зайти в указанный чат со всех активных аккаунтов."]
Init -- "Дешифрует сессию из БД и пишет в" --> TempSession
30
27
DBManager -- "Подключается к" --> DBContainer
31
28
```
32
29
33
-
-**`userbot/__init__.py` (Ядро)**: Это первая точка входа при запуске. Его задача — подключиться к базе данных, получить список всех **активных** аккаунтов (`is_enabled = True`) и создать для каждого из них отдельную асинхронную задачу по запуску клиента.
34
-
-**`userbot/__main__.py` (Основной цикл)**: Этот файл содержит логику обработки команд, полученных от Telegram. Здесь же инициализируется и запускается `APScheduler`, который выполняет фоновые задачи (сборка мусора, автообновление).
30
+
-**`userbot/__init__.py` (Ядро)**: Это первая точка входа при запуске. Его задача — подключиться к базе данных, получить список всех **активных** аккаунтов (`is_enabled = True`). Для каждого аккаунта он выполняет следующие шаги:
31
+
1. Извлекает зашифрованный файл сессии из базы данных.
32
+
2. Дешифрует его.
33
+
3. Записывает содержимое во временный файл на диске.
34
+
4. Создает экземпляр стандартного `telethon.sessions.SQLiteSession`, указывая на этот временный файл.
35
+
5. Создает и запускает отдельную асинхронную задачу для `TelegramClient`, передавая ему эту сессию.
36
+
-**`userbot/__main__.py` (Основной цикл)**: Этот файл содержит логику основного цикла событий и инициализирует `APScheduler` для выполнения фоновых задач (сборка мусора, автообновление).
35
37
-**DB Manager (SQLAlchemy)**: Слой абстракции для работы с базой данных. Все функции для добавления, получения, обновления и удаления данных (аккаунтов, сессий, модулей) реализованы здесь с использованием SQLAlchemy ORM.
36
38
-**TranslationManager**: Глобальный сервис, который отвечает за загрузку, кэширование и предоставление переведенных строк. Он обеспечивает мультиязычность во всем приложении.
37
-
-**TelegramClient Instance**: Для каждого активного аккаунта создается свой собственный экземпляр кастомного класса `TelegramClient`, который наследуется от `telethon.TelegramClient`. Он содержит дополнительную логику, например, для работы с переводами.
38
-
-**DbSession**: Кастомный класс сессии Telethon, который хранит данные сессии не в файле, а в базе данных PostgreSQL.
39
+
-**TelegramClient Instance**: Для каждого активного аккаунта создается свой собственный экземпляр кастомного класса `TelegramClient`, который наследуется от `telethon.TelegramClient`.
40
+
-**Хранение сессии**: В отличие от стандартного подхода, DeBot не хранит `.session` файлы на диске постоянно. Весь SQLite файл сессии хранится в базе данных PostgreSQL в зашифрованном виде (в поле типа `BYTEA`). Это обеспечивает безопасность и централизованное хранение.
Copy file name to clipboardExpand all lines: docs/user-guide/module-management.md
+5-1Lines changed: 5 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,6 +33,10 @@ DeBot обладает мощной модульной системой. Упр
33
33
34
34
-**`<модуль>`**: Имя модуля.
35
35
-**`<ключ>`**: Ключ параметра, который нужно изменить.
36
-
-**`<значение>`**: Новое значение. Если значение содержит пробелы, его следует взять в кавычки (на данный момент не поддерживается, передавайте как одно слово или JSON).
36
+
-**`<значение>`**: Новое значение.
37
+
38
+
### `.updatemodules`
39
+
40
+
(В разработке) Команда для автоматического обновления модулей.
37
41
38
42
> **Важно:** После добавления или удаления модулей может потребоваться перезапуск бота (`docker-compose restart userbot`) для корректной загрузки или выгрузки обработчиков событий.
0 commit comments