kakaobot.py

API wrapper for Kakaotalk written in Python.


Keywords
kakaotalk, chatbot, api
License
MIT
Install
pip install kakaobot.py==1.1

Documentation

Kakaobot.py

license


Kakaobot.pyλŠ” μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬ μžλ™μ‘λ‹΅ APIλ₯Ό 더 μ‰½κ²Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ λ„μ™€μ£ΌλŠ” λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. Flaskλ₯Ό 톡해 κ΅¬ν˜„λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

ν”ŒλŸ¬μŠ€μΉœκ΅¬νŒ€μ˜ 곡지에 λ”°λ₯΄λ©΄ APIν˜• μŠ€λ§ˆνŠΈμ±„νŒ…μ— λŒ€ν•œ 지원이 2019λ…„ 12μ›” 31에 μ’…λ£Œλ˜λ©°, 2018λ…„ 11μ›” 30일 μ΄ν›„μ—λŠ” APIν˜• μŠ€λ§ˆνŠΈμ±„νŒ…μ— λŒ€ν•œ μ‹ κ·œλ“±λ‘μ„ κΈˆμ§€ν•˜κ²Œ λ©λ‹ˆλ‹€. 이에 따라 λ³Έ ν”„λ‘œμ νŠΈλŠ” μ—¬κΈ°μ„œ μ’…κ²°ν•©λ‹ˆλ‹€. λ²„κ·Έμˆ˜μ • λ“±μ˜ μœ μ§€λ³΄μˆ˜μ— λŒ€ν•œ μ΄μŠˆλŠ” κ³„μ†ν•΄μ„œ λ°›μŠ΅λ‹ˆλ‹€.

Table of Contents

Installation

λ¨Όμ € νŒ¨ν‚€μ§€λ₯Ό pypiλ‘œλΆ€ν„° λ°›μŠ΅λ‹ˆλ‹€.

pip install kakaobot.py

κ·Έλ‹€μŒ import kakaobot 으둜 λΆˆλŸ¬μ˜΅λ‹ˆλ‹€.

Example

https://github.com/Katinor/kakao_bot.py.prac

Usage

Basic structure

import kakaobot
app = kakaobot.Client(port = 7900)

##############################
# μ›ν•˜λŠ” μ»€λ§¨λ“œλ“€μ„ λ„£μ–΄μ£Όμ„Έμš” #
##############################

app.run()

기본적인 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. kakaobot.Clientλ₯Ό μ„ μ–Έν•˜κ³ , μ»€λ§¨λ“œλ“€μ„ λ“±λ‘ν•˜κ³ , μ„ μ–Έν•œ ν΄λΌμ΄μ–ΈνŠΈκ°€ λ™μž‘ν•˜λ„λ‘ ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ μ‚¬μš©μžκ°€ "μ•ˆλ…•" 이라고 ν•˜λ©΄ 챗봇이 "λ°˜κ°€μ›Œ" 라고 λ‹΅λ³€ν•˜λ„λ‘ λ§Œλ“œλŠ” 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

import kakaobot

app = kakaobot.Client(port = 7900)

@app.add_command()
def μ•ˆλ…•():
	return kakaobot.Message(text = "λ°˜κ°€μ›Œ")

app.run()

μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬λ₯Ό μ‚¬μš©ν•΄λ³΄λ©΄, ν…μŠ€νŠΈ μž…λ ₯은 λ§‰ν˜€μžˆκ³ , λ²„νŠΌμ„ μ„ νƒν•˜λ„λ‘ ν•˜λŠ” κ²½μš°λ„ μžˆμŠ΅λ‹ˆλ‹€. 이 κ²½μš°μ—λŠ” λ‹€μŒκ³Ό 같이 μ„ μ–Έν•©λ‹ˆλ‹€.

import kakaobot

init_kb = kakaobot.Kboard(button = ["μ•ˆλ…•"])
app = kakaobot.Client(port = 7900, kboard = init_kb)

@app.add_command()
def μ•ˆλ…•():
	return kakaobot.Message(text = "λ°˜κ°€μ›Œ")

