Я пишу юзербота на Pyrogram. Столкнулся с проблемой - никак не получается запустить клиент через функцию run (и чистый start тоже). В случае, если создавать класс с объектом клиента (он создаётся в init) не в асинхронной функции, ничего не срабатывает, после остановки программы вылетает ошибка ниже:
test.py:28: RuntimeWarning: coroutine 'Account.start_messaging' was never awaited
new_account.start_messaging([-123456789], ["123456789"])
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
В случае, если создавать класс в асинхронной функции, то при попытке запустить его через run выходит ошибка ещё больше:
self.start()
RuntimeWarning: Enable tracemalloc to get the object allocation traceback
Traceback (most recent call last):
File "c:\Users\makha\OneDrive\Рабочий стол\rassilka\test.py", line 31, in <module>
asyncio.run(main())
File "C:\Users\makha\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "C:\Users\makha\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\makha\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 653, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "c:\Users\makha\OneDrive\Рабочий стол\rassilka\test.py", line 28, in main
new_account = Account("+447435260883")
^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\Users\makha\OneDrive\Рабочий стол\rassilka\test.py", line 14, in __init__
self.client.run()
File "C:\Users\makha\OneDrive\Рабочий стол\rassilka\.venv\Lib\site-packages\pyrogram\methods\utilities\run.py", line 85, in run
run(idle())
File "C:\Users\makha\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 629, in run_until_complete
self._check_running()
File "C:\Users\makha\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 588, in _check_running
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running
sys:1: RuntimeWarning: coroutine 'idle' was never awaited
Пробовал запускать функцию run и через asyncio, и через loop. Ничего не помогло. Прошу у вас помощи
Фрагмент кода:
import asyncio
import os
api_id = None
api_hash = None
class Account:
def __init__(self, number: str):
self.client = Client("test_app", api_id=api_id, api_hash=api_hash, phone_number=number)
self.client.run()
async def _send_message(self, group_id: int, message: str):
response = await self.client.send_message(group_id, message)
print(response)
return response
async def start_messaging(self, groups: list, posts: list):
for post in posts:
for group in groups:
await self._send_message(group, post)
await asyncio.sleep(5)
new_account = Account("+123456789")
new_account.start_messaging([-123456789], ["123456789"])
# все значения изменил на другие