Как сделать, чтобы bot.run() работало вместе с eel.start()

Рейтинг: 0Ответов: 1Опубликовано: 16.03.2023

Есть код:

import eel
import disnake
from disnake.ext import commands

GUILD_ID = ***
CHANNEL_ID = ***
TOKEN = '***'

bot = commands.Bot(command_prefix='$$', help_command=None, intents=disnake.Intents.all(), test_guilds=[GUILD_ID])

@bot.event
async def on_message(message):
    await  message.channel.send('123')
    # await eel.some_func(message.content)

@eel.expose()
async def some_python_func():
    print('from javascript')

@bot.event
async def on_ready():
    print(f'Connected. {bot.user}')

eel.init('.')
bot.run(TOKEN)
eel.start('index.html', size=(1500, 900))

bot.start() блокирует дальнейшее выполнение кода и не позволяет совершить eel.start().

Если указать в eel.start() параметр block=False, бот будет работать, но html не загрузится.

Есть мысли через asyncio, но с ним я очень слабо знаком.

Буду очень благодарен ответу.

Ответы

▲ 0

Я думаю Вам подойдёт loop event.

Попробуйте сделать что-то подобное:

loop = asyncio.get_event_loop()
loop.create_task(client.start("токен"))
loop.create_task(eel.start('index.html', size=(1500, 900)))
loop.run_forever()

Это должно сработать.