app.run()

Basic Class

여기에 μžˆλŠ” 객체듀은 μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬ μžλ™μ‘λ‹΅ API μ—μ„œ μ œκ³΅ν•˜λŠ” ν†΅μ‹ μˆ˜λ‹¨κ³Ό 객체듀을 μΆ”μƒν™”ν•œ κ²ƒμœΌλ‘œ, 챗봇을 μ œμž‘ν•˜λŠ”λ° ν•„μˆ˜μ μΈ μš”μ†Œλ“€μž…λ‹ˆλ‹€.

Kakaobot

λ³„λ„μ˜ 객체에 μ†Œμ†λ˜μ§€ μ•Šκ³  λͺ¨λ“ˆμ—μ„œ 자체적으둜 μ œκ³΅ν•˜λŠ” μ „μ—­λ³€μˆ˜ 및 ν•¨μˆ˜μ˜ λͺ©λ‘μž…λ‹ˆλ‹€.

log_append( chat_id (string), text (string), maintype (string), sudtype (string) )

이 ν•¨μˆ˜λŠ” ν•„μˆ˜μ μΈ μš”μ†Œκ°€ μ•„λ‹ˆκ³  λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜μ΄μ§€λ§Œ, 별닀λ₯Έ 둜그 μž‘μ„± 방법을 μ‚¬μš©ν•˜μ§€ μ•ŠμœΌμ‹ λ‹€λ©΄ λŒ€μ‹  μ‚¬μš©ν•˜μ‹€ 수 μžˆλ„λ‘ λ¬Έμ„œλ‘œ μž‘μ„±ν•΄λ‘κ² μŠ΅λ‹ˆλ‹€.

이 λͺ¨λ“ˆμ€ 자체적으둜 둜그λ₯Ό μž‘μ„±ν•΄ 이 λͺ¨λ“ˆμ„ ν˜ΈμΆœν•œ 파일의 디렉토리에 kakaobot_log λΌλŠ” 폴더λ₯Ό λ§Œλ“  ν›„ μ €μž₯ν•˜κ²Œ λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. Client 클래슀λ₯Ό μ„ μ–Έν•˜κ³  run으둜 μž‘λ™μ‹œν‚€κΈ° κΉŒμ§€μ˜ λ‘œκ·Έκ°€ 이 ν•¨μˆ˜λ‘œ λ™μž‘ν•˜λ©°, 챗봇 μ œμž‘μ‹œμ— 이 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄ 둜그λ₯Ό 계속 μž‘μ„±ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

λ‘œκ·ΈλŠ” λ‹€μŒκ³Ό 같은 ꡬ쑰둜 μž‘μ„±λ©λ‹ˆλ‹€.

[(time)] trgd [<maintype>_<subtype>] from [<chat_id>] : <text>

Client

μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬ API와 ν†΅μ‹ ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 즉, 챗봇을 μ˜λ―Έν•©λ‹ˆλ‹€. kakaobot.pyλŠ” Clientλ₯Ό μ„ μ–Έν•˜κ³  Client.run()을 톡해 챗봇을 ν™œμ„±ν™”μ‹œν‚΅λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
port int Optional μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬ API와 톡신할 μ›Ήμ„œλ²„μ˜ ν¬νŠΈλ²ˆν˜Έμž…λ‹ˆλ‹€. μƒλž΅μ‹œ Flask의 κΈ°λ³Έ 포트번호인 5000이 μ μš©λ©λ‹ˆλ‹€.
kboard Kboard Optional 챗봇 μ‚¬μš©μžκ°€ 처음으둜 이 μ±—λ΄‡μ˜ μ±„νŒ…λ°©μ— λ“€μ–΄μ˜¬ λ•Œ μ μš©λ˜λŠ” Kboardμž…λ‹ˆλ‹€. μƒλž΅μ‹œ 빈 Kboard κ°€ μ μš©λ©λ‹ˆλ‹€.
error_text Message Optional μ‚¬μš©μžκ°€ μ±—λ΄‡μ—κ²Œ μ „λ‹¬ν•œ λ©”μ‹œμ§€κ°€ λ“±λ‘λœ λͺ…령어듀을 μ–΄λŠκ²ƒλ„ λ§Œμ‘±ν•˜μ§€ μ•Šμ„ 경우 μ‚¬μš©μžμ—κ²Œ μ „λ‹¬λ˜λŠ” λ©”μ‹œμ§€μž…λ‹ˆλ‹€. μƒλž΅μ‹œ "Error occured" 라고 챗봇이 λ§ν•©λ‹ˆλ‹€.
set_extra()둜 λ“±λ‘λœ ν•¨μˆ˜κ°€ μžˆλ‹€λ©΄ 이 λ©”μ‹œμ§€κ°€ μ „λ‹¬λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. (λ‹€λ₯Έ λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ λͺ…령어듀을 λ§Œμ‘±ν•˜λŠ” 메세지λ₯Ό μ œμ™Έν•œ λͺ¨λ“  메세지가 κ·Έ ν•¨μˆ˜λ₯Ό λͺ…λ Ήμ–΄μ²˜λŸΌ λ°œλ™μ‹œν‚€κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.)
λͺ…λ Ήμ–΄ λ“±λ‘μ‹œμ˜ 주의점

