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()
YY
Yusuf Yan?k
230
Вы можете создать второй экземпляр класса Client и добавить его в список, чтобы управлять обоими клиентами одновременно. Вот пример кода, который показывает, как это сделать:
 app1 = Client("my_account1") 
app2 = Client("my_account2")
apps = [app1, app2]

# ...

async def send_message_to_all_apps(chat_id, text):
for app in apps:
await app.send_message(chat_id, text)

# ...
В этом примере создается список apps, который содержит два экземпляра класса Client. Затем определяется функция send_message_to_all_apps, которая отправляет сообщение в указанный чат от имени всех клиентов в списке apps. Вы можете использовать эту функцию в своем коде, чтобы отправлять сообщения от имени обоих клиентов одновременно.


Вот как вы можете добавить этот код в свой сценарий:
 import asyncio 
from loguru import logger
from asyncio import sleep
from pyrogram import Client, filters

app1 = Client("my_account1")
app2 = Client("my_account2")
apps = [app1, app2]

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 send_message_to_all_apps(
message.chat.id,
message.text.split('+')[1]
)
logger.info(f"Отправил сообщение в {message.chat.id}")
await sleep(float(TIME_SLEEP))

async def send_message_to_all_apps(chat_id, text):
for app in apps:
await app.send_message(chat_id, text)

app1.run()
app2.run()
Заманбек Абылгазы
Заманбек Абылгазы
25 860
Лучший ответ
Yusuf Yan?k а как добавить это в мой код
Заманбек Абылгазы В этом примере создаются два экземпляра класса Client и затем вызывается метод start() для каждого из них. После этого вы можете использовать эти экземпляры для отправки сообщений и выполнения других действий с помощью Pyrogram. Обратите внимание, что вам необходимо вызвать метод start() для каждого экземпляра класса Client, который вы хотите использовать.
Yusuf Yan?k запустил оба клиента
Для того чтобы добавить еще одного клиента и выполнять задачу на двух клиентах одновременно, вы можете использовать функцию `asyncio.gather()`. Это позволит запустить обработку сообщений для двух клиентов параллельно. Вот как это можно сделать:

```python
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 app1.send_message(
message.chat.id,
message.text.split('+')[1]
)
logger.info(f"Отправил сообщение в {message.chat.id}")
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(app1.start(), app2.start())

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

Этот код позволит вам запустить обработку сообщений для двух клиентов одновременно, и они будут отправлять сообщения в чаты параллельно. Обратите внимание, что вам также необходимо использовать разные токены для каждого клиента, чтобы они могли работать независимо друг от друга.
Alexandr ...
Alexandr ...
387