Я использую disnake.py и asyncio для реализации моей идеи. Её суть в том, что-бы запустить некий событийный цикл, который будет ожидать, что в любой момент мы захотим подключить к нашему коду нового Discord бота (количество заранее неизвестно). В процессе реализации я столкнулся с проблемой: у меня не получаеться подключить нового бота в асинхронном режиме работы.
import asyncio
import disnake
class BotHandler:
def __init__(self, token: str):
self.token = token
intents = disnake.Intents.all()
self.bot = disnake.Client(intents=intents)
@self.bot.event
async def on_ready():
print(f"'{self.bot.user.name}' is online!")
async def start(self):
await self.bot.start(self.token)
async def start_bots():
bot1 = BotHandler(token1)
bot2 = BotHandler(token2)
tasks = [bot1.start(), bot2.start()]
await asyncio.gather(*tasks)
if __name__ == '__main__':
asyncio.run(start_bots())
Код, написанный мной выше, работает, но не так, как мне хотелось бы. Боты действительно запускаются, они работают. Но, при таком подходе я не имею возможности подключить ещё одного бота.