λͺ¨λ“  λͺ…λ Ήμ–΄ 등둝 λ°μ½”λ ˆμ΄ν„°μ— λ“±λ‘λ˜λŠ” ν•¨μˆ˜λŠ” 정해진 숫자의 λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€. κ·Έ ν•¨μˆ˜μ— μ „λ‹¬λ˜λŠ” λ§€κ°œλ³€μˆ˜μ€‘ μ²«λ²ˆμ§ΈλŠ” μ–Έμ œλ‚˜ μ‚¬μš©μžμ˜ 고유 토큰값 이며, λ‚˜λ¨Έμ§€λŠ” ν•¨μˆ˜ μ†Œκ°œλΆ€λΆ„μ— μ„€λͺ…ν•΄λ‘μ—ˆμŠ΅λ‹ˆλ‹€. μ‚¬μš©μžμ˜ 고유 토큰값은 μ£Όμ‹νšŒμ‚¬ 카카였 μΈ‘μ—μ„œ μ œκ³΅ν•˜λŠ” μ •λ³΄μž…λ‹ˆλ‹€. 같은 μ‚¬μš©μžλΌλ„ λ‹€λ₯Έ ν”ŒλŸ¬μŠ€μΉœκ΅¬λΌλ©΄ 값이 달라지기 λ•Œλ¬Έμ—, 토큰값이 μ΄μ „μ˜ μ‚¬μš©μžμ™€ λ™μΌμΈμž„μ„ 보μž₯ν•  μˆ˜λŠ” μžˆμ§€λ§Œ, 개인으둜 νŠΉμ •ν•˜λŠ”λ° μ‚¬μš©ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€. user_key에 λŒ€ν•œ μ„€λͺ…을 ν™•μΈν•˜μ„Έμš”.

add_command(command_list)
  • λͺ…λ Ήμ–΄λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•œ λ°μ½”λ ˆμ΄ν„°μž…λ‹ˆλ‹€. λ°˜λ“œμ‹œ Message 객체λ₯Ό λ°˜ν™˜ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€.
  • command_list에 μ „λ‹¬λœ λ°°μ—΄μ˜ μΈμžλ“€μ΄ λͺ…λ Ήμ–΄κ°€ λ©λ‹ˆλ‹€. μƒλž΅ν•˜λ©΄ λŒ€μƒμ΄ λ˜λŠ” ν•¨μˆ˜μ˜ 이름이 λͺ…λ Ήμ–΄κ°€ λ©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ λͺ…λ Ήμ–΄λ₯Ό μ •ν™•νžˆ λ§ν–ˆμ„ λ•Œ λ™μž‘ν•©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.
@app.add_command()
def μ•ˆλ…•(user_key): # 챗봇이 "μ•ˆλ…•" μ΄λΌλŠ” 말을 듀을 경우
	return kakaobot.Message(text = "λ°˜κ°€μ›Œ") # "λ°˜κ°€μ›Œ" 라고 λ‹΅ν•©λ‹ˆλ‹€.

