2013-04-28 1 views
6

킥을 위해 irc에 연결하는 로봇을 만들고 있었는데 다른 것들에 반응하도록 만들었지 만 CTCP ACTION 명령으로 응답하고 싶습니다. 역할 재생 또는 동작 표시에 사용되는 것으로 일반적으로 사용자에게 알려져 있습니다.CTCP 원시 프로토콜 액션 명령과 함께 C#

에 관한이 위대한 웹 페이지에 따르면 http://www.irchelp.org/irchelp/rfc/ctcpspec.html?

형식은 바닥에 \ 001ACTION barfs입니다. \

001 그래서 나는 물론 내 콘솔에서이 결과를 인쇄

writer.WriteLine("PRIVMSG " + CHANNEL + " \001ACTION " + message + "\001"); 

응답 내 봇을 설정, 모두가 이다와 함께 정말이 말해 가정 있는지 모르고

, 난 이스케이프 문자가 후 \ 0 완전히 무시하고 다른 01 초 라인을 위반한다고 가정 "어떤 텍스트를 보낼 수 없습니다", 그래서 응답 보가있다. 콘솔에서 무엇을 읽었는지, 나는 무엇을 읽고 춤추고 콘솔에서 읽을 수 있습니까?

PRIVMSG 채널 : (홀수 기호) ACTION 메시지 (홀수 기호) 홀수 기호가 무엇인지 모르겠지만 ..... 그들은 웃는 얼굴처럼 보입니다. ..... 몇 사람과 이야기 한 후에 형식이 맞지만 \ 001이 다른 언어에 대해 다를 수 있음을 알고 있습니다.

그래서 나는 \ 001이 무엇을 의미하는지 살펴 봅니다. C# 및 i fin \ x01 및 \ 0011에 대한 \ 0011 그리고 \ 0011은 아무 것도하지 않고 \ x01 또한 동일한 응답을 반환합니다 .... "보낼 텍스트 없음"

"PRIVMSG"+ 채널 + "\ x01ACTION "+ message +"\ x01 " 내 콘솔에, 그리고 \ x01은 내가/춤을 추고 내 봇이 콘솔로 읽는 내용을 출력 할 때 보여주는 것과 똑같은 웃는 얼굴 문자로 바뀝니다.

이 이 내 코드는 다음이 올바른지, 단순히 작가의 객체가 null가 아닌

if (type == MessageType.ActionMessage) 
      { 
       writer.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01"); 
       Console.WriteLine("PRIVMSG " + CHANNEL + " \x01ACTION " + message + "\x01"); 
       writer.Flush(); 
      } 

, 그리고 내 콘솔에 쓰는 것은 그래서 난

궁극적 인 질문은 어떻게 볼 수 있습니다

및 C# 클라이언트에서 클라이언트 프로토콜을 통해 작업을 표시하는 올바른 방법이 아닌 경우 CTCP

(210)

답변

11

마침내 알아 냈습니다. \ x01은 \ 001에 적절한 이스케이프 문자이지만 \ x01은 16 진수이며 이스케이프 문자는 2 바이트이므로 ..... \ x01AC는 유효한 이스케이프 문자입니다. 나는 그것을 \ 0001로 만들거나 이스케이프 문자를 "\ x01"+ "ACTION action struff \ x01"컴파일러 또는 w/e가 처리하는 방식으로 A와 C를 잘못 입력하지 않아야한다. 이스케이프 문자의 일부

의 C 이스케이프 문자는 1 바이트이므로 \ 001 또는 \ x01은 A와 C가 그 일부가되지 않도록합니다.

1

다음은 PRIVMSG 명령에 대한 구문입니다

PRIVMSG target :Here is your message

당신은 아마 단지 No text to send 오류를 설명 할 메시지의 시작 부분에 대한 구분이다 :를 잊어 버렸습니다.

+0

답변에 대한 내 검색 결과를 게시했습니다. 응답 해 주셔서 감사합니다. –