itd-api / ItdAccounts
Class: ItdAccounts
Defined in: accounts.ts:124
Несколько аккаунтов итд.com в одном месте.
Контейнер именованных ItdClient: каждый аккаунт получает собственный токен, cookie и deviceId, а сессии всех складываются в одно хранилище — обычно в один файл, а не в десяток. Имя аккаунта выбираете вы; сервер о нём ничего не знает.
Example
Бот на нескольких аккаунтах
import { ItdAccounts } from 'itd-api';
import { FileMultiTokenStorage } from 'itd-api/node';
await using accounts = new ItdAccounts({
storage: new FileMultiTokenStorage('./.itd-sessions.json'),
rateLimit: { concurrency: 4 },
});
// Восстанавливаем тех, кто уже входил раньше: токен возьмётся из хранилища.
await accounts.restore();
if (!accounts.has('kiow')) {
accounts.addAccount('kiow', { auth: { email, password, getTurnstileToken } });
}
await accounts.account('kiow').posts.create({ content: 'привет' });
for (const [name, itd] of accounts) {
console.log(name, await itd.getUserId());
}Constructors
Constructor
new ItdAccounts(options?): ItdAccounts;Defined in: accounts.ts:145
Parameters
options?
ItdAccountsOptions = {}
Returns
ItdAccounts
Accessors
size
Get Signature
get size(): number;Defined in: accounts.ts:180
Сколько аккаунтов заведено.
Returns
number
storage
Get Signature
get storage(): MultiTokenStorage;Defined in: accounts.ts:175
Общее хранилище сессий — то же, что передано опцией storage.
Returns
Methods
[asyncDispose]()
asyncDispose: Promise<void>;Defined in: accounts.ts:517
Позволяет использовать контейнер с await using.
Returns
Promise<void>
[iterator]()
iterator: IterableIterator<[string, ItdClient]>;Defined in: accounts.ts:474
Перебор аккаунтов парами «имя — клиент».
Returns
IterableIterator<[string, ItdClient]>
Example
for (const [name, itd] of accounts) {
const me = await itd.users.me();
console.log(name, me.nickname);
}account()
account(name): ItdClient;Defined in: accounts.ts:272
Клиент аккаунта.
Parameters
name
string
Returns
Throws
если такого аккаунта нет
Example
await accounts.account('kiow').posts.like(postId);addAccount()
addAccount(name, options?): ItdClient;Defined in: accounts.ts:212
Заводит аккаунт.
Возвращается обычный ItdClient — со всеми ресурсами, плагинами и realtime(). Хранилище ему подставляется само: срез общего по имени аккаунта.
Опция auth не обязательна: когда сессия этого аккаунта уже лежит в хранилище, токен возьмётся оттуда, а истёкший продлится сам.
Parameters
name
string
options?
AddAccountOptions = {}
Returns
Throws
если имя пустое или уже занято
Example
accounts.addAccount('bot', { auth: { email, password, getTurnstileToken } });
accounts.addAccount('reader', { auth: '<accessToken>' });
accounts.addAccount('через-прокси', { fetch: proxyFetch('socks5://…') });close()
close(): Promise<void>;Defined in: accounts.ts:491
Закрывает все аккаунты и останавливает общую очередь.
Аккаунты остаются в контейнере и работоспособны: новые запросы поднимут всё заново, но уже созданные потоки уведомлений останутся закрытыми.
Returns
Promise<void>
Example
await using accounts = new ItdAccounts({ storage });
// …работа…
// dispose() вызовется сам на выходе из блокаdispose()
dispose(): Promise<void>;Defined in: accounts.ts:502
Окончательно освобождает контейнер и отключает общие плагины у всех аккаунтов.
Для временной остановки потоков и очереди без отключения плагинов используйте close.
Returns
Promise<void>
has()
has(name): boolean;Defined in: accounts.ts:190
Заведён ли аккаунт с таким именем.
Parameters
name
string
Returns
boolean
hasPlugin()
hasPlugin(name): boolean;Defined in: accounts.ts:416
Подключён ли общий плагин с таким именем.
Parameters
name
string
Returns
boolean
names()
names(): string[];Defined in: accounts.ts:185
Имена заведённых аккаунтов в порядке добавления.
Returns
string[]
on()
on<K>(event, listener): Unsubscribe;Defined in: accounts.ts:459
Подписывается на события авторизации всех аккаунтов сразу.
Type Parameters
K
K extends keyof AccountEvents
Parameters
event
K
listener
Returns
функция отписки
Example
accounts.on('authError', ({ account }) => console.warn(`${account}: сессия потеряна`));pluginNames()
pluginNames(): string[];Defined in: accounts.ts:411
Имена общих плагинов в фактическом порядке выполнения обёрток.
Returns
string[]
removeAccount()
removeAccount(name, options?): Promise<boolean>;Defined in: accounts.ts:332
Убирает аккаунт: закрывает его клиента и, если попросить, забывает сессию.
Сетевого запроса не выполняет. Чтобы завершить сессию на сервере, вызовите itd.auth.logout() до удаления.
Parameters
name
string
options?
RemoveAccountOptions = {}
Returns
Promise<boolean>
false, если такого аккаунта и не было
restore()
restore(): Promise<string[]>;Defined in: accounts.ts:303
Поднимает аккаунты, сессии которых уже лежат в хранилище.
То, ради чего мультихранилище знает свой состав: после перезапуска процесса ни auth, ни капча не нужны — токен, deviceId и cookie берутся из сохранённого. Уже заведённые аккаунты не трогаются. Записи, в которых после выхода остался только deviceId, пропускаются: авторизованной сессии в них уже нет.
Returns
Promise<string[]>
имена добавленных аккаунтов
Example
const restored = await accounts.restore();
console.log(`подняли ${restored.length} аккаунтов без единого входа`);unuse()
unuse(name): Promise<boolean>;Defined in: accounts.ts:426
Отключает общий плагин у существующих клиентов и не применяет его к будущим.
Parameters
name
string
Returns
Promise<boolean>
false, если такого плагина не было
Throws
если от плагина зависит другой общий плагин
use()
use(plugin): this;Defined in: accounts.ts:379
Подключает плагин всем аккаунтам — и заведённым, и будущим.
Parameters
plugin
Returns
this
Throws
если плагин задан неверно или уже подключён
Example
accounts.use(crypt());