@app.add_command(["μ•ˆλ…•","λ°˜κ°€μ›Œ"])
def greeting(user_key):
	return kakaobot.Message(text = "λ‚˜λ„ λ°˜κ°€μ›Œ!")
add_prefix_command(command_list, preserve_prefix)
  • λͺ…λ Ήμ–΄λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•œ λ°μ½”λ ˆμ΄ν„°μž…λ‹ˆλ‹€. λ°˜λ“œμ‹œ Message 객체λ₯Ό λ°˜ν™˜ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€.
  • command_list에 μ „λ‹¬λœ λ°°μ—΄μ˜ μΈμžλ“€μ΄ λͺ…λ Ήμ–΄κ°€ λ©λ‹ˆλ‹€. 배열이 μ—†μœΌλ©΄ λŒ€μƒμ΄ λ˜λŠ” ν•¨μˆ˜μ˜ 이름이 λͺ…λ Ήμ–΄κ°€ λ©λ‹ˆλ‹€.
  • preserve_prefixλ₯Ό μƒλž΅ν•˜λ©΄ 기본값인 Falseκ°€ λ“€μ–΄κ°‘λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ λͺ…λ Ήμ–΄λ₯Ό 첫 μ–΄μ ˆλ‘œ λ§ν–ˆμ„ λ•Œ λ™μž‘ν•©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” 두 개의 λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.

preserve_prefixκ°€ 기본값인 False일 경우, λͺ…λ Ήμ–΄ 뢀뢄이 잘린 λ¬Έμžμ—΄μ΄ 두 번째 λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄κ°€κ²Œ λ©λ‹ˆλ‹€. μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

@app.add_prefix_command()
def 따라해(user_key,content):
	return kakaobot.Message(text = content)

이 경우 "따라해"κ°€ μ±„νŒ…μ˜ 첫 단어일 λ•Œ λ™μž‘ν•©λ‹ˆλ‹€. 그리고 "따라해"λ₯Ό μ œμ™Έν•œ λ‚΄μš©μ΄ λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄μ˜΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ "따라해 λ‚˜λŠ” λ˜‘λ˜‘ν•˜λ‹€" 일 경우 따라해가 빠지고 "λ‚˜λŠ” λ˜‘λ˜‘ν•˜λ‹€" κ°€ λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄μ˜΅λ‹ˆλ‹€.

λ°˜λŒ€λ‘œ preserve_prefixκ°€ True라면 두 번째 λ§€κ°œλ³€μˆ˜μ— λͺ¨λ“  λ‚΄μš©μ΄ λ“€μ–΄κ°‘λ‹ˆλ‹€.

@app.add_prefix_command(preserve_prefix = True)
def 따라해(user_key,content):
	return kakaobot.Message(text = content)

이 경우 "따라해"κ°€ μ±„νŒ…μ˜ 첫 단어일 λ•Œ λ™μž‘ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ "따라해 λ‚˜λŠ” λ˜‘λ˜‘ν•˜λ‹€" 일 경우 "따라해 λ‚˜λŠ” λ˜‘λ˜‘ν•˜λ‹€" κ°€ λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄μ˜΅λ‹ˆλ‹€.

add_regex_command(regex_string)
  • λͺ…λ Ήμ–΄λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•œ λ°μ½”λ ˆμ΄ν„°μž…λ‹ˆλ‹€. λ°˜λ“œμ‹œ Message 객체λ₯Ό λ°˜ν™˜ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€.
  • λ°μ½”λ ˆμ΄ν„°λ‘œ μ „λ‹¬λœ μ •κ·œμ‹ ν‘œν˜„μ΄ λͺ…λ Ήμ–΄κ°€ λ©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ λͺ…λ Ήμ–΄μ˜ νŒ¨ν„΄μ„ λ§Œμ‘±ν•˜λ„λ‘ λ§ν–ˆμ„ λ•Œ λ™μž‘ν•©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” 두 개의 λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.

