C# IRC Bot上的管理员用户

C# IRC Bot上的管理员用户,c#,irc,C#,Irc,好吧,我不熟悉IRC协议,但为了更好地理解它,我已经阅读了相当多的内容,但我仍然不确定如何设置它,以便我的机器人只能按照我的命令操作,或者从文本文件中读取机器人“管理员”是谁。我想实现这一点,以阻止每个人让他退出和垃圾邮件 如果你需要更具体的信息,请随时询问,我会更新帖子 应要求: public void sendData(string cmd, string param) { if (param == null) { sw

好吧,我不熟悉IRC协议,但为了更好地理解它,我已经阅读了相当多的内容,但我仍然不确定如何设置它,以便我的机器人只能按照我的命令操作,或者从文本文件中读取机器人“管理员”是谁。我想实现这一点,以阻止每个人让他退出和垃圾邮件

如果你需要更具体的信息,请随时询问,我会更新帖子

应要求:

    public void sendData(string cmd, string param)
    {
        if (param == null)
        {
            sw.WriteLine(cmd);
            sw.Flush();
            Console.WriteLine(cmd);
        }
        else
        {
            sw.WriteLine(cmd + " " + param);
            sw.Flush();
            Console.WriteLine(cmd + " " + param);
        }
    }

    public void IRCWork()
    {
        string[] ex;
        string data;
        bool shouldRun = true;
        while (shouldRun)
        {
            data = sr.ReadLine();
            Console.WriteLine(data);
            char[] charSeparator = new char[] { ' ' };
            ex = data.Split(charSeparator, 5);

            if (ex[0] == "PING")
            {
                sendData("PONG", ex[1]);
            }

            if (ex.Length > 4) //is the command received long enough to be a bot command?
            {
                string command = ex[3]; //grab the command sent

                switch (command)
                {
                    case ":!join":
                        sendData("JOIN", ex[4]);
                        //if the command is !join send the "JOIN" command to the server with the parameters set by the user
                        break;
                    case ":!say":
                        sendData("PRIVMSG", ex[2] + " " + ex[4]);
                        //if the command is !say, send a message to the chan (ex[2]) followed by the actual message (ex[4]).
                        break;
                    case ":!quit":
                        sendData("QUIT", ex[4]);
                        //if the command is quit, send the QUIT command to the server with a quit message
                        shouldRun = false;
                        //turn shouldRun to false - the server will stop sending us data so trying to read it will not work and result in an error. This stops the loop from running and we will close off the connections properly
                        break;
                    case ":!part":
                        sendData("PART", ex[4]);
                        break;
                    case ":!query":
                        sendData("QUERY", ex[4] + ex[4]);
                        break;
                    case ":!useradd":
                        sendData("USERADD", ex[4]);
                        break;

                }
            }
        }
    }

只需遵循您的命令:您可以看到如何识别IRC消息的发件人,不是吗?阅读文件中的管理员:试试看,我建议您发布代码中处理收到的消息的部分,以便每个人都能从中开始。我刚刚为您添加了这个。您应该扩展它以跟踪谁(例如,哪个昵称)写了什么,然后您可以轻松地(如上所述)将其与文本文件的内容进行比较。我怀疑您必须调整从
sr
读取的代码,您在
data
中接收到一个IRC命令,然后将其拆分为一个数组
ex
。消息的协议是
:发送方PRIVMSG目标用户或频道:消息
。因此,拆分后的第一部分将是
:sender