Channel will terminate when the last user quit

This commit is contained in:
Profitroll 2023-05-07 16:23:16 +02:00
parent 91eecb4b0b
commit 3fe67e18b0
2 changed files with 36 additions and 15 deletions

View File

@ -9,6 +9,7 @@ from discord import (
utils, utils,
) )
from discord.ext import commands from discord.ext import commands
from discord.abc import GuildChannel
from functions import ( from functions import (
appendLog, appendLog,
@ -32,6 +33,11 @@ class CogChannel(commands.Cog):
def __init__(self, client): def __init__(self, client):
self.client = client self.client = client
@commands.Cog.listener()
async def on_guild_channel_delete(self, channel: GuildChannel):
if isUserVoice(channel):
await removeUserVoice(channel)
@Cog.listener() @Cog.listener()
async def on_voice_state_update( async def on_voice_state_update(
self, member: Member, before: VoiceState, after: VoiceState self, member: Member, before: VoiceState, after: VoiceState
@ -44,14 +50,15 @@ class CogChannel(commands.Cog):
# If user left vc # If user left vc
if before.channel is not None and len(before.channel.members) == 0: if before.channel is not None and len(before.channel.members) == 0:
if isUserVoice(vc_from): if isUserVoice(vc_from):
if isVoiceOfUser(vc_from, member): if not isVoiceOfUser(vc_from, member):
await removeUserVoice(vc_from)
else:
if loadJson("config.json")["enable_nomic"]: if loadJson("config.json")["enable_nomic"]:
await changeNomicPerms("deny", vc_from, member) await changeNomicPerms("deny", vc_from, member)
await removeUserVoice(vc_from)
# If user joined vc # If user joined vc
if after.channel is not None and after.channel.id == guildConfGet(member.guild, "channel"): if after.channel is not None and after.channel.id == guildConfGet(
member.guild, "channel"
):
if isUserVoice(vc_to): if isUserVoice(vc_to):
if loadJson("config.json")["enable_nomic"]: if loadJson("config.json")["enable_nomic"]:
await changeNomicPerms("allow", vc_to, member) await changeNomicPerms("allow", vc_to, member)

View File

@ -254,30 +254,44 @@ async def removeUserVoice(vc: VoiceChannel) -> None:
remove(vc_file) remove(vc_file)
await needed_channel.delete() if needed_channel is None:
if debug:
appendLog(
f"Removed voice channel '{needed_channel}' ({str(needed_channel.id)}) of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild,
)
else:
appendLog( appendLog(
f"Removed voice channel '{needed_channel}' of user with id {str(vc_conf['ownerid'])}", f"Removed voice channel '{needed_channel}' of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild, guild=vc.guild,
) )
else:
await needed_channel.delete()
if loadJson("config.json")["enable_nomic"]:
await nomic_channel.delete()
if debug: if debug:
appendLog( appendLog(
f"Removed nomic channel {nomic_channel} ({str(nomic_channel.id)}) of channel with id {str(needed_channel.id)}", f"Removed voice channel '{needed_channel}' ({str(needed_channel.id)}) of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild, guild=vc.guild,
) )
else: else:
appendLog(
f"Removed voice channel '{needed_channel}' of user with id {str(vc_conf['ownerid'])}",
guild=vc.guild,
)
if loadJson("config.json")["enable_nomic"]:
if nomic_channel is None:
appendLog( appendLog(
f"Removed nomic channel '{nomic_channel}' of channel with id {str(needed_channel.id)}", f"Removed nomic channel '{nomic_channel}' of channel with id {str(needed_channel.id)}",
guild=vc.guild, guild=vc.guild,
) )
else:
await nomic_channel.delete()
if debug:
appendLog(
f"Removed nomic channel '{nomic_channel}' ({str(nomic_channel.id)}) of channel with id {str(needed_channel.id)}",
guild=vc.guild,
)
else:
appendLog(
f"Removed nomic channel '{nomic_channel}' of channel with id {str(needed_channel.id)}",
guild=vc.guild,
)
else: else:
return return