μ •κ·œμ‹ ν‘œν˜„μ— μ˜ν•΄ 잘린 뢀뢄이 두 번째 λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄κ°€κ²Œ λ©λ‹ˆλ‹€. μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

@app.add_regex_command('^(?:((?:(?!μ—μ„œ).)*)μ—μ„œ )?((?:(?! μ°Ύμ•„μ€˜).)*) μ°Ύμ•„μ€˜')
def temp_regex_com(user_key,content):
	return kakaobot.Message(text = "λ°˜κ°€μ›Œ")

이 경우 λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄κ°€λŠ” λ‚΄μš©μ€ 2개의 μ›μ†Œλ₯Ό 가진 배열이 λ©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ "κ΅¬κΈ€μ—μ„œ μΉ΄ν‹°λ…Έλ₯΄ μ°Ύμ•„μ€˜" 일 경우 "ꡬ글" 이 content[0], "μΉ΄ν‹°λ…Έλ₯΄"κ°€ content[1]이 λ©λ‹ˆλ‹€. 더 λ‚˜μ•„κ°€μ„œ, "μΉ΄ν‹°λ…Έλ₯΄ μ°Ύμ•„μ€˜" 일 경우 "" 이 content[0], "μΉ΄ν‹°λ…Έλ₯΄"κ°€ content[1]이 λ©λ‹ˆλ‹€.

set_extra()
  • λͺ…λ Ήμ–΄λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•œ λ°μ½”λ ˆμ΄ν„°μž…λ‹ˆλ‹€. λ°˜λ“œμ‹œ Message 객체λ₯Ό λ°˜ν™˜ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” μ‚¬μš©μžκ°€ μœ„μ˜ μ„Έ λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λ˜μ§€ μ•Šμ€ 말을 ν–ˆμ„ λ•Œ λ™μž‘ν•©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” 두 개의 λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.

μ‚¬μš©μžκ°€ ν•œ 말이 κ·ΈλŒ€λ‘œ 두 번째 λ§€κ°œλ³€μˆ˜λ‘œ λ“€μ–΄κ°€κ²Œ λ©λ‹ˆλ‹€. μ˜ˆμ‹œλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

@app.set_extra
def extra_func(user_key,content):
	return kakaobot.Message(text = content)
set_friend_add_event()
  • μ‚¬μš©μžκ°€ 챗봇을 친ꡬ둜 μΆ”κ°€ν•  경우 μˆ˜ν–‰λ˜λŠ” ν•¨μˆ˜λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•œ λ°μ½”λ ˆμ΄ν„°μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’μ΄ 없어도 λ©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.

μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬ μžλ™μ‘λ‹΅ API μ—μ„œλŠ” μΉœκ΅¬μΆ”κ°€μ‹œμ˜ μ±—λ΄‡μ˜ λŒ€μ‚¬λ₯Ό λ°”κΏ€ 수 없도둝 λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ“±λ‘λœ ν•¨μˆ˜μ—μ„œ Message 객체λ₯Ό λ°˜ν™˜ν•˜λ”λΌλ„ 챗봇은 κ·Έ 객체λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

set_friend_delete_event()
  • μ‚¬μš©μžκ°€ 챗봇을 친ꡬλͺ©λ‘μ—μ„œ μ œμ™Έν•  경우 μˆ˜ν–‰λ˜λŠ” ν•¨μˆ˜λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•œ λ°μ½”λ ˆμ΄ν„°μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’μ΄ 없어도 λ©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.

μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬ μžλ™μ‘λ‹΅ API μ—μ„œλŠ” μΉœκ΅¬μ‚­μ œμ‹œμ˜ μ±—λ΄‡μ˜ λŒ€μ‚¬λ₯Ό λ°”κΏ€ 수 없도둝 λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ“±λ‘λœ ν•¨μˆ˜μ—μ„œ Message 객체λ₯Ό λ°˜ν™˜ν•˜λ”λΌλ„ 챗봇은 κ·Έ 객체λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

