2016-08-10 4 views
0

пытаюсь создать бота для моего дергаться канала это, кажется, подключение нормально и размещения чтения/записи в порядке
проблема это приложение, кажется, умирает после того, как 11 монетных когда-либо время
любая идея что мне нужно сделать, чтобы поддерживать связь навсегда?
(далее «// Мы должны реагировать на пинги, чтобы избежать отсоединен.»
я получаю никаких ошибок просто не BUILD УСПЕШНОГО (общее время: 11 минут 0 секунд) , кажется, работает)Java IRC бот разъединение после 11mints

public class Twchatbot { 

/** 
* @param args the command line arguments 
*/ 
    // TODO code application logic here 
    public static void main(String[] args) throws Exception { 
    long cur=System.currentTimeMillis(); 
    int i=0; 
    String str[]={"XD","hi:)","cool"}; 

    // The server to connect to and our details. 
    String server = "irc.chat.twitch.tv"; 
    String nickname = "********"; 
    String password = "*******************"; 

    // The channel which the bot will join. 
    String channel = "#********"; 

    // Connect directly to the IRC server. 
    Socket socket = new Socket(server, 6667); 
    BufferedWriter writer = new BufferedWriter(
      new OutputStreamWriter(socket.getOutputStream())); 
    BufferedReader reader = new BufferedReader(
      new InputStreamReader(socket.getInputStream())); 

    // Log on to the server. 
    writer.write("pass " + password + "\r\n"); 
    writer.write("nick " + nickname + "\r\n"); 

    writer.flush(); 

    // Read lines from the server until it tells us we have connected. 
    String line = null; 
    while ((line = reader.readLine()) != null) { 
     System.out.println(line); 
     if (line.indexOf("004") >= 0) { 
      // We are now logged in. 
      break; 
     } 
     else if (line.indexOf("433") >= 0) { 
      System.out.println("Nickname is already in use."); 
      return; 
     } 
    } 

    // Join the channel. 
    writer.write("JOIN " + channel + "\r\n"); 
    writer.flush(); 

    // Keep reading lines from the server. 

    while ((line = reader.readLine()) != null) { 
     if (line.toLowerCase().startsWith("PING ")) { 
      // We must respond to PINGs to avoid being disconnected. 
      writer.write("PONG " + line.substring(5) + "\r\n"); 
      writer.write("PRIVMSG " + channel + " :I got pinged!\r\n"); 
      writer.flush(); 


      if(System.currentTimeMillis()-cur>600000) 
      { 
       writer.write("PRIVMSG "+ channel +" :"+str[i]+"\r\n"); 
       writer.flush(); 

       i++; 
       if(i>=3) 
        i=0; 
       cur=System.currentTimeMillis(); 
      } 

     } 
     else { 
      // Print the raw line received by the bot. 

      if(System.currentTimeMillis()-cur>600000) 
      { 
       writer.write("PRIVMSG "+ channel +" :"+str[i]+"\r\n"); 
       writer.flush(); 

       i++; 
       if(i>=3) 
        i=0; 
       cur=System.currentTimeMillis(); 
      } 
      if(line.contains("!enter")) 
      { 
       writer.write("PRIVMSG "+ channel +" :"+str[i]+"\r\n"); 
       writer.flush(); 
      } 
      System.out.println(line); 
     } 
    } 
} 
} 

любой советы будут приветствоваться :)
thx in advs
sry для плохой английский.

ответ

1
if (line.toLowerCase().startsWith("PING ")) { 

Подумайте, что это делает. Он меняет строку на в нижнем регистре, а затем проверяет, начинается ли она с PING в в верхнем регистре.

Используйте отладчик и установите контрольные точки, чтобы узнать, что происходит, а что нет. Такие ошибки становятся очевидными.

+0

Я попытался отлаживать, но netbeans did not позвольте мне// попробовал его прямо сейчас (он отправлял пинг в линии выхода, так что думал, что это работает – user1246950

+0

thx alot, что это было :) – user1246950

 Смежные вопросы

  • Нет связанных вопросов^_^