public static Task CheckVoiceChannelOnDelete(SocketChannel channel) { if (channel is SocketVoiceChannel voiceChannel) { DiscordServer server = DiscordServer.GetServerFromID(voiceChannel.Guild.Id); VoiceChannelRole vcRole = server.voiceChannelRoles.Find(x => x.voiceChannelID == voiceChannel.Id); server.voiceChannelRoles.Remove(vcRole); SocketRole role = server.Guild.GetRole(vcRole.roleID); if (vcRole.voiceChannelID != 0) { SocketTextChannel textChannelDeletion = server.Guild.GetTextChannel(vcRole.textChannelID); if (textChannelDeletion != null) { textChannelDeletion.DeleteAsync(); } } if (role != null) { role.DeleteAsync(); } server.SaveData(); } if (channel is SocketTextChannel textChannel) { DiscordServer server = DiscordServer.GetServerFromID(textChannel.Guild.Id); VoiceChannelRole vcRole = server.voiceChannelRoles.Find(x => x.textChannelID == textChannel.Id); server.voiceChannelRoles.Remove(vcRole); SocketRole role = server.Guild.GetRole(vcRole.roleID); if (vcRole.voiceChannelID != 0) { SocketVoiceChannel voiceChannelDeletion = server.Guild.GetVoiceChannel(vcRole.voiceChannelID); if (voiceChannelDeletion != null) { voiceChannelDeletion.DeleteAsync(); } } if (role != null) { role.DeleteAsync(); } server.SaveData(); } return(Task.CompletedTask); }
public static Task OnUserJoinedVC(SocketUser user, SocketVoiceState beforeState, SocketVoiceState afterState) { SocketGuildUser guildUser = user as SocketGuildUser; DiscordServer server = DiscordServer.GetServerFromID(guildUser.Guild.Id); if (afterState.VoiceChannel != null) { VoiceChannelRole vcRole = server.voiceChannelRoles.Find(x => x.voiceChannelID == afterState.VoiceChannel.Id); if (vcRole.roleID == 0) { return(Task.CompletedTask); } SocketRole role = server.Guild.GetRole(vcRole.roleID); if (role == null) { server.voiceChannelRoles.Remove(vcRole); server.SaveData(); return(Task.CompletedTask); } guildUser.AddRoleAsync(role); } if (beforeState.VoiceChannel != null) { VoiceChannelRole vcRole = server.voiceChannelRoles.Find(x => x.voiceChannelID == beforeState.VoiceChannel.Id); if (vcRole.roleID == 0) { return(Task.CompletedTask); } SocketRole role = server.Guild.GetRole(vcRole.roleID); if (role == null) { server.voiceChannelRoles.Remove(vcRole); server.SaveData(); return(Task.CompletedTask); } guildUser.RemoveRoleAsync(role); } return(Task.CompletedTask); }