IRC 机器人无法连接“您尚未注册”

本文关键字:注册 您尚未注册 机器人 连接 IRC | 更新日期: 2023-09-27 18:37:21

有人知道它为什么要这样做吗?我听说这是因为 NICK 需要时间来注册,但我的意思是 10 秒肯定足够了?顺便说一下,我对服务器的 ping 大约 30 毫秒。在收到"您尚未注册"的垃圾邮件之前,我也会收到一个ping。

using System.IO;
using System.Net.Sockets;
using System.Diagnostics;
using System.Threading;
namespace no2
{
    class Program
    {
        static void Main(string[] args)
        {
            TcpClient Client = new TcpClient("myip", myport);
            NetworkStream NwStream = Client.GetStream();
            StreamReader Reader = new StreamReader(NwStream);
            StreamWriter Writer = new StreamWriter(NwStream);
            string Data = "";
            Writer.WriteLine("USER bigkog irc NSA bigkog");
            Writer.Flush();
            Writer.WriteLine("NICK iamabot");
            Writer.Flush();
            Thread.Sleep(10000);
            Writer.WriteLine("JOIN #root");
            while ((Data = Reader.ReadLine()) != null)
            {
                System.Console.WriteLine(Data);
                if (Data.Contains(".SayHi!"))
                {
                    Writer.WriteLine("PRIVMSG #root :Hello, Everyone!");
                    Writer.Flush();
                }
                else
                {
                    Writer.WriteLine("PRIVMSG #root :Wuzzat?");
                    Writer.Flush();
                }
            }
        }
    }
}

IRC 机器人无法连接“您尚未注册”

你不应该需要 Thread.Sleep() 调用 - 事实上这可能是你问题的一部分。

您还需要侦听从服务器发送的 PING 消息,否则您的连接将超时。有时作为连接注册的一部分,服务器可能会向客户端发送 PING(我不记得我在哪个网络上看到过这个,但我以前见过),并期望在完成连接注册之前返回 PONG。

一旦您发送昵称/用户组合,我就会想立即倾听,并适当地响应服务器发送给您的任何内容,无论是 PING 还是 001(欢迎)消息。收到 001 消息后,您的连接即告注册,您可以发送 JOIN 消息。

看看 IRC 规范(RFC1459或RFC2812),但请记住不是每个人都能正确实现它,所以给它一些回旋余地。