ํ ๋ ๊ทธ๋จ BotFather ๋ด์ ํตํด ๋ง๋ @StudyJ001Bot์ ํตํด Java ์ธ์ด๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๋์ผํ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ด์ ๋ง๋ค์ด๋ณด๊ณ ์ ํ๋ค. ์น ์์์ ๋ฉ์์ง๋ฅผ ๋ณด๋ธ ๋ฐฉ์์ @StudyJ001Bot์ด ๋์๊ฒ “text“๋ผ๋ ํ๋ผ๋ฏธํฐ์ ๋ด๊ธด ๋ฉ์์ง๋ฅผ ์ ์กํด์ฃผ๋ ์ญํ ์ ํ๋ค. ์ด๋ฒ Java ์ธ์ด๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ๋์ผํ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ฑด ์ฌ์ฉ์๊ฐ @StudyJ001Bot์๊ฒ ”Hello World!“๋ผ๊ณ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ฉด @StudyJ001Bot์ด ์ฌ์ฉ์์๊ฒ ”Hello World!“๋ผ๊ณ ๋์ผํ ๋ฉ์์ง๋ฅผ ์ ์กํด์ฃผ๋ ๋ด์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ๋ค. ๋ง๋ค๊ธฐ ์ํด์๋ ์ ์ผ ๋จผ์ Javaํ๋ก์ ํธ๊ฐ ํ์ํ๋ค. ์์ฑ์๋ eGovFramework๋ฅผ ์ด์ฉํด ์์ฑํ์๋ค.
ํ ๋ ๊ทธ๋จ @StudyJ001Bot์ ๋ง๋ค๊ธฐ ์ํด ์ค๋นํ ์คํ์ด๋ค.
๊ฐ๋ฐTool | eGovFrameDev-3.7.0 |
Maven | maven-3.6.3 |
jdk | jdk1.8 |
๋ณธ ์์ฑ์๋ Mavenํ๋ก์ ํธ๋ฅผ ์ด์ฉํด @StudyJ001Bot์ผ๋ก ๋์ผํ ๋ฉ์์ง๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๋ด์ ๋ง๋ค์ด๋ณด๋ ค๊ณ ํ๋ค. ์์๋๋ก ์ฐจ๊ทผ์ฐจ๊ทผ ๊ณผ์ ์ ๋ฐ์๊ฐ๋ณด๊ฒ ๋ค.
1. ๋ฉ์ด๋ธ ํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค.
์ดํด๋ฆฝ์ค ์๋จ ๋ฉ๋ด๋ฐ์ File > New > Maven project๋ฅผ ์ ํํ๊ฑฐ๋ ์ดํด๋ฆฝ์ค Project Explorer์์น์์ Ctrl+N์ ๋๋ฌ maven์ ๊ฒ์ํด Maven project๋ฅผ ์ ํํด ๊ฐ์คํ ์ ์๋ค. ํ๋ก์ ํธ ์ด๋ฆ๊ณผ ์์น๋ฅผ ์ ํํ๋ ํ๋ฉด์์๋ "Create a simple project(skip archetype selection)"์ ์ฒดํฌํ๊ณ Next๋ก ๋์ด๊ฐ๋ค. ๊ทธ๋ฃน์์ด๋์ ์ํฐํํธ ์์ด๋๋ฅผ ์ ๋ ฅํ๋ ํ๋ฉด์์ Group id์ Artifact id๋ฅผ ์ ๋ ฅํด์ค๋ค. ์์ฑ์๋ Group id๋ก "com.project"๋ฅผ Artifact id๋ก "studyj001bot"์ผ๋ก ์ ๋ ฅํ๊ณ packaging์ "war"๋ก ์ ํ ํ Finishํด์ฃผ์๋ค.
ํ๋ก์ ํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ์ ๊ผญ Maven project๋ฅผ ์ ํํ์ง ์์๋ ์๊ด์ ์๋ค. ์์ ์ด ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ๋ชฉ์ ์ ๋ง๋ ํ๋ก์ ํธ๊ฐ ์๋ค๋ฉด ๊ทธ ๋ถ๋ถ์ผ๋ก ๊ฐ์คํ๋๋ก ํ๋ค.
2. ํ ๋ ๊ทธ๋จ BOT API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฑ๋กํ๋ค.
Maven project์ pom.xml์์๋ ํ๋ก์ ํธ์์ ์ฌ์ฉ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ dependency๋ก ๊ด๋ฆฌํ ์ ์๋ค. telegrambots ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฑ๋กํ๋ค.
<!-- https://mvnrepository.com/artifact/org.telegram/telegrambots -->
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>4.5</version>
</dependency>
pom.xml์ ํ ๋ ๊ทธ๋จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ฑ๋กํ๋ค๋ฉด, ํ๋ก์ ํธ๋ฅผ maven update๋ฅผ ์คํํด ๋ค์ด๋ก๋ ๋ฐ์ ์ฌ ์ ์๋๋ก ์ ์ฉํ๋ค. ์ฌ๊ธฐ๊น์ง ํ๋ค๋ฉด ํ ๋ ๊ทธ๋จ ๋ด์ ๋ง๋ค๊ธฐ ์ํ ์ค๋น๋ ๋ค ๋๋ฌ๋ค. ๊ทธ ์ธ์ ํ์ํ ๋ค๋ฅธ ์ค์ ๋ ํด์ฃผ๊ธฐ๋ก ํ๋ค.(์คํ๋ง, ๋ก๊น , ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฑ๋ฑ)
3. StudyJ001Bot์ ์คํ ํ ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
MainController์์ main์ ์คํํด StudyJ001Bot์ ์๋ํ ์ค๋น๋ฅผ ํ๋ค. ApiContextInitializer.init()๋ฉ์๋๋ฅผ ํตํด์ Api๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ด๊ธฐํ๋ฅผ ๋จผ์ ์งํํ๋ค. ๊ทธ๋ฐ ํ, TelegramBotsApi ์ธ์คํด์ค๋ฅผ ์์ฑ ํ ๋ด๊ฐ ๋ฑ๋กํ ๋ด ํด๋์ค๋ฅผ ๋ฑ๋กํด ์ฌ์ฉ ์ค๋นํ๋ค. ์ฌ์ฉ ์ค๋น๊ฐ ์๋ฃ๋์์ผ๋ฉด ์ถ๋ ฅ๋ฌธ "TELEGRAM StudyJ001BOT STARTED...!"๊ฐ ์ฝ์์ ์ถ๋ ฅ๋๋ค.
4. StudyJ001Bot ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
TelegramLongPollingBot ์ถ์ ํด๋์ค๋ฅผ ์์๋ฐ๋๋ค. ์์๋ฐ์๋ ํจ๊ป ๊ตฌํํด์ผํ๋ ์ค๋ฒ๋ผ์ด๋ ๋ฉ์๋๋ ํจ๊ป ์์ฑ๋๋ค. getBotUsername() ๋ฉ์๋์๋ "StudyJ001Bot"๊ณผ ๊ฐ์ด ๋ด์ ์ด๋ฆ์ ๋ช ๋ช ํ๋ค. getBotToken() ๋ฉ์๋์๋ Bot API Token ํค๋ฅผ ์์ฑํ๋ค. onUpdateReceived() ๋ฉ์๋๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ ๋ฉ์๋์ด๋ค. onUpdateReceived() ๋ฉ์๋๋ StudyJ001Bot์ ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ด๋ฉด onUpdateReceived() ๋ฉ์๋๊ฐ ๋ฐ๋ํ๋๋ฐ, ์ฌ๊ธฐ์ ๋ฉ์ธ์ง๋ฅผ ์ปจํธ๋กค ํ ๊ฒ์ด๋ค.
onUpdateReceived()๋ฉ์๋์ Update๊ฐ์ฒด์์๋ ๋ง์ ์ ๋ณด๋ค์ด ๋ด๊ฒจ์๋๋ฐ, ๊ทธ ์ค์์ ๋ฉ์์ง๋ฅผ ์ด์ฉํด ๋ณด๋ธ ํ ์คํธ์ ์ฑํ ์์ด๋๋ก ๋ฉ์ธ์ง๋ฅผ ๋ณด๋ธ๋ค.
๋ณด๋ผ ๋ฉ์ธ์ง ๊ฐ์ฒด์ธ SendMessage ์ธ์คํดํธ๋ฅผ ์์ฑํ๊ณ enableHtml(true)๋ก ๋ฉ์์ง ํ์ ์ html๋ก ๋ณด๋ผ ์ ์๋๋ก ์ค์ ํ๋ค. ์ด๋ ๊ฒํ๋ฉด "<b>๊ตต์ ํ ์คํธ</b>", "<a href=''></a>" ์ ๊ฐ์ htmlํ๊ทธ๋ฅผ ํจ๊ป ๋ณด๋ด ์ ์ฉํ ์ ์๋ค. ํ์ง๋ง, ๊ตต์, ์ดํ๋ฆญ์ฒด, ๋งํฌ๋ค์ด๋ง ๊ฐ๋ฅํ๋ค. ์ธ์คํดํธ ์์ฑ๋ ๋ฉ์์ง๋ฅผ Update๊ฐ์ฒด์์ ๋ฐ์ ๋ฉ์์ง ๊ทธ๋๋ก๋ฅผ setText()๋ก ๋ฃ์ด์ค ํ, ์ฑํ ์์ด๋๋ setChatId()์ ๋ฃ์ด์ค๋ค. ๊ทธ๋ฆฌ๊ณ ์ต์ข execute()๋ฉ์๋๋ก ๋ฉ์์ง๋ฅผ ์ ์กํ๋ค.
5. StudyJ001Bot ์คํ ํ, ๋ฉ์์ง ์ ์ก ํ์ธ
MainController ํด๋์ค๋ฅผ ์คํํ๊ณ ํ ๋ ๊ทธ๋จ ๋ฉ์ ์ ์ StudyJ001Bot์ผ๋ก ๋ฉ์์ง๋ฅผ ๋ณด๋ด๋ณด์. ๋ด๊ฐ ์ ๋ ฅํ ๋ฉ์์ง ๊ทธ๋๋ก๋ฅผ StudyJ001Bot์ด ๋์ผํ๊ฒ ๋ณด๋ด์ฃผ๋๊ฒ์ ํ์ธํ ์ ์๋ค.
์์ฑ์๊ฐ ๋ณด๋ธ ํ ์คํธ 3๊ฐ๊ฐ ๋์ผํ ๋ฉ์์ง๋ก ์ ์ก๋จ์ ํ์ธํ ์ ์๋ค. Java๋ก ๊ฐ๋จํ๊ฒ ๋ด๊ฐ ๋ณด๋ธ ๋ฉ์์ง๋ฅผ ๋์ผํ ๋ฉ์์ง๋ก ๋ณด๋ด์ฃผ๋ ๋ด์ ๋ง๋ค์ด๋ณด์๋ค. ๋ค์์๋ ํน์ ๋ช ๋ น์ด๋ฅผ ํตํด์ ์ด๋ฒคํธ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๋ง๋ค์ด๋ณด๊ณ ์ ํ๋ค.
๋๊ธ