Почему метод python vkbottle run_polling() не работаетPython

Программы на Python
Ответить
Anonymous
 Почему метод python vkbottle run_polling() не работает

Сообщение Anonymous »

Я создаю бота vk с помощью vkbottle.
1 бот обрабатывает несколько сообществ, поэтому я использую асинхронный метод run_polling(). Если я использую метод run_forever(), бот обрабатывает только 1 сообщество за раз
import asyncio
from vkbottle.bot import Bot
from database.db import init_db, get_pool

bots = []

async def start_bots():
await init_db()
pool = await get_pool()

async with pool.acquire() as conn:
communities = await conn.fetch("SELECT * FROM community")

for community in communities:
bot = Bot(token=community["token"])
register_handlers(bot)
bots.append(bot)

await asyncio.gather(*(bot.run_polling() for bot in bots))

def register_handlers(bot: Bot):
@bot.on.message(text=["/start"])
async def start_handler(message):
await message.answer("hello")

запустите его с помощью этого "main.py"
import asyncio
from bot.runner import start_bots

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

но у меня следующая ошибка
INFO | 2026-02-16 18:16:43 | vkbottle.framework.base:polling:20 > Starting BotPolling for
DEBUG | 2026-02-16 18:16:43 | vkbottle.polling.bot_polling:get_server:50 > Getting polling server...
DEBUG | 2026-02-16 18:16:43 | vkbottle.api.api:validate_request:120 > API request was validated
Traceback (most recent call last):
File "/home/doio/Projects/vkbot/.venv/lib/python3.12/site-packages/vkbottle/tools/loop_wrapper.py", line 86, in run
tasks_results, _ = self.loop.run_until_complete(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/base_events.py", line 667, in run_until_complete
self._check_running()
File "/usr/lib/python3.12/asyncio/base_events.py", line 626, in _check_running
raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/home/doio/Projects/vkbot/main.py", line 5, in
asyncio.run(start_bots())
File "/usr/lib/python3.12/asyncio/runners.py", line 195, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/home/doio/Projects/vkbot/bot/runner.py", line 19, in start_bots
await asyncio.gather(*(bot.run_polling() for bot in bots))
File "/home/doio/Projects/vkbot/.venv/lib/python3.12/site-packages/vkbottle/framework/base.py", line 29, in run_polling
self.loop_wrapper.run()
File "/home/doio/Projects/vkbot/.venv/lib/python3.12/site-packages/vkbottle/tools/loop_wrapper.py", line 106, in run
self.loop.close()
File "/usr/lib/python3.12/asyncio/unix_events.py", line 68, in close
super().close()
File "/usr/lib/python3.12/asyncio/selector_events.py", line 101, in close
raise RuntimeError("Cannot close a running event loop")
RuntimeError: Cannot close a running event loop
sys:1: RuntimeWarning: coroutine 'wait' was never awaited

что мне с этим делать? помогите мне пожалуйста. Пробую python3.12, не помогло. И я пробую vkbottles 2.7.12, но у меня такая ошибка
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
vkbottle-types 5.199.99.12 requires vkbottle=4.6.0, but you have vkbottle 2.7.12 which is incompatible.


Подробнее здесь: https://stackoverflow.com/questions/798 ... oesnt-work
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»