Я создаю бота 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
Почему метод python vkbottle run_polling() не работает ⇐ Python
Программы на Python
-
Anonymous
1771255336
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.
Подробнее здесь: [url]https://stackoverflow.com/questions/79890308/why-does-python-vkbottle-run-polling-method-doesnt-work[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия