代码之家  ›  专栏  ›  技术社区  ›  user1246950

11分钟后java irc bot断开连接

  •  0
  • user1246950  · 技术社区  · 8 年前

    我正在尝试为我的twitch频道创建一个bot,它似乎连接正常,发布读/写功能良好
    问题是这个应用程序似乎每次都会在11分钟后消失
    你知道我需要做什么才能让它永远保持连接吗?

    我没有错误,只是构建成功(总时间:11分0秒) 似乎正在工作)

    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);
            }
        }
    }
    }
    

    欢迎提供任何提示:)
    advs中的thx

    1 回复  |  直到 8 年前
        1
  •  1
  •   Sami Kuhmonen    8 年前
    if (line.toLowerCase( ).startsWith("PING ")) {
    

    想想这能做什么。它将线条更改为 小写字母 然后检查是否以PING开头 大写 .

    使用调试器并设置断点以查看发生了什么和没有发生什么。这样的错误很明显。