await ctx.send('wtf', embed = embed)
asyncio.new_event_loop()
, потом задаёт его как текущий для своего потока через asyncio.set_event_loop(loop)
. Если ботам не требуется взаимодействовать, то это может быть проще. Если требуется... будут проблемы. Два реактора в одной программе - это не хорошо.app.run()
, и вызов executor.start_polling(dp, skip_updates=True)
скорее всего под капотом создают асинхронную функцию (корутину), и запускают её в реакторе. Тогда ты можешь обойтись без потоков, заставив обоих ботов работать на одном реакторе. Нужно будет зарыться в доки, или даже глянуть исходники.When calling this method (app.run()) without any argument it acts as a convenience method that calls start(), idle() and stop() in sequence. It makes running a single client less verbose.
async def pyrobot(): # обрати внимание, теперь функция асинхронная!
print("pyro started")
@app.on_message(filters.chat("some_chat"))
async def print_pyrogram():
print("Pyrogram")
await app.start()
try:
await app.idle()
finally:
await app.end()
asyncio.run(asyncio.gather(pyrobot(), aiobot()))
мне же нужен код ассоциации и зависимости, который явно должен отличаться от агригации и композиции,