[英]Setting password in IRC BOT written in C++
我正在尝试制作一个IRC Bot,它将登录现有帐户(在QuakeNet上),因此Q bot可以授予他操作员等级。 我可以使用正确的缺口成功登录到服务器,但我不知道如何让我的机器人实际登录到帐户。 这是我使用的代码:
send(cSock, "PASS SuperPasswordOfAnAdmin\r\n", strlen("PASS SuperPasswordOfAnAdmin\r\n"), NULL);
send(cSock, "USER custom 0 0 SuperUsernameOfAnAdmin\r\n", strlen("USER custom 0 0 SuperUsernameOfAnAdmin\r\n"), NULL);
send(cSock, "NICK SuperNickOfAnAdmin\r\n", strlen("NICK SuperNickOfAnAdmin\r\n"), NULL);
它似乎没有正常工作。 有人知道我该怎么办? 提前感谢您的回复。
通常,IRC服务器有一项名为NICKSERV
的服务,可让您识别您的帐户:
您指定以下命令:
/nickserv identify [nickname] password
因此,在您的C++
程序中,您必须发送:
send(cSock, "NICKSERV IDENTIFY SuperNickofAnAdmin SuperPasswordOfAnAdmin");
对于QBOT
您可以:
/msg Q@CServe.quakenet.org AUTH username password
所以在您的C++
程序中,您发送:
send(cSock, "MSG Q@CServe.quakenet.org AUTH SuperNickofAnAdmin SuperPasswordOfAnAdmin");
要在IRC上授予用户操作员状态,您必须发送命令:
MODE #Channel +o username
+ o是操作员状态,将在用户别名之前显示“@”。
我建议使用像XChat这样的客户端并手动执行你试图使机器人自动化并观察原始日志窗口的步骤。 这将显示客户端正在执行的命令,以及服务器发送的任何您需要等待或响应的命令。
请注意,当您查看QuakeNet文档中的命令时 ,这些命令是客户端命令,而不是发送到服务器的实际IRC命令。 例如, /msg user message here
实际上是通过网络发送的,例如PRIVMSG user :message here
。
我怀疑为了正确满足IRC服务器,你必须做的比你的初始代码所做的更多,比如处理PING / PONG并等待001数字。 在伪代码中:
// connect
conn := Connect("tcp", "your.irc.server:6667")
// login
Fprintf(conn, "PASS %s\r\n", server_password)
Fprintf(conn, "USER %s . . :%s\r\n", username, realname)
Fprintf(conn, "NICK %s\r\n", nick)
forever {
line := ReadLine(conn)
command, args := ParseIRCLine(line)
// welcome message, we're in!
if command == "001" {
break
}
// PING, send PONG
if command == "PING" {
Fprintf(conn, "PONG :%s\r\n", Join(args, " "))
}
}
Fprintf("PRIVMSG Q@CServe.quakenet.org :AUTH %s %s\r\n", username, password)
// wait for response from Q
// join channels, etc
// handle more pings, channel messages, etc
您可以使用telnet客户端直接与服务器通话。 这将要求您使用所有幕后命令,这可能有助于您熟悉正在运行的机器人所需的I / O.
Source是这个问题上评价最高的答案: 我如何在python中编写一个简单的IRC机器人?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.