Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }