Почему происходит удаление канала, даже если в нем уже есть человек?
Почему этот код удаляет канал, даже если в нем есть человек?
Мне нужно написать код, который будет создавать новый ГК, с названием: (имя пользователя)'s channel и перекидывал пользователя в новосозданный канал. Также, как только кол-во людей в канале становилось равным 0, то он самоуничтожался. Но почему-то бот удаляет канал, практически сразу, после его создания.
Пробовал сделать задержку через time.sleep(5), потому что подумал, что бот считает кол-во людей только тогда, когда, у пользователя внизу написано: "голосовая связь подключена".
@bot.event
async def on_voice_state_update(member, before, after):
target_channel_id = 1234567890
if before.channel is None and after.channel is not None and after.channel.id == target_channel_id:
overwrites = {
member: discord.PermissionOverwrite(manage_channels=True),
member.guild.default_role: discord.PermissionOverwrite(connect=False)
}
channel = await after.channel.category.create_voice_channel(name=f"{member.name}'s Channel", overwrites=overwrites)
await member.move_to(channel)
elif before.channel is not None and before.channel.id == target_channel_id and len(before.channel.members) == 0:
for channel in before.channel.category.voice_channels:
if channel.name == f"{member.name}'s Channel":
await channel.delete()
break
Ответы (1 шт):
Есть несколько вариантов. Можно, конечно, сделать и задержку через
await asyncio.sleep(5)
Ну или же проще поставить флаг каналу, и его менять, если в него зайдут люди. И при удалении делать проверку, что в канал хоть раз заходили люди( Наш флаг)