set_chatroom_leave_event()
  • μ‚¬μš©μžκ°€ μ±—λ΄‡κ³Όμ˜ μ±„νŒ…λ°©μ„ 퇴μž₯ν•  경우 μˆ˜ν–‰λ˜λŠ” ν•¨μˆ˜λ₯Ό λ“±λ‘ν•˜κΈ° μœ„ν•œ λ°μ½”λ ˆμ΄ν„°μž…λ‹ˆλ‹€.
  • λ°˜ν™˜κ°’μ΄ 없어도 λ©λ‹ˆλ‹€.
  • 이 λ°μ½”λ ˆμ΄ν„°λ‘œ λ“±λ‘λœ ν•¨μˆ˜λŠ” ν•˜λ‚˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό ν•„μš”λ‘œ ν•©λ‹ˆλ‹€.

μΉ΄μΉ΄μ˜€ν†‘ ν”ŒλŸ¬μŠ€μΉœκ΅¬ μžλ™μ‘λ‹΅ API μ—μ„œλŠ” μ±„νŒ…λ°© 퇴μž₯μ‹œμ˜ μ±—λ΄‡μ˜ λŒ€μ‚¬λ₯Ό λ°”κΏ€ 수 없도둝 λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. λ“±λ‘λœ ν•¨μˆ˜μ—μ„œ Message 객체λ₯Ό λ°˜ν™˜ν•˜λ”λΌλ„ 챗봇은 κ·Έ 객체λ₯Ό μ „λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

run()

챗봇을 μž‘λ™μ‹œν‚€κΈ° μœ„ν•œ μ›Ήμ„œλ²„κ°€ μΌœμ§‘λ‹ˆλ‹€.

Kboard

μ‚¬μš©μžμ˜ ν‚€λ³΄λ“œ μ˜μ—­μ— ν‘œν˜„λ  λ©”μ‹œμ§€ μž…λ ₯방식에 λŒ€ν•œ μ •λ³΄μž…λ‹ˆλ‹€. 빈 KboardλŠ” μ‚¬μš©μžμ—κ²Œ 주관식 응닡을 ν—ˆμš©ν•˜μ§€λ§Œ, ν•˜λ‚˜μ˜ λ²„νŠΌμ΄λΌλ„ λ“±λ‘λ˜μ–΄ μžˆλ‹€λ©΄, μ‚¬μš©μžλŠ” 객관식 μ‘λ‹΅λ§Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. (μ±„νŒ…μ°½μ΄ μž κ²¨μ§‘λ‹ˆλ‹€.)

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
button string λ˜λŠ” List[string] Optional μ‚¬μš©μžμ—κ²Œ μ œμ‹œν•  객관식 μ‘λ‹΅μ˜ λͺ©λ‘μž…λ‹ˆλ‹€.
add_button(button)

객관식 응닡을 μΆ”κ°€ν•©λ‹ˆλ‹€. μ„ μ–Έμ‹œμ—λŠ” 행렬도 λ°›μ§€λ§Œ, 이 ν•¨μˆ˜λ₯Ό μ΄μš©ν•  κ²½μš°μ—λŠ” λ¬Έμžμ—΄λ§Œ 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
button string Required μΆ”κ°€ν•  객관식 μ‘λ‹΅μž…λ‹ˆλ‹€.

Message

