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()
import asyncio
from loguru import logger
from asyncio import sleep
from pyrogram import Client, filters

app = Client("my_account1") # Первый клиент с именем "my_account1"
app2 = Client("my_account2") # Второй клиент с именем "my_account2"

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":
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]
)
await 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(
app.start(), # Запускаем первого клиента
app2.start() # Запускаем второго клиента
)

if __name__ == "__main__":
asyncio.run (main()) # Запускаем асинхронный цикл с двумя клиентами
А М
А М
41 234
Лучший ответ
Чтобы добавить еще одного клиента, вы можете создать еще один экземпляр класса Client с другим именем сессии. Например, вы можете добавить строку app2 = Client("my_account2") после строки app = Client("my_accountr"). Затем вы можете использовать app2 для выполнения задачи с помощью второго клиента. Однако, если вы хотите, чтобы оба клиента выполняли одну и ту же задачу одновременно, вам необходимо изменить код таким образом, чтобы он использовал асинхронные функции и запускал задачи для обоих клиентов параллельно. Например, вы можете создать асинхронную функцию для отправки сообщений и запустить ее для обоих клиентов с помощью asyncio.gather(). Вот пример кода, который демонстрирует это:
 import asyncio 
from loguru import logger
from asyncio import sleep
from pyrogram import Client, filters

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

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

@app1.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:
await asyncio.gather(
send_spam(app1, message),
send_spam(app2, message)
)

async def send_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}")
await sleep(float(TIME_SLEEP))

app1.run()
app2.run()
В этом примере мы создаем два экземпляра класса Client: app1 и app2. Затем мы создаем асинхронную функцию send_spam, которая принимает в качестве аргументов экземпляр Client и сообщение. Эта функция отправляет сообщения в чат с заданным интервалом времени. В функции enable_spam мы используем asyncio.gather() для запуска функции send_spam для обоих клиентов параллельно.
Женя Савчук
Женя Савчук
25 860
Евгений Шаповалов здавствуйте я добавил ваш код первый клиент пишет а второй ошибку выдает https://pastebin.com/fgNCLRBa
Евгений Шаповалов а можно сделать два файла таких и запустить их с одного окна обеих ?