๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

์ €๋Š” ๋ถˆ๊ณผ 10์ฃผ ์ „๋ถ€ํ„ฐ IT ์„ธ๊ณ„์— ๋น ์ ธ๋“ค๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง„์ง€ํ•˜๊ฒŒ, XNUMX์ฃผ ์ „์—๋Š” HTML ๊ตฌ๋ฌธ๋„ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ์†Œ๊ฐœ๋Š” XNUMX๋…„ ์ „ ํ•™๊ต ์ปค๋ฆฌํ˜๋Ÿผ์ธ ํŒŒ์Šค์นผ๋กœ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•„์ด๋“ค์ด ๋ด‡์„ ๋งŒ๋“ค์–ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ IT์บ ํ”„์— ๊ฐ€๊ธฐ๋กœ ํ–ˆ์–ด์š”. ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๊ทธ๋‹ค์ง€ ์–ด๋ ต์ง€ ์•Š๋‹ค๊ณ  ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธด ์—ฌ์ •์„ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • Ubuntu๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • GitHub์— ๋“ฑ๋ก๋˜์–ด ์žˆ์œผ๋ฉฐ,
  • ๊ธฐ๋ณธ JavaScript ๊ตฌ๋ฌธ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
  • ์˜์–ด์™€ ๋Ÿฌ์‹œ์•„์–ด๋กœ ๋œ ์ˆ˜๋งŽ์€ ๊ธฐ์‚ฌ๋ฅผ ์ฝ๊ณ ,
  • ๋“œ๋””์–ด ๋ด‡์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค
  • ๋“œ๋””์–ด ์ด ๊ธ€์„ ์“ฐ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

์ด ๊ธ€์€ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ๊ธ€์ด๋ผ๊ณ  ๋ฐ”๋กœ ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์ž‘์—…์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๊ฒฝ์šฐ ์•ฝ๊ฐ„ ์›ƒ๊ฒŒ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

1. JS์—์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ ์–ด๋„ ์–ธ์–ด์˜ ๊ตฌ๋ฌธ์„ ๋จผ์ € ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒ์€ JavaScript๋กœ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ €์˜ ๋‹ค์Œ ๋‹จ๊ณ„๋Š” ReactNative์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚˜๋Š” ์‹œ์ž‘ํ–ˆ๋‹ค ๊ฐ•์˜ Codecademy์—์„œ ๋งค์šฐ ๊ธฐ๋ปค์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ 7์ผ์€ ๋ฌด๋ฃŒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ํ”„๋กœ์ ํŠธ. ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. ์™„๋ฃŒํ•˜๋Š”๋ฐ ์•ฝ 25์‹œ๊ฐ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์‚ฌ์‹ค, ๊ทธ ๋ชจ๋“  ๊ฒƒ์ด ์œ ์šฉํ•œ ๊ฒƒ์€ ์•„๋‹ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ฝ”์Šค์˜ ๊ตฌ์กฐ์™€ ์ฒซ ๋ฒˆ์งธ ๋ธ”๋ก์˜ ์„ธ๋ถ€ ๋ชจ์Šต์ž…๋‹ˆ๋‹ค.

๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

2. ๋ด‡์„ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ธ๊ฐ€์š”?

์ด๊ฒŒ ์ดˆ๋ฐ˜์— ๋งŽ์€ ๋„์›€์ด ๋์–ด์š” ์ด ๊ธฐ์‚ฌ ํŠน์ • Archakov์˜ ๋ธ”๋กœ๊ทธ์—์„œ. ๊ทธ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์”น์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ด‡ ๋“ฑ๋ก์— ๋Œ€ํ•œ ์ง€์นจ์ž…๋‹ˆ๋‹ค. ์ด๋ณด๋‹ค ๋” ์ž˜ ์“ธ ์ˆ˜๋Š” ์—†๊ณ , ์ด๊ฒŒ ๊ฐ€์žฅ ์‰ฌ์šด ๋ถ€๋ถ„์ด๋ผ ์š”์ ๋งŒ ์“ฐ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ด‡์„ ์ƒ์„ฑํ•˜๊ณ  ํ•ด๋‹น API๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” @BotFather๋ผ๋Š” ๋‹ค๋ฅธ ๋ด‡์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. ํ…”๋ ˆ๊ทธ๋žจ์—์„œ ๊ทธ๋ฅผ ์ฐพ์•„ ํŽธ์ง€๋ฅผ ์“ฐ๊ณ  ๊ฐ„๋‹จํ•œ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ API ํ‚ค(์ˆซ์ž์™€ ๋ฌธ์ž ์ง‘ํ•ฉ)๋ฅผ ๋ฐ›์œผ์„ธ์š”(์ €์žฅ!). ๋‚˜์ค‘์— ์œ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

