[英]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.