Почему бот discord py работает как 1 на разных серверах
У меня есть discord py бот. Можно ли как-то сделать так, чтобы его можно было добавить на 2 разных сервера и он работал асинхронно? (Сейчас он при команде с первого сервера начинает играть музыку в другом) Вот часть кода:
class MyBot(commands.Cog):
def __init__(self, bot: commands.Bot):
self.bot = bot
self.connect = None
self.voice_channel = None
@commands.command()
async def join(self, ctx):
self.voice_channel = discord.utils.get(ctx.guild.voice_channels, name=ctx.message.author.voice.channel.name)
if not self.connect:
self.connect = await self.voice_channel.connect()
@commands.command()
async def leave(self, ctx):
if self.connect:
await self.connect.disconnect()
del self.connect
Ответы (2 шт):
Автор решения: bluff.exe
→ Ссылка
Тебе надо делать бд для всех серверов. Изучи питон и базы данных. Python, введение в БД
Автор решения: Universall
→ Ссылка
Спустя некоторое время я догадался до такой структуры:
При инициализации бота я добавляю все его сервера в словарь {сервер: объект бота, который будет обрабатывать команду}. Получилось как-то так:
self.guilds: Dict[discord.Guild, GuildThread.GuildThread] = {}
for guild in self.bot.guilds:
self.guilds[guild] = GuildThread.GuildThread(self.bot, guild)
async def join(self, ctx: commands.Context) -> None:
await self.guilds[ctx.guild].join(ctx)
Не знаю правильно ли я сделал, но этот способ выглядит очень логично и удобно.