Java Discord Api移动用户

时间:2017-09-16 17:33:39

标签: java discord

我忙于使用Java Discord Api的不和谐机器人。

如果它不起作用或它是一个错误,我会陷入困境。我想将人们转移到语音频道。但在某些地方,代码不再进一步,并且不会从编译器/ ide返回异常或中断事件。

@Override
public boolean called(String[] args, MessageReceivedEvent event)
{
    if(args.length < 2 || event.getMessage().getMentionedUsers().size() < 1 || Permissions.GetPermissions(event) == 0)
    {
        System.out.print("you dont have the permissions");
        return false;
    }

    boolean channelexists = false;
    boolean userexists = false;

    for(VoiceChannel channel : event.getGuild().getVoiceChannels())
    {
        if(channel.getName().equalsIgnoreCase(args[1]))
        {
            System.out.print("found ---> " + channel.getName() + "\n");
            channelexists = true;
            break;
        }
    }

    for(VoiceChannel channel : event.getGuild().getVoiceChannels())
    {
        if(channel.getMembers().contains(event.getMessage().getMentionedUsers().get(0)))
        {
            System.out.print("found ---> " + channel.getMembers().contains(event.getMessage().getMentionedUsers().get(0).getName()) + "\n");
            userexists = true;
            break;
        }
    }

    return channelexists && userexists;
}

@Override
public void action(String[] args, MessageReceivedEvent event) 
{
    GuildController controller = new GuildController(event.getGuild());
    VoiceChannel voicechannel = null;

    for(VoiceChannel channel : event.getGuild().getVoiceChannels())
    {
        if(channel.getName().equalsIgnoreCase(args[1]))
        {
            voicechannel = channel;
            break;
        }
    }

    try
    {
        controller.moveVoiceMember((Member) event.getMessage().getMentionedUsers().get(0), voicechannel);
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }
}

包含打印行的行似乎没有触发。

System.out.print("found ---> " + channel.getMembers().contains(event.getMessage().getMentionedUsers().get(0).getName()) + "\n");

但是当我像这样调试时

System.out.print(channel.getMembers().contains(event.getMessage().getMentionedUsers().get(0)));

控制台写错误。甚至当我进入其中一个频道时。

所以,如果它是一个bug或者我只是愚蠢的话,我有点烦心。

感谢我的帮助和问候!

1 个答案:

答案 0 :(得分:0)

System.out.print(channel.getMembers().contains(event.getMessage().getMentionedUsers().get(0)));
  

控制台写错误。

相同的值用作if控件中的条件,并且由于if条件的计算结果为falseif内的块显而易见}(在您的查询中打印行)将不会被执行。因此,包含打印行的行似乎不会触发。

查看If - Nuts and Bolts