首页 > 解决方案 > Discord bot 创建和删除临时频道

问题描述

我想创建在用户连接到特定语音频道时创建语音频道的可能性,如果所有者离开,但频道中有另一个用户,我们不删除频道,但如果频道为空,则删除它. 我有以下代码:

private async Task OnUserVoiceStateUpdated(SocketUser socketUser,
    SocketVoiceState oldSocketVoiceState, 
    SocketVoiceState newSocketVoiceState)
{
    var createTempChannelId = 778596195836100639ul;
    if (socketUser is SocketGuildUser socketGuildUser)
    {
        var server = socketGuildUser.Guild;

        var categoryId = server.CategoryChannels.FirstOrDefault(category => category.Name.Equals("Голосовые каналы"))?.Id;

        bool userWannaCreateTempChannel = socketGuildUser.VoiceState?.VoiceChannel.Id == createTempChannelId;
        if (userWannaCreateTempChannel)
        {
            var voiceChannel = await server.CreateVoiceChannelAsync(socketGuildUser.Username, prop => prop.CategoryId = categoryId);
            _voiceChannels.TryAdd(socketGuildUser.Username, voiceChannel);
            await GetUserVoiceChannelPermissions(voiceChannel, socketGuildUser);
            await socketGuildUser.ModifyAsync(x =>
            {
                x.Channel = Optional.Create(voiceChannel as IVoiceChannel);
            });
        }

        var usersVoiceChannel = (socketGuildUser as IVoiceState).VoiceChannel;
        
        //TODO: fix delete channel when all users leave the channel
        if (usersVoiceChannel == null && socketGuildUser.VoiceChannel.Users.Any())
        {
            await oldSocketVoiceState.VoiceChannel.DeleteAsync();
        }
    }
}

但问题是当连接了 2 个用户并且其中 1 个离开频道正在删除时,如何解决这个问题?

标签: c#.netbotsdiscord.net

解决方案


推荐阅读