TapSwapBot icon indicating copy to clipboard operation
TapSwapBot copied to clipboard

multi-account launch error

Open s1rne opened this issue 1 year ago • 12 comments

After change domen to .club stopped work multi-account. I tried run accounts one by one, but it is did't help. I changed user-agent after work first account. It is did help, but not for long. I think what required create random user-agent.

Most likely this is a problem for everyone

s1rne avatar Jul 19 '24 15:07 s1rne

same

Visualua avatar Jul 19 '24 21:07 Visualua

image

I fix it In order for all your accounts to work, you need to divide 1 bot for each session, I tested on 3 sessions in one bot, it did not work.

Что бы у вас все аккаунты заработали, вам нужно разделить на каждую сессию по 1 боту, я тестировал на 3 сессиях в одном боте, не работало.

After change domen to .club stopped work multi-account. I tried run accounts one by one, but it is did't help. I changed user-agent after work first account. It is did help, but not for long. I think what required create random user-agent.

Most likely this is a problem for everyone

mironov1338 avatar Jul 19 '24 23:07 mironov1338

same

pasha140395 avatar Jul 20 '24 05:07 pasha140395

не работает!

Domenick90 avatar Jul 20 '24 06:07 Domenick90

не работает!

image

Всё работает, внимательно сделай все обновления Install и в конце будет желтым команда вот и её тоже сделай, и после чего залей по инструкции. Посмотри у меня в консоли есть время работы, и время как видишь актуальное!

mironov1338 avatar Jul 20 '24 08:07 mironov1338

не работает!

image

Всё работает, внимательно сделай все обновления Install и в конце будет желтым команда вот и её тоже сделай, и после чего залей по инструкции. Посмотри у меня в консоли есть время работы, и время как видишь актуальное!

Да, разделение на 1 сессия - 1 бот работает, но вопрос что бы в одном окне иметь несколько сессий, если у тебя 3 сессии то у кого-то может быть 80 сессий и разделять их на каждого бота времязатратно

kirajok avatar Jul 20 '24 11:07 kirajok

не работает!

image

Всё работает, внимательно сделай все обновления Install и в конце будет желтым команда вот и её тоже сделай, и после чего залей по инструкции. Посмотри у меня в консоли есть время работы, и время как видишь актуальное!

Помогло, но это не самый удобный способ запуска фермы. Я не понимаю почему не работает через потоки asyncio. Да даже почему не работает если в одной программе последовательно запускать сессии? ведь это должно быть так же, как и отдельные окна. Если переписать на multiprocessing, будет же работать?

s1rne avatar Jul 21 '24 10:07 s1rne

не работает!

image Всё работает, внимательно сделай все обновления Install и в конце будет желтым команда вот и её тоже сделай, и после чего залей по инструкции. Посмотри у меня в консоли есть время работы, и время как видишь актуальное!

Да, разделение на 1 сессия - 1 бот работает, но вопрос что бы в одном окне иметь несколько сессий, если у тебя 3 сессии то у кого-то может быть 80 сессий и разделять их на каждого бота времязатратно

Я переписал на multiprocessing и это помогло. Я могу скинуть код для перехода на multiprocessing.

tapper.py: Надо добавить функцию, в которую передаём tg_client типа list. в нём надо передать все нужные данные для создания клиента (я запускаю клиента через session_string, вам же надо поменять на свой способ). также параметр settings это тоже моя доработка, вам это не надо

def run_tapper_(tg_client: list, proxy: str | None, lock: asyncio.Lock, settings):
    _tg_client = Client(
        name=tg_client[0],
        api_id=tg_client[1],
        api_hash=tg_client[2],
        session_string=tg_client[3])
    return asyncio.run(run_tapper(tg_client=_tg_client, proxy=proxy, lock=lock, settings=settings))

После чего надо запускать не await run_tapper(...), а run_tapper_(...)

как создавать таски:

import multiprocessing as mp
...
tasks = [
            mp.Process(target=func, args=[[tg_client[0], tg_client[1], tg_client[2], tg_client[3]], None, lock, setting]) for tg_client, setting in zip(tg_clients, settings)
        ]
...
[x.start() for x in tasks]
[x.join() for x in tasks]

s1rne avatar Jul 21 '24 11:07 s1rne

Куда надо поместить код с этого момента?

После чего надо запускать не await run_tapper(...), а run_tapper_(...)

как создавать таски:

import multiprocessing as mp
...
tasks = [
            mp.Process(target=func, args=[[tg_client[0], tg_client[1], tg_client[2], tg_client[3]], None, lock, setting]) for tg_client, setting in zip(tg_clients, settings)
        ]
...
[x.start() for x in tasks]
[x.join() for x in tasks]

faerhjio0gase avatar Jul 21 '24 17:07 faerhjio0gase

Куда надо поместить код с этого момента?

После чего надо запускать не await run_tapper(...), а run_tapper_(...) как создавать таски:

import multiprocessing as mp
...
tasks = [
            mp.Process(target=func, args=[[tg_client[0], tg_client[1], tg_client[2], tg_client[3]], None, lock, setting]) for tg_client, setting in zip(tg_clients, settings)
        ]
...
[x.start() for x in tasks]
[x.join() for x in tasks]

В utils/launcher.py с 101 по 112 строку замени моим куском кода

tasks = [
            mp.Process(target=run_tapper_, args=[[tg_client[0], tg_client[1], tg_client[2], tg_client[3]], None, lock]) for tg_client in tg_clients
        ]
[x.start() for x in tasks]
[x.join() for x in tasks]

Не забудь добавить функцию run_tapper_ в tapper.py и передавать не массив сессий, а массив данных для создания сессий. Ну и надо в начало файла добавить импорт multiprocessing.

Важно, я использую для создания сессий session_string, так как я работаю с бд, поэтому тебе надо в run_tapper_ передавать session_name, api_id, api_hash, workdir

s1rne avatar Jul 21 '24 22:07 s1rne

Важно, я использую для создания сессий session_string, так как я работаю с бд, поэтому тебе надо в run_tapper_ передавать session_name, api_id, api_hash, workdir

А как быть с проксями? Если проксифайером закрываться дак там надо имя процесса иметь разное или ID угадывать....

AlexArGC avatar Jul 24 '24 20:07 AlexArGC

Важно, я использую для создания сессий session_string, так как я работаю с бд, поэтому тебе надо в run_tapper_ передавать session_name, api_id, api_hash, workdir

А как быть с проксями? Если проксифайером закрываться дак там надо имя процесса иметь разное или ID угадывать....

Да забыл написать, ну передавать прокси тоже, просто на один параметр больше. В способе с multiprocessing ты передаёшь всё то же самое, просто переменную клиента ты создаёшь не перед созданием потока, а в самом потоке

s1rne avatar Jul 24 '24 21:07 s1rne