간단한 스크립트를 만들어보자

2008/09/18 15:20
IRC에서 XX님~ 하고 부르면 잠시 기다리라는둥 별 희한한 메세지가 자동으로 튀어나오는 것을 본적이 있을 것이다.

이것을 자동반응, 줄여서 자반 이라고 부른다.

물론 필자도 자반을 만들어 사용하고 있다.

하지만 그전에, 스크립트가 어떤 방식으로 돌아가는가에 대해서 먼저 설명을 하려한다.


봇의 기본은 말하는 모든말을 검사한다는것에 있다. 이 명령어는 대부분 이리 쓰인다.

on *:text:*:*:


하나씩 설명해보자.

ON *
ON * 명령어는 레벨을 의미한다.
해당채널의 레벨있는 사람들을 구별해서 스크립을 짤 수 있다는것이다.
가령, ON 400 이라고 하면 400레벨 이상에만 반응하는 스크립트가 되는 것이다.

*는 모든것을 의미한다는 뜻이다.

즉, 위 스크립트는 모든 사람들의 말을 검사하겠다. - 정도로 해석 하면 되겠다.


다음은 액션이다.

text

ON 뒤에 오는것은 액션인데, 이것은 사용자가 어떤 반응을 했느냐에 따른다.
위 TEXT의 경우 일반 대화를 검색한다 정도로 생각하면 되겠다.

액션 명령어는 제법 많은 편인데 일일이 설명하기 어렵다.


그다음은 반응할 말과, 채널이다

:*:*:

이부분에는 반응할 말과 작동할 채널을 넣어주면 된다.
보통 반응할 말은 *처리를 하고, if로 따로 처리를 한다.

뒤쪽 *에 #채널 을 넣어주면 #채널에서만 작동하는 스크립트가 되는 것이다.

EX) :help:#채널:

즉 예시로든 부분은, 입실하고 있는 모든 사용자, 모든 채널에 대해 반응하는 스크립트라는 것이다.

자주쓰이는 ON 명령어


크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

IRC 스크립트의 기본

2008/09/17 22:00
IRC를 하는 사람이라면 흔히 '봇'을 봤을 것이다. 그리고 있으면 편리하겠다는 생각도 했을 것이다.

봇은 '스크립트'로 짜여진 것으로, 개중엔 인클봇처럼 파이썬으로 제작된 봇도 있다.

심심하기도 하고, 나도 배우는 입장으로서, 하나하나 기록해나갈까 한다.

간단히 IRC 스크립트의 기본부터 살펴보자. 물론 나도 초짜중의 초짜인데 이런글을 작성하는것이 조금 우습긴하다.

우선 말을 하는 방식이다.

크게 나누어,


echo
say
msg



1. echo


