2013-08-27 1 views
3

기존의 계정 (QuakeNet)에 로그인 할 수있는 IRC Bot을 만들려고합니다. 그래서 Q bot은 그에게 운영자 등급을 부여 할 수 있습니다. 적절한 별명을 사용하여 서버에 성공적으로 로그인 할 수 있지만 내 봇을 실제로 계정에 로그인하는 방법을 모르겠습니다. 다음은 내가 사용하는 코드입니다.IRC BOT에서 C++로 암호 설정하기

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); 

그리고 제대로 작동하지 않는 것 같습니다. 아무도 내가 무엇을해야 하는지를 알고 있습니까? 답장을 미리 보내 주셔서 감사합니다. 보낼 C++ 프로그램 그래서

/nickserv identify [nickname] password 

당신은 것입니다 :

는 다음과 같은 명령을 지정

답변

1

XChat과 같은 클라이언트를 사용하고 로봇이 자동화하고 원시 로그 창을 보려고하는 단계를 수동으로 수행하는 것이 좋습니다. 이렇게하면 클라이언트가 실행중인 명령과 서버가 기다려야하거나 응답해야하는 모든 것이 표시됩니다.

commands in the QuakeNet documentation을보고있는 경우 서버에 보낸 실제 IRC 명령이 아닌 클라이언트 명령입니다. 예를 들어 /msg user message here은 실제로 PRIVMSG user :message here으로 전송됩니다.

PING/PONG을 처리하고 001 숫자를 기다리는 것과 같이 IRC 서버를 제대로 만족 시키려면 초기 코드에서 제안한 것보다 다소 많은 작업을해야 할 것으로 생각됩니다. 의사 코드의 경우 :

// 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 [email protected] :AUTH %s %s\r\n", username, password) 
// wait for response from Q 
// join channels, etc 
// handle more pings, channel messages, etc 
+0

도움을 주셔서 감사합니다, PUTTY 사용하여 문제를 처리하고 신중하게 인증하는 동안 모든 단계를보고 : AUTH 명령은 서버에 조인보다 퐁 응답 직후에 사용됩니다. – user2658455

1

보통 IRC 서버는 서비스 계정을 식별 할 수 NICKSERV라는이

send(cSock, "NICKSERV IDENTIFY SuperNickofAnAdmin SuperPasswordOfAnAdmin"); 

QBOT 다음을 수행 할 수 있습니다.

/msg [email protected] AUTH username password 

그래서 당신 C++ 프로그램에서 당신은 보내

send(cSock, "MSG [email protected] AUTH SuperNickofAnAdmin SuperPasswordOfAnAdmin"); 

은 IRC의 사용자 운영자 상태를 부여하려면 명령 전송해야합니다 :

MODE #Channel +o username 

+ O 운영자입니다 상태를 표시하며 사용자의 별칭 앞에 '@'가 표시됩니다.

+0

불행하게도 QuakeNet 계정을 식별하는 대신 NICKSERV의 Q 봇을 사용

소스는이 질문에 대한 최고 등급의 답변입니다. – user2658455

+0

@ user2658455 - QBOT AUTH에 대한 내 대답이 업데이트되었습니다. –

+0

그게 내가 생각할 수있는 일이지만, 봇은 여전히 ​​authed를 얻지 못한다 :/ – user2658455

0

텔넷 클라이언트를 사용하여 서버와 직접 대화 할 수 있습니다. 이렇게하려면 모든 behind-the-scenes 명령을 사용해야합니다. 그러면 실행중인 봇에 필요한 입출력에 익숙해 질 수 있습니다. How do i program a simple IRC bot in python?