μ‚¬μš©μžμ—κ²Œ μ „λ‹¬ν•œ λ©”μ‹œμ§€ κ°μ²΄μž…λ‹ˆλ‹€. μ»€λ§¨λ“œ 등둝 λ°μ½”λ ˆμ΄ν„°λ‘œ λ°μ½”λ ˆμ΄νŒ…λœ λͺ¨λ“  ν•¨μˆ˜λ“€μ€ 이 객체λ₯Ό λ°˜ν™˜ν•΄μ•Όλ§Œ ν•©λ‹ˆλ‹€. 주의 : 이 객체λ₯Ό λ°˜ν™˜ν•  λ•Œ text, photo, message_button 3가지 쀑 ν•˜λ‚˜ 이상이 Message 객체에 μ§€μ •λ˜μ–΄ μžˆμ–΄μ•Όλ§Œ ν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
text string Optional 전달할 ν…μŠ€νŠΈ μž…λ‹ˆλ‹€. 1000자 μ œν•œμ΄ μžˆμŠ΅λ‹ˆλ‹€.
photo Photo Optional 말풍선에 λ“€μ–΄κ°ˆ 이미지 μ •λ³΄μž…λ‹ˆλ‹€.
message_button Mbutton Optional 말풍선에 λΆ™λŠ” λ§ν¬λ²„νŠΌμž…λ‹ˆλ‹€.
keyboard Kboard Optional 이 λ©”μ‹œμ§€λ₯Ό 받은 μ‚¬μš©μžμ˜ ν‚€λ³΄λ“œ μ˜μ—­μ— ν‘œν˜„λ  λ©”μ‹œμ§€ μž…λ ₯방식에 λŒ€ν•œ 정보λ₯Ό λ‹΄μŠ΅λ‹ˆλ‹€. μƒλž΅μ‹œ 빈 Kboard κ°€ μ μš©λ©λ‹ˆλ‹€.
set_text(text)

λ©”μ‹œμ§€ 객체의 ν…μŠ€νŠΈλ₯Ό κ΅μ²΄ν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
text string Required ꡐ체할 ν…μŠ€νŠΈ μž…λ‹ˆλ‹€.
set_photo(photo)

λ©”μ‹œμ§€ 객체의 사진을 κ΅μ²΄ν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
text Photo Required ꡐ체할 Photo κ°μ²΄μž…λ‹ˆλ‹€.
set_button(message_button)

λ©”μ‹œμ§€ 객체의 λ§ν¬λ²„νŠΌμ„ κ΅μ²΄ν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
text Mbutton Required ꡐ체할 Mbutton κ°μ²΄μž…λ‹ˆλ‹€.
set_keyboard(keyboard)

λ©”μ‹œμ§€ 객체의 μž…λ ₯방식을 κ΅μ²΄ν•©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
text Kboard Required ꡐ체할 Kboard κ°μ²΄μž…λ‹ˆλ‹€.

Mbutton

λ§ν¬λ²„νŠΌ(message_button) κ°μ²΄μž…λ‹ˆλ‹€. Message 객체에 포함될 경우 말풍선 ν•˜λ‹¨μ— 링크λ₯Ό 가진 λ²„νŠΌμ΄ μΆ”κ°€λ©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
label string Required λ§ν¬λ²„νŠΌμ˜ νƒ€μ΄ν‹€μž…λ‹ˆλ‹€.
url string Required λ²„νŠΌμ„ λˆ„λ₯Ό 경우 μ—°κ²°λ˜λŠ” μ£Όμ†Œμž…λ‹ˆλ‹€.

Photo

이미지 κ°μ²΄μž…λ‹ˆλ‹€. Message 객체에 포함될 경우 말풍선에 이미지가 μΆ”κ°€λ©λ‹ˆλ‹€.

주의 : μ΄λ―Έμ§€λŠ” jpg λ˜λŠ” png ν˜•μ‹μ΄μ–΄μ•Όλ§Œ ν•©λ‹ˆλ‹€. μΆ”κ°€λ‘œ 500KB μ΄ν•˜, μ‚¬μ΄μ¦ˆ 720*630이 ꢌμž₯λ©λ‹ˆλ‹€.

λ§€κ°œλ³€μˆ˜ νƒ€μž… ν•„μˆ˜μ—¬λΆ€ μ„€λͺ…
url string Required 이미지λ₯Ό λΆˆμ–΄ 올 μ£Όμ†Œμž…λ‹ˆλ‹€.
width int Optional μ΄λ―Έμ§€μ˜ λ„ˆλΉ„μž…λ‹ˆλ‹€. μƒλž΅μ‹œ 720이 μ μš©λ©λ‹ˆλ‹€.
height int Optional μ΄λ―Έμ§€μ˜ λ†’μ΄μž…λ‹ˆλ‹€. μƒλž΅μ‹œ 630이 μ μš©λ©λ‹ˆλ‹€.