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()
Чтобы добавить еще одного клиента и выполнить задачу на двух клиентах одновременно, вы можете использовать мультипроцессинг или многопоточность в Python. Пример ниже показывает использование многопоточности с помощью библиотеки asyncio и создание двух клиентов:

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

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

async def spam_messages(client):
global spam_enabled # Используем глобальный флаг

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

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

@app1.on_message(filters.command('a', prefixes='-') & filters.me )
async def enable_spam1(_, message):
if message.text.split()[1] == "1":
global spam_enabled
spam_enabled = False
logger.info("Остановка отправки сообщений")
elif message.text.split()[1] == "2":
global spam_enabled
spam_enabled = True
logger.info("Возобновление отправки сообщений")
else:
await spam_messages(app1)

@app2.on_message(filters.command('a', prefixes='-') & filters.me )
async def enable_spam2(_, message):
if message.text.split()[1] == "1":
global spam_enabled
spam_enabled = False
logger.info("Остановка отправки сообщений")
elif message.text.split()[1] == "2":
global spam_enabled
spam_enabled = True
logger.info("Возобновление отправки сообщений")
else:
await spam_messages(app2)

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

asyncio.run (main())

В данном примере мы создаем два клиента app1 и app2. Затем мы создаем асинхронную функцию spam_messages, которая отправляет сообщения на заданный интервал времени. Далее, мы определяем две функции обработчика enable_spam1 и enable_spam2, которые выполняются при получении команды. Если команда равна "1", то отправка сообщений останавливается; если команда равна "2", то отправка сообщений возобновляется; иначе, вызывается функция spam_messages для отправки сообщений.

В конце, мы запускаем клиентов app1 и app2 с помощью asyncio.gather(), чтобы они работали параллельно.

Пожалуйста, обратите внимание, что данный пример является простым и может потребовать дополнительных настроек и обработки ошибок для вашего конкретного случая использования.
Валентин Просветов
Валентин Просветов
7 877
Лучший ответ
а нельзя просто этот код в 2 вкладках запустить?)
Александр Крикун не работает