【问题标题】:IRC auto respond bot not respondingIRC 自动响应机器人没有响应
【发布时间】:2023-03-07 09:26:01
【问题描述】:

我正在为我的 IRC 编写一个 Java 机器人。 我让它加入、自我验证并在机器人窗口中显示消息,以便它可以看到聊天。但它不会像我想要的那样响应。


import java.io.*;

import java.net.*;



public class TwmlBot {



    public static void main(String[] args) throws Exception {


        String server = "example.com";

        String nick = "TWML_Bot";

        String login = "TWML_Bot";

        String passwd = "examplepassword";

        String channel = "#welcome";


        Socket socket = new Socket(server, 6667);

        BufferedWriter writer = new BufferedWriter(

                new OutputStreamWriter(socket.getOutputStream( )));

        BufferedReader reader = new BufferedReader(

                new InputStreamReader(socket.getInputStream( )));


        writer.write("NICK " + nick + "\r\n");

        writer.write("USER " + login + " 8 * : Java IRC Bot\r\n");

        writer.flush( );


        String line = null;

        while ((line = reader.readLine( )) != null) {

            if (line.indexOf("004") >= 0) {.

                break;

            }

            else if (line.indexOf("433") >= 0) {

                System.out.println("Nickname is already in use.");

                return;

            }

        }


        writer.write("JOIN " + channel + "\r\n");

        writer.write("identify " + passwd + "\r\n");

        writer.flush( );


        while ((line = reader.readLine( )) != null) {

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

                writer.write("PONG " + line.substring(5) + "\r\n");

                System.out.println(line);

                writer.flush( );

            }

            else {

                System.out.println(line);

            }

        }

    }



}

基本上,如果用户在聊天中发出 ping 消息,我希望机器人用 pong 响应。

我对 java 还很陌生,这只是一个尝试学习 java 的简单机器人。就像我说的,我让它加入了我的 IRC 并登录,但它不响应聊天。

编译无错误,运行无错误。

谁能帮忙?

【问题讨论】:

  • 你需要检查是否有人发送了PRIVMSG,然后回复。
  • 我想不通,我用以下方法尝试过,但没有用... writer.write("PRIVMSG" + channel +" hello world \r\n"); -- 好像不行
  • @Twml 请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 了解如何提高问题的质量。然后edit你的问题包括你的完整源代码作为minimal reproducible example,其他人可以编译和测试。
  • @Progman 添加了我的完整源代码
  • 您确定该行将以 PING 开头吗?如果在此之前有多达一个字符,您的测试也会失败。

标签: java irc


【解决方案1】:

您将 小写 字符串与字符串 "PING" 进行比较:

line.toLowerCase().startsWith("PING ")

这保证返回 false。

也许你的意思是toUpperCase()

【讨论】:

  • 更改 toUpperCase() 也无济于事,机器人仍然没有响应。我想做的是,如果用户消息以 ping PiNg 或 PING 开头,则机器人以 pong 响应
猜你喜欢
  • 1970-01-01
  • 2021-05-25
  • 2021-08-18
  • 2020-08-09
  • 2021-11-03
  • 2021-01-06
  • 2021-05-15
  • 2016-10-04
  • 1970-01-01
相关资源
最近更新 更多