shamhi / TapSwapBot

Bot that mines coins in Tapswap
https://t.me/tapswap_bot
246 stars 82 forks source link

multi-account launch error #185

Open s1rne opened 1 month ago

s1rne commented 1 month ago

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

Visualua commented 1 month ago

same

mironov1338 commented 1 month ago

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

pasha140395 commented 1 month ago

same

Domenick90 commented 1 month ago

не работает!

mironov1338 commented 1 month ago

не работает!

image

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

kirajok commented 1 month ago

не работает!

image

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

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

s1rne commented 1 month ago

не работает!

image

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

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

s1rne commented 1 month ago

не работает!

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]
faerhjio0gase commented 1 month ago

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

После чего надо запускать не 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 commented 1 month ago

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

После чего надо запускать не 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]

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

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

AlexArGC commented 1 month ago

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

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

s1rne commented 1 month ago

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

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

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