2014-07-04 3 views
0

나는이 모든 것을 짧고 단순하게 유지하고 싶습니다. 필자는 pIRC Java API를 사용하여 상대적으로 기본적인 IRC 봇을 만드는 것에 대해 배우기 위해 개인 프로젝트를 진행 해왔다.채널 검색에 관한 IRC 봇 문제

상황이 비교적 잘 보이지만 현재 채널 및 현재 채널 사용자를 얻는 데 문제가 있습니다.

만 정말 아래 그림과 같이 내 프레임의 왼쪽에있는 현재의 모든 사용자를 표시 할 수 있도록하고 싶습니다하지만 지금은 인스턴스 당 하나의 채널을 지원합니다 봇 :

enter image description here

하늘색은 사용자를 표시하고 어두운 파란색은 채널 메시지를 표시 할 위치입니다.

PIRC에서 listChannels() 메서드를 먼저 호출해야합니다. 그러면 listChannels() 메서드를 먼저 호출해야합니다. 그러면 모든 서버가 호출 된 후 onChannelInfo 반환 값 (String channel, int userCount, String topic)을 반환합니다.

문제는 채널 이름으로 채널을 필터링하려고하므로 현재 onChannelInfo를 오버라이드하는 것만으로는 충분하지 않습니다.

이전에 pIRCBot을 사용하고있는 사람이 무엇이 진행되고 있는지 알고 있다면 도움을 요청하십시오. 나는이 문제에 대해 며칠 동안 노력해 왔으며 무수한 시간을 거쳐 돌아가고 네 번째로 돌아갔다. 아무것도 작동하지 않는 것처럼 보였다. 결코 되돌아 와서 내 JTextArea에 추가 된 적이 없었다 ..

TL; 나는 표시하고 싶다. 왼쪽의 현재 채널에있는 사용자와 오른쪽에있는 메시지는 있지만 채널 사용자 및 정보 검색과 관련하여 많은 문제가 있습니다.

미리 감사드립니다. http://www.jibble.org/javadocs/pircbot/

+0

http://code.google.com/p/pircbotx/ - pircbot의 일종의 포크를 볼 수도 있습니다. 제 의견으로는 코드 품질이 원본 pircbot 코드보다 낫습니다. – mschenk74

+0

매우 흥미로운 게시물 mschenk, pircbotx에 대해 들어 보지 않았습니다. 이것은 즉시 내 관심을 끌었다. http://prntscr.com/3zkzac 게시 해 주셔서 감사합니다. – Juxhin

+0

전 며칠 전 irc 관련 질문을 여기에서 찾아 보았습니다 만, pircbotx의 저자는 원래 pircbot에 대한 동일한 생각을 갖고있는 것 같습니다. 나 같은 코드. – mschenk74

답변

0

글쎄 그것은 누군가가 연결되어 있다면이 문제를 해결 할 수있었습니다 것입니다 -

는 또한 여기에서보고 싶은 사람을위한 API입니다.

처음에는 Pircbot.listChannels()를 호출 할 필요가 없었습니다.

listChannels()은 각 서버가 수신 된 후 onChannelInfo (String channel, int userCount, String topic)를 자동으로 호출합니다.

그러나 필요한 것은 getChannels() 및 getUsers()를 반복하고 해당 사용자를 반복하며 user.getNick()을 가져 와서 목록에 String을 저장 한 다음 목록을 반복하여 사용자를 추가하는 것입니다. 여기

내가 그것을 사용하는 방법입니다 :

public void appendUsersConnectedToChannel(){ 
    List<String> users = new ArrayList<>(); 
    for(User i : Main.bot.getUsers(Main.bot.getChannel())){ 
     users.add(i.getNick()); 
    } 
    for(String i : users){ 
     append(i + "\n"); 
    } 
} 

문제는 분명, "왜 당신은 그냥 직접) (i.getNick에서 추가하지 않았다 일어난다 그리고 내 대답은 될 것이다, . 내가 그렇게하려고 할 때마다 모르겠지만, 그것이 작동하지 않으며 아무런 설명을하지 않을 것

다음

은 (이론적으로) 작성의보다 효율적인 방법입니다. 다시 한번

public void appendUsersConnectedToChannel(){ 
    for(User i : Main.bot.getUsers(Main.bot.getChannel())){ 
     append(i.getNick()); 
    } 
} 

, 이 PircBot의 API를 사용하고 있습니다.이 API는 작업하기가 상당히 재미 있었고 누구나 시도해 볼 것을 권장합니다. 완벽하지는 않지만 잘 작동합니다!