Python

Повторный вопрос python не решается ((

есть код в котором надо добавить еще одного клиента и чтобы команда была на два клиента сразу вот код
app = Client("my_accountr") тут как добавить еще одного клиента то есть значение app была равно двум клиентам и они два начали одновременно выполнят задачу

 import asyncio          
from loguru import logger
from asyncio import sleep
from pyrogram import Client, filters

app = Client("my_accountr")

TIME_SLEEP = 12
spam_enabled = True # Флаг, указывающий, включено ли отправление сообщений

@app.on_message(filters.command('a', prefixes='-') & filters.me)
async def enable_spam(_, message):
global spam_enabled # Используем глобальный флаг

if message.text.split()[1] == "1":
spam_enabled = False # Устанавливаем флаг в False для прекращения отправки
logger.info("Остановка отправки сообщений")
elif message.text.split()[1] == "2": # Добавляем проверку для команды "resume"
spam_enabled = True # Устанавливаем флаг в True для возобновления отправки
logger.info("Возобновление отправки сообщений")
else:
while True: # Бесконечный цикл
if not spam_enabled:
break
await app.send_message(
message.chat.id,
message.text.split('+')[1]
)
logger.info(f"Отправил сообщение в {message.chat.id}")
await sleep(float(TIME_SLEEP))

app.run()
Вместо использования метода idle, вы можете просто оставить созданные эвент лупы работать до тех пор, пока они не будут принудительно завершены. Вот доработанный код:
 import asyncio 
from loguru import logger
from asyncio import sleep
from pyrogram import Client, filters

app1 = Client("my_account1")
app2 = Client("my_account2")

TIME_SLEEP = 12
spam_enabled = True # Флаг, указывающий, включено ли отправление сообщений

async def process_spam(app, message):
while True: # Бесконечный цикл
if not spam_enabled:
break
await app.send_message(
message.chat.id,
message.text.split('+')[1]
)
logger.info(f"Отправил сообщение в {message.chat.id} через {app.session_name}")
await sleep(float(TIME_SLEEP))


@app1.on_message(filters.command('a', prefixes='-') & filters.me)
@app2.on_message(filters.command('a', prefixes='-') & filters.me)
async def enable_spam(app, message):
global spam_enabled # Используем глобальный флаг

if message.text.split()[1] == "1":
spam_enabled = False # Устанавливаем флаг в False для прекращения отправки
logger.info("Остановка отправки сообщений")
elif message.text.split()[1] == "2": # Добавляем проверку для команды "resume"
spam_enabled = True # Устанавливаем флаг в True для возобновления отправки
logger.info("Возобновление отправки сообщений")
else:
await process_spam(app, message)


async def main():
# Запуск двух приложений одновременно
await asyncio.gather(app1.start(), app2.start())

asyncio.run(main())
В данном коде asyncio.gather() применяется для параллельного запуска двух клиентов. Метод asyncio.run () используется для запуска асинхронной функции main(). Это включает создание нового событийного цикла, который завершается после завершения функции main().
Виктор Мусин
Виктор Мусин
25 860
Лучший ответ
Сергей Коцер здравствуйте может у меня ваш код не работает потому что у меня виндоус ?
 Traceback (most recent call last): 
File "C:\Users\test2\AppData\Local\Programs\Python\Python38\2.py", line 43, in
app1.idle()
AttributeError: 'Client' object has no attribute 'idle'
>>>
А есть долб**б который спамит тут своим кодом
 import asyncio 
from loguru import logger
from asyncio import sleep
from pyrogram import Client, filters

app1 = Client("my_account1")
app2 = Client("my_account2")

TIME_SLEEP = 12
spam_enabled = True # Флаг, указывающий, включено ли отправление сообщений

@app1.on_message(filters.command('a', prefixes='-') & filters.me)
@app2.on_message(filters.command('a', prefixes='-') & filters.me)
async def enable_spam(_, message):
global spam_enabled # Используем глобальный флаг

if message.text.split()[1] == "1":
spam_enabled = False # Устанавливаем флаг в False для прекращения отправки
logger.info("Остановка отправки сообщений")
elif message.text.split()[1] == "2": # Добавляем проверку для команды "resume"
spam_enabled = True # Устанавливаем флаг в True для возобновления отправки
logger.info("Возобновление отправки сообщений")
else:
while True: # Бесконечный цикл
if not spam_enabled:
break
await asyncio.gather(
app1.send_message(message.chat.id, message.text.split('+')[1]),
app2.send_message(message.chat.id, message.text.split('+')[1])
)
logger.info(f"Отправил сообщение в {message.chat.id}")
await sleep(float(TIME_SLEEP))

async def main():
await asyncio.gather(app1.start(), app2.start())
await asyncio.gather(app1.idle(), app2.idle())

if __name__ == "__main__":
asyncio.run(main())