/echo [color] [-cdeghiNtsaqlbfnmr] [color name] [#channel|[=]nick] <text>

Prints text in the specified window using the specified color (0 to 15).

 

/echo 3 #mIRC Testing

 

would print "Testing" in the color green in channel window #mIRC, assuming it's already open.

 

If a channel/nickname isn't specified, the -s switch echoes to the status window, the -d switch echoes to the single message window, and the -a switch echoes to the currently active window.

 

The -e switch encloses the line in line separators.

The -iN switch indents the wrapped line by N characters.

The -h switch forces lines to hard-wrap so resizing the window doesn't change the line.

The -t switch prefixes the line with a timestamp if global time stamping is on or timestamping is on for that window.

The -q switch makes it not display the text if called from an alias using the . prefix.

The -l switch makes it apply the highlight settings to the line that's displayed.

The -bf switches make it apply the beep/flash settings in the window it is echoing to.

The -n switch prevents the echo from highlighting the window switchbar icon.

The -m switch indicates that the line should be treated as a user message, not an event.

The -g switch prevents the line from being logged to the log file.

The -r switch applies the strip settings in the messages dialog.

The -c switch uses the specified color name from the colors dialog.


입력 : /echo 3 #채널 아아
결과 :


echo 는 말그대로 에코, 메아리이다. 즉 echo 로 말하는 것은 자기 자신밖에 볼 수 없다.
서버에 관계없이 말할 수 있으며, 플러드를 주의하지 않아도 된다. 자기자신만의 스크립트로 사용할때  유용할 것이다.

요약하자면, 개인 스크립트를 만들때 좋다. 사실 그이외에 쓰이는건 본적이 없다 ( ..)

2. say


/say <message>

This sends a message to the current channel or query window. So "/say Hello there" would be the same as just typing "Hello there".


입력 : /say #채널 야호!

결과 : #채널 야호!


아주 간단하게 말할 수 있는 스크립이다. 하지만 단점이 있다.
내가 보고 있는 채널에서만 말 할 수 있다.
즉, 봇용으로는 그닥 적합치 않은 명령어이다.

3. msg


/MSG nickname message

Sends a private message to nickname without opening a query window.


입력 : /msg 아이디 야호

결과 : (귓속말) 야호


가장 많이 사용될거라고 생각하는 명령어이다. help 에는 저리 나왔으나, 굳이 저리 쓰지 않고 아래방법으로 자주 쓰인다.

입력 : /msg #채널 야호
결과 : (#채널에서) 야호


즉, 내가 어디를 보고 있던간에 어디채널, 어떤 유저에게 귓속말, 말을 할 수 있다. 물론 접속된 채널이어야하는 것은 당연한것이다.

채널에 말을 하고 싶다면, 굳이 위 명령어를 쓰지 않아도 말을 할 수 있기도 하다.

명령어는 다음과 같다.


me
ame
amsg
notice



1. me

자기말을 강조하고 싶을때 나타내는 말이다.

/ME message

Tells the current channel or query about what you are doing.


입력 : /me 야호!

결과 : * 닉네임 야호!



보라색으로 표시된다.(IRC 설정에 따라 물론 틀리다.)
남들과 달리 색글로 나오는 것이라 눈에 확 튀긴하나, 과도한 사용은 좋진 않다.

2. ame & amsg


(All)이라는 개념이다.

/amsg <message>

This and the /ame command send the specified message or action to all open channel windows.


전제 : 입실하고 있는 채널 - #채널1 , #채널2 , #채널3
입력 : /ame 야호!
결과 : (#채널1,2,3) 야호!
결과2 : (#채널 1,2,3) 야호!


한마디로 다수채널에 메세지를 뿌릴 수 있다. 남용하면 좋진 않으나, 다수의 사람들에게 의견같은것을 물을 때는 꽤나 쓸만할 수 있다.



3. notice


공지정도의 개념이라고 보면될까? 이것역시 눈에 확 튄다.
그러나 약간 다른 방식이다.

/NOTICE nickname message

Sends a private message to nickname without opening a query window for either you or them.


입력 : /notice 닉네임 ***님, 안녕하세요?

결과 :  (***에게만)  -나의 닉네임-  안녕하세요?


입력2 : /notice #채널 안녕하세요?

결과2 :  -나의닉네임:#채널- 안녕하세요?


공지 비슷한것이라고 생각하면 편할듯 하다.


일단은 여기까지..

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기

사용자 골라 킥밴하기

2008/09/17 12:20
on *:join:#채널: {

  if (($nick != $me)) {
    if ((inklbot isin $address)) {
      ; /ban $nick
      /msg ^^ 밴 $chan $nick 1 499 인클봇
      /kick $chan $nick 인클봇은 채널에 입실시킬수 없습니다.
    }

  }
}

─────────────────────────────이상 스크립트 전문


간단한 예시. 인클봇을 킥밴하는 스크립이다.

on *:join:#채널: {

우선 JOIN으로 들어오는 모든 유저를 검사한다.

  if (($nick != $me)) {
}

들어온 $nick을 검사 한다. $me(나)가 아닐경우에 대해 조건을 지정한다.

    if ((inklbot isin $address)) {

들어온 유저에 한해 주소를 검사한다($address)
isin(포함)으로 해당 주소에 inklbot 이 있나 검사를 한다.

있을경우 다음 명령어를 실행한다.
      ; /ban $nick
     /msg ^^ 밴 $chan $nick 1 499 인클봇
     /kick $chan $nick 인클봇은 채널에 입실시킬수 없습니다.

매우 간단한 스크립트라서 조금만 건드려도 다른 예시로 사용 할 수 있을 것이다.
크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기