# Bot

봇 전원 ON/OFF, 메시지 수신 등 봇의 핵심 기능을 담당합니다. Bot 객체는 [BotManager](https://violetxf.gitbook.io/messengerbot/api2/botmanager)를 통해 가져와야만 합니다.

| Public methods   |                                                                                                                                                                                                                                                                    |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| void             | <p><strong>addListener(eventName: String, listener: Function)</strong></p><p>이벤트 리스너를 등록합니다. <a href="event">\[이벤트 목록 보기]</a></p>                                                                                                                                  |
| void             | <p><strong>setCommandPrefix(prefix: String)</strong></p><p>커맨드 접두어를 설정합니다. 메시지가 <code>prefix</code>로 시작하면 <a href="event"><code>Event.COMMAND</code></a>이벤트가 발생합니다.</p>                                                                                            |
| Boolean          | <p><strong>canReply(room: String, packageName: String = null)</strong></p><p>해당 패키지의 해당 방의 세션을 가지고 있는지 확인합니다. 가지고 있다면 <code>true</code>, 그렇지 않다면 <code>false</code>를 반환합니다.</p><p><code>packageName</code>이 <code>null</code>일 경우 패키지명을 구분하지 않습니다.</p>             |
| void             | <p><strong>compile()</strong></p><p>현재 봇을 컴파일합니다.</p>                                                                                                                                                                                                              |
| String           | <p><strong>getName()</strong></p><p>현재 봇의 이름을 반환합니다.</p>                                                                                                                                                                                                           |
| Boolean          | <p><strong>getPower()</strong></p><p>현재 봇의 전원 상태를 반환합니다.</p>                                                                                                                                                                                                       |
| void             | <p><strong>off(eventName: String, \[listener: Function])</strong></p><p>마지막으로 등록된 이벤트 리스너를 해제합니다.</p>                                                                                                                                                              |
| void             | <p><strong>on(eventName: String, listener: Function)</strong></p><p>이벤트 리스너를 등록합니다. <a href="event">\[이벤트 목록 보기]</a> (addListener와 같습니다.)</p>                                                                                                                      |
| Array\<Function> | <p><strong>listeners(eventName: String)</strong></p><p>등록된 이벤트 리스너들을 반환합니다.</p>                                                                                                                                                                                    |
| Boolean          | <p><strong>markAsRead(room: String, packageName: String = null)</strong></p><p>해당 패키지의 해당 방의 알림을 읽음으로 표시합니다. <code>packageName</code>이 <code>null</code>일 경우, 모든 패키지에 대해 수행합니다.</p><p>성공시 <code>true</code>, 실패시 <code>false</code>를 반환합니다.</p>                    |
| void             | <p><strong>prependListener(eventName: String, listener: Function)</strong></p><p>이벤트 리스너들의 리스트 <em>앞에</em> 리스너를 추가합니다. </p>                                                                                                                                        |
| void             | <p><strong>removeAllListeners(eventName: String)</strong></p><p>모든 이벤트 리스너를 해제합니다.</p>                                                                                                                                                                             |
| void             | <p><strong>removeListener(eventName: String, \[listener: Function])</strong></p><p>마지막으로 등록된 이벤트 리스너를 해제합니. (off와 같습니다.)</p>                                                                                                                                       |
| Boolean          | <p><strong>send(room: String, msg: String, packageName: String = null)</strong></p><p>해당 패키지의 해당 방으로 메시지를 보냅니다. <code>packageName</code>이 <code>null</code>일 경우 패키지명을 구분하지 않습니다.</p><p>해당 방의 세션이 있을 경우 <code>true</code>, 그렇지 않을 경우 <code>false</code>를 반환합니다.</p> |
| void             | <p><strong>setPower(power: Boolean)</strong></p><p>현재 봇의 전원을 설정합니다.</p>                                                                                                                                                                                            |
| void             | <p><strong>unload()</strong></p><p>현재 봇을 언로드합니다.</p>                                                                                                                                                                                                               |
