java - IRC 自动响应机器人没有响应
问题描述
我正在为我的 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 并登录,但它不响应聊天。
编译时没有错误,运行时也没有错误。
任何人都可以帮忙吗?
解决方案
您正在将小写的 String 与 String进行比较"PING"
:
line.toLowerCase().startsWith("PING ")
这保证返回false。
也许你的意思是toUpperCase()
?
推荐阅读
- express - Express 电子邮件服务器 Gatsby
- apache-spark - to_date 无法在 Spark 3.0 中解析日期
- c++ - 在我定义的类中释放分配的缓冲内存的问题
- vb.net - 尝试在 DataGridView 上添加新行时出现 System.InvalidOperationException
- swift - 致命错误:SwiftUI 中的索引超出范围
- c# - 在某些尺寸上生成动态图像失败
- amazon-web-services - 没有地址的 EKS 入口 - 尝试测试我的 EKS 集群
- javascript - Discord.js 机器人,如何在没有引脚的情况下清除?
- javascript - 如何使用我的 svelte firebase + sendgrid 电子邮件功能修复 500 错误
- python-2.7 - pip install 在命令行中不返回任何内容