3. ๋ด‡ ์ฝ”๋“œ๋Š” ์–ด๋–ค ๋ชจ์Šต์ธ๊ฐ€์š”?

์˜ค๋žซ๋™์•ˆ ๊ธฐ์‚ฌ๋ฅผ ์—ฐ๊ตฌํ•œ ํ›„ Telegram API๋ฅผ ์—ฐ๊ตฌํ•˜๊ณ  ์ฒ˜์Œ๋ถ€ํ„ฐ ํฐ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋„๋ก ์ผ์ข…์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(๋ชจ๋“ˆ ํ˜•์‹์˜ ํƒ€์‚ฌ ์ฝ”๋“œ)๋ฅผ ์‚ฌ์šฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค ์ „์‹ , ์ด๋Š” npm ๋˜๋Š” ์›์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ด๋–ป๊ฒŒ๋“  ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ œ๊ฐ€ ๋ด‡ ๋ฐฐํฌ๊ฐ€ ๋ฌด์—‡์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ ๋Œ€๋žต์ ์œผ๋กœ ์ดํ•ดํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์›ƒ์œผ์„ธ์š”. ๋‚˜๋Š” ํ™”๋ฅผ ๋‚ด์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ํŽ˜์ด์ง€ ํ•˜๋‹จ์˜ ์˜ˆ๋Š” ์ดํ›„ ๋ด‡์„ ์ƒ์„ฑํ•˜๋Š” ๋™์•ˆ ๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ํฐ ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

3. 100๋ฃจ๋ธ”์˜ ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๋งŽ์€ ๊ฒ€์ƒ‰ ๋์— ์œ„ ๊ทธ๋ฆผ์˜ 'npm' ๋ช…๋ น์ด ๋ช…๋ น์ค„์„ ์˜๋ฏธํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์ค„์€ ์–ด๋””์—๋‚˜ ์žˆ์ง€๋งŒ ์‹คํ–‰ํ•˜๋ ค๋ฉด NodePackageManager๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ChromeOS๊ฐ€ ์„ค์น˜๋œ PixelBook์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋‚ด๊ฐ€ Linux๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐฐ์› ๋Š”์ง€์— ๋Œ€ํ•œ ํฐ ๋ธ”๋ก์„ ๊ฑด๋„ˆ๋›ฐ๊ฒ ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๋น„์–ด ์žˆ๊ณ  ๋ถˆํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Windows๋‚˜ MacBook์ด ์žˆ๋‹ค๋ฉด ์ด๋ฏธ ์ฝ˜์†”์ด ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ Crostini๋ฅผ โ€‹โ€‹ํ†ตํ•ด Linux๋ฅผ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ทธ ๊ณผ์ •์—์„œ ๋ด‡์ด ์ง€์†์ ์œผ๋กœ ์ž‘๋™ํ•˜๋ ค๋ฉด(๋‚ด ์ปดํ“จํ„ฐ๊ฐ€ ์ผœ์ ธ ์žˆ์„ ๋•Œ๋งŒ์ด ์•„๋‹ˆ๋ผ) ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์„ ํƒํ–ˆ๋‹ค vscale.io ๋‚˜๋Š” 100๋ฃจ๋ธ”์„ ์“ฐ๊ณ  ๊ฐ€์žฅ ์ €๋ ดํ•œ Ubuntu ์„œ๋ฒ„๋ฅผ ๊ตฌ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค(๊ทธ๋ฆผ ์ฐธ์กฐ).

๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

4. ๋ด‡์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„ ์ค€๋น„ ๋ฐฉ๋ฒ•

๊ทธ ํ›„, ์„œ๋ฒ„์— ์ฝ”๋“œ ํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ์„ ์ €์žฅํ•  ์ผ์ข…์˜ ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ฝ˜์†”("Open console" ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์›น์‚ฌ์ดํŠธ์—์„œ ์ง์ ‘ ์‹คํ–‰)์— ๋‹ค์Œ์„ ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

mkdir bot

bot - ์ด๊ฒƒ์ด ๋‚ด ํด๋”์˜ ์ด๋ฆ„์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„ npm๊ณผ Node.js๋ฅผ ์„ค์น˜ํ–ˆ๋Š”๋ฐ, ์ด๋ฅผ ํ†ตํ•ด *.js ํ•ด์ƒ๋„์˜ ํŒŒ์ผ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

sudo apt update
sudo apt install nodejs
sudo apt install npm

์ด ๋‹จ๊ณ„์—์„œ๋Š” ์ฝ˜์†”์„ ํ†ตํ•ด ์„œ๋ฒ„์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ๊ต์ˆ˜ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ปดํ“จํ„ฐ ์ฝ˜์†”์„ ํ†ตํ•ด ์ง์ ‘ ์„œ๋ฒ„๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5. ์ฒซ ๋ฒˆ์งธ ๋ด‡์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•.

ํ•˜์ง€๋งŒ ์ด์ œ ๊ทธ๊ฒƒ์€ ๋‚˜์—๊ฒŒ ๋‹จ์ง€ ํ•˜๋‚˜์˜ ๋ฐœ๊ฒฌ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ ๋‹จ์ง€ ํ…์ŠคํŠธ ์ค„์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์–ด๋””์—๋‚˜ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๊ณ , ์›ํ•˜๋Š” ํ™•์žฅ๋ช…์œผ๋กœ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ์ „๋ถ€์ž…๋‹ˆ๋‹ค. ์•„๋ฆ„๋‹ค์šฐ์„ธ์š”. ๋‚˜๋Š” ์‚ฌ์šฉํ–ˆ๋‹ค ์›์ž, ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ํ‘œ์ค€ ๋ฉ”๋ชจ์žฅ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋‚˜์ค‘์— ์›ํ•˜๋Š” ํ™•์žฅ์ž๋กœ ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Word์—์„œ ํ…์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ƒˆ๋กœ์šด ํŒŒ์ผ์„ ๋งŒ๋“ค์—ˆ๊ณ , ์—ฌ๊ธฐ์— telegraf ํŽ˜์ด์ง€์˜ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ณ  index.js ํŒŒ์ผ์— ์ €์žฅํ–ˆ์Šต๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ์ด๋ฆ„์„ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ์ง€์ •ํ•  ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ด๊ฒƒ์ด ๊ด€๋ก€์ž…๋‹ˆ๋‹ค). ์ค‘์š” - BOT_TOKEN ๋Œ€์‹  ๋‘ ๋ฒˆ์งธ ๋‹จ๋ฝ์˜ API ํ‚ค๋ฅผ ์‚ฝ์ž…ํ•˜์„ธ์š”.

const Telegraf = require('telegraf')

const bot = new Telegraf(process.env.BOT_TOKEN)
bot.start((ctx) => ctx.reply('Welcome!'))
bot.help((ctx) => ctx.reply('Send me a sticker'))
bot.on('sticker', (ctx) => ctx.reply(''))
bot.hears('hi', (ctx) => ctx.reply('Hey there'))
bot.launch()

6. github๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์ฝ”๋“œ๋ฅผ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•

์ด์ œ ์–ด๋–ป๊ฒŒ๋“  ์ด ์ฝ”๋“œ๋ฅผ ์„œ๋ฒ„์— ์—…๋กœ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ ํ•˜๋‚˜์˜ ๋„์ „์ด ๋˜์—ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋งŽ์€ ์‹œ๋ จ ๋์— ์ฝ˜์†”์—์„œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ์„ github์— ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋” ์‰ฌ์šธ ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์— ๊ณ„์ •์„ ๋“ฑ๋กํ–ˆ์Šต๋‹ˆ๋‹ค github ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋žฌ๋‹ค ์ƒˆ ํ”„๋กœ์ ํŠธ, ์—ฌ๊ธฐ์— ํŒŒ์ผ์„ ์—…๋กœ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ›„์—๋Š” ๋‚ด ๊ณ„์ •(์—ด๊ธฐ!)์—์„œ ๋ด‡ ํด๋”์˜ ์„œ๋ฒ„๋กœ ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋„๋ก ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋‚ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค(๊ฐ‘์ž๊ธฐ ํด๋”๋ฅผ ๋– ๋‚œ ๊ฒฝ์šฐ CD ๋ด‡์„ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค).

7. Github๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ํŒŒ์ผ์„ ์—…๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ• 2๋ถ€

Git์—์„œ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์„œ๋ฒ„์— ์„ค์น˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฝ˜์†”์— ์ž…๋ ฅํ•˜์—ฌ ์„œ๋ฒ„์— git์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

apt-get install git

๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒŒ์ผ ์—…๋กœ๋“œ๋ฅผ ๊ตฌ์„ฑํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ช…๋ น์ค„์— ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

git clone git://github.com/b0tank/bot.git bot

๊ฒฐ๊ณผ์ ์œผ๋กœ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๋‚ด์šฉ์ด ์„œ๋ฒ„์— ์—…๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋‹จ๊ณ„์˜ ์‹ค์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๋ด‡ ํด๋” ์•ˆ์— ๋‘ ๋ฒˆ์งธ ํด๋”๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŒŒ์ผ ์ฃผ์†Œ๋Š” */bot/bot/index.js์™€ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด ๋ฌธ์ œ๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—์„œ ์š”์ฒญํ•˜๋Š” telegraf ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋กœ๋“œํ•˜๋ ค๋ฉด ์ฝ˜์†”์— ๋ช…๋ น์„ ์ž…๋ ฅํ•˜์„ธ์š”.

npm install telegraf

8. ๋ด‡ ์‹คํ–‰ ๋ฐฉ๋ฒ•

์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด ํŒŒ์ผ์ด ์žˆ๋Š” ํด๋”์— ์žˆ๋Š” ๋™์•ˆ(์ฝ˜์†”์„ ํ†ตํ•ด ํด๋”์—์„œ ํด๋”๋กœ ์ด๋™ํ•˜๋ ค๋ฉด format ๋ช…๋ น์„ ์‹คํ–‰ํ•˜์„ธ์š”) cd bot ํ˜„์žฌ ํ•„์š”ํ•œ ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ˜์†”์— ์žˆ๋Š” ๋ชจ๋“  ํŒŒ์ผ๊ณผ ํด๋”๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ช…๋ น์„ ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ls -a

์‹œ์ž‘ํ•˜๋ ค๋ฉด ์ฝ˜์†”์— ๋“ค์–ด๊ฐ”์Šต๋‹ˆ๋‹ค.

node index.js

์˜ค๋ฅ˜๊ฐ€ ์—†์œผ๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ด๋ฉฐ ๋ด‡์ด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ…”๋ ˆ๊ทธ๋žจ์—์„œ ๊ทธ๋ฅผ ์ฐพ์•„๋ณด์„ธ์š”. ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ 1๋ฒˆ ํ•ญ๋ชฉ์˜ ์ง€์‹์„ ์ ์šฉํ•˜์„ธ์š”.

9. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋ด‡์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋‹น์‹ ์€ ์ฝ˜์†”์— ์•‰์•„ ์žˆ์„ ๋•Œ๋งŒ ๋ด‡์ด ์ž‘๋™ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•„์ฃผ ๋นจ๋ฆฌ ๊นจ๋‹ซ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

screen

๊ทธ๋Ÿฌ๋ฉด ์ผ๋ถ€ ํ…์ŠคํŠธ๊ฐ€ ํฌํ•จ๋œ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๊ดœ์ฐฎ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜๋Š” ํด๋ผ์šฐ๋“œ ์„œ๋ฒ„์˜ ๊ฐ€์ƒ ์„œ๋ฒ„์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋” ์ž˜ ์ดํ•ดํ•˜๋ ค๋ฉด - ์—ฌ๊ธฐ ๊ธฐ์‚ฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋”๋กœ ์ด๋™ํ•˜์—ฌ ๋ช…๋ น์„ ์ž…๋ ฅํ•˜์—ฌ ๋ด‡์„ ์‹œ์ž‘ํ•˜์„ธ์š”.

node index.js

10. ๋ด‡ ์ž‘๋™ ๋ฐฉ์‹ ๋ฐ ๊ธฐ๋Šฅ ํ™•์žฅ ๋ฐฉ๋ฒ•

์˜ˆ์‹œ ๋ด‡์€ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ๋‚˜์š”? ๊ทธ๋Š” ํ•  ์ˆ˜์žˆ๋‹ค

bot.start((ctx) => ctx.reply('Welcome!'))

"ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค!" ์‹œ์ž‘ ์ˆœ๊ฐ„ (ํ…์ŠคํŠธ๋ฅผ ๋ณ€๊ฒฝํ•ด ๋ณด์„ธ์š”)

bot.help((ctx) => ctx.reply('Send me a sticker'))

ํ‘œ์ค€ /help ๋ช…๋ น์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ "์Šคํ‹ฐ์ปค๋ฅผ ๋ณด๋‚ด์ฃผ์„ธ์š”"๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

bot.on('sticker', (ctx) => ctx.reply(''))

์Šคํ‹ฐ์ปค์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์Šน์ธ ๋ณด๋‚ด๊ธฐ

bot.hears('hi', (ctx) => ctx.reply('Hey there'))

๊ทธ ์‚ฌ๋žŒ์—๊ฒŒ "์•ˆ๋…•"์ด๋ผ๊ณ  ์“ฐ๋ฉด "์•ˆ๋…•ํ•˜์„ธ์š”"๋ผ๊ณ  ๋Œ€๋‹ตํ•˜์„ธ์š”
bot.launch()

๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด github, ๊ทธ๋Ÿฌ๋ฉด ๋‚ด๊ฐ€ ์ด ๊ธฐ๋Šฅ์—์„œ ํฌ๊ฒŒ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์•˜๋‹ค๋Š” ๊ฒƒ์„ ๊ธˆ๋ฐฉ ์ดํ•ดํ•˜๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์€ ctx.replyWithPhoto ํŠน์ • ํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ์ง€์ •๋œ ์‚ฌ์ง„์ด๋‚˜ GIF๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ์ƒ๋‹น ๋ถ€๋ถ„์€ ์ œ๊ฐ€ ๋ด‡์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•œ 11~13์„ธ ์–ด๋ฆฐ์ด๊ฐ€ ์ž‘์„ฑํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์‚ฌ์šฉ์ž ์‚ฌ๋ก€๋ฅผ ์ž…๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๋ถ€๋ถ„์ด ์–ด๋Š ๋ถ€๋ถ„์—์„œ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, "Jake"๋ผ๋Š” ๋ฉ”์‹œ์ง€๋Š” ๋งŒํ™” Adventure Time์˜ ์œ ๋ช…ํ•œ ์บ๋ฆญํ„ฐ๊ฐ€ ํฌํ•จ๋œ GIF๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์ด๋“œ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•ด JS๋กœ ๊ฐ„๋‹จํ•œ ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๋ด‡์„ ๋”์šฑ ๋ฐœ์ „์‹œํ‚ค๋ ค๋ฉด ํ‚ค๋ณด๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ

11. ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๋ด‡์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•

Github๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„์—์„œ๋„ ์ฝ”๋“œ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. ์ด๋Š” ์‰ฝ์Šต๋‹ˆ๋‹ค. ๋ด‡์„ ์ค‘์ง€ํ•˜๊ณ (ctrl+c ๋ˆ„๋ฅด๊ธฐ),

- ๋Œ€์ƒ ํด๋”์— ์žˆ๋Š” ๋™์•ˆ ์ฝ˜์†”์— ๋“ค์–ด๊ฐ€์‹ญ์‹œ์˜ค. git pull
โ€” ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ด‡์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. node index.js

END

์ด ํŒŒ์ผ์— ์„ค๋ช…๋œ ๋งŽ์€ ๋‚ด์šฉ์€ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋จธ์—๊ฒŒ๋Š” ๋งค์šฐ ๋ถ„๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚˜ ์ž์‹ ์ด ํ‹ˆ์„ ๋›ฐ์–ด ๋„˜์–ด ๋ด‡์˜ ์„ธ๊ณ„๋กœ ๋‹จ๋ฒˆ์— ๋›ฐ์–ด ๋‚ด๋ ค๊ณ ํ–ˆ์„ ๋•Œ ๊ทธ๋Ÿฐ ๊ฐ€์ด๋“œ๊ฐ€ ์ •๋ง ๊ทธ๋ฆฌ์›Œ์กŒ์Šต๋‹ˆ๋‹ค. IT ์ „๋ฌธ๊ฐ€๋ผ๋ฉด ๋ˆ„๊ตฌ๋‚˜ ๋‹น์—ฐํ•˜๊ณ  ๊ฐ„๋‹จํ•œ ๊ฒƒ๋“ค์„ ๋†“์น˜์ง€ ์•Š๋Š” ์•ˆ๋‚ด์„œ.

์•ž์œผ๋กœ ๊ฐ™์€ ์Šคํƒ€์ผ๋กœ ReactNative์—์„œ ์ฒซ ๋ฒˆ์งธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฒŒ์‹œ๋ฌผ์„ ๊ณ„ํš ์ค‘์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€