2017-09-16 14 views
2

Java Discord APIを使用して不具合ボットを実行しています。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))); 

のようにデバッグするときにコンソールが偽の書き込み。いずれかのチャンネルにいても

そのようなバグやイムばかげば私はちょっと気になります。

私を助けてくれた人のために!

答えて

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

コンソールはfalseを書き込みます。

同じ値があなたのifコントロール内の条件として使用され、if条件がfalseと評価されているので、それは(あなたのクエリ内の印刷ライン)if内のブロックが実行されないことは明らかです。したがって、印刷行を含む行はトリガしていないようです。

If - Nuts and Bolts

関連する問題