JavaRush /Java Blog /Random-KO /Telegram Ability Bot: ๋Œ€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡
Chundrik
๋ ˆ๋ฒจ 35
ะกะฐะฝะบั‚-ะŸะตั‚ะตั€ะฑัƒั€ะณ

Telegram Ability Bot: ๋Œ€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
๋ด‡์€ ํฅ๋ฏธ๋กœ์šธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…ํ•˜๋Š” ๋™์•ˆ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์ž‘๋™ํ•˜๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ทธ ๊ณผ์ •์—์„œ ๋žŒ๋‹ค, Git ๋ฐ Heroku์— ์ต์ˆ™ํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ด‡์„ ๋งŒ๋“ค ๋•Œ ๋‹จ์ˆœํ•œ ์—์ฝ” ๋ด‡๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋ณต์žกํ•œ ๊ฒƒ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ข€ ๋” ํ•ฉ๋ฆฌ์ ์ธ ๊ฒƒ์„ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์‹ค์ œ ๋Œ€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ฑ„๋„, ์„ ํƒํ•œ ๋‹ต๋ณ€์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์ด ๋ณ€๊ฒฝ๋˜๋Š” ์ฑ„๋„์„ ์›ํ–ˆ์Šต๋‹ˆ๋‹ค. 2์ฃผ ๋™์•ˆ ์ง„ํ–‰๋œ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ณ , ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์—์„œ ํฐ ์–ด๋ ค์›€์„ ๊ฒช์—ˆ๊ธฐ ๋•Œ๋ฌธ์— Heroku ๋ฐฐํฌ์— ํŠนํžˆ ์ฃผ์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ…”๋ ˆ๊ทธ๋žจ ๋Šฅ๋ ฅ ๋ด‡: ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡ - 1

๋“ฑ๋ก

์‹œ์ž‘ํ•˜๋ ค๋ฉด ๋ด‡์„ ๋“ฑ๋กํ•˜๊ณ  ๋‚˜์ค‘์— ํ•„์š”ํ•œ ์ด๋ฆ„๊ณผ ํ† ํฐ์„ ๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ด๋Š” ์–ด๋ ต์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Telegram์„ ์—ด๊ณ  @BotFather๋ฅผ ์ฐพ์•„ /start๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ ๋ช…๋ น ๋ชฉ๋ก์„ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. /newbot์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ์ง€์ •ํ•œ ๋‹ค์Œ -bot์œผ๋กœ ๋๋‚˜์•ผ ํ•˜๋Š” ์‚ฌ์šฉ์ž ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: Consequences1Bot). ์‚ฌ์šฉ์ž ์ด๋ฆ„์€ ๋…์ฐฝ์ ์ด์–ด์•ผ ํ•˜๋ฏ€๋กœ ์—ฌ๊ธฐ์„œ๋Š” ์ƒ์ƒ๋ ฅ์„ ๋ฐœํœ˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์œผ๋กœ BotFather๋Š” ์ฆ‰์‹œ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ข‹์€ ํ† ํฐ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

์‹œ์ž‘

Telegram Ability Bot: ๋Œ€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡ - 2์‹œ์ž‘ํ•˜๋ ค๋ฉด Maven ํ”„๋กœ์ ํŠธ, Java 8 ๋ฐ Intelliji Idea Ultimate๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Insert pom.xml: Telegram Ability Bot: ๋Œ€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡ - 3์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ๋‚˜ํƒ€๋‚˜๋Š” Load Maven ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋Š” ๊ฒƒ์„ ์žŠ์ง€ ๋งˆ์„ธ์š”. ๋˜ํ•œ Java 8 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ์ด๋Š” ํŒŒ์ผ --> ํ”„๋กœ์ ํŠธ ์„ค์ • --> ํ”„๋กœ์ ํŠธ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํด๋”์—์„œ src.main.java๋ด‡ ์ด๋ฆ„์œผ๋กœ ํ•˜์œ„ ํด๋”๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ œ ๊ฒฝ์šฐ์—๋Š” package ์ž…๋‹ˆ๋‹ค example.TelegramBot. TelegramBot๋จผ์ € ๋ฅผ ์ƒ์†๋ฐ›๋Š” ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค AbilityBot. Idea์—์„œ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ฐ‘์ค„์„ ๊ทธ์œผ๋ฉด ํด๋ž˜์Šค ๊ฐ€์ ธ์˜ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. AbilityBot์—๋Š” ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค creatorId().

@Override
    public int creatorId() {
        return Constants.CREATOR_ID;
    }
๋˜ํ•œ ๋‘ ๊ฐœ์˜ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” ์ธ์ˆ˜๊ฐ€ ์—†๊ณ , ๋‘ ๋ฒˆ์งธ ์ƒ์„ฑ์ž๋Š” ์Šˆํผํด๋ž˜์Šค ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

public TelegramBot() {
        this(Constants.BOT_TOKEN, Constants.BOT_USERNAME);
    }
    private TelegramBot(String botToken, String botUsername) {
        super(botToken, botUsername);
    }
Constans์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ๋ณ€ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด๊ณผ ID ๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๊ท€์ฐฎ๊ฒŒ ๋ฉ”์ธ ๋ฌธ์„œ์— ๋ชจ๋“  ๊ฒƒ์„ ๋‚จ๊ฒจ๋‘˜ ํ•„์š”๋Š” ์—†์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ํ›จ์”ฌ ๋” ๋ช…ํ™•ํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค Constans. String BOT_TOKEN์ฒซ ๋ฒˆ์งธ ๋ณ€์ˆ˜๋Š” (BotFather๊ฐ€ ๋ณด๋‚ธ ํ† ํฐ) String BOT_USERNAME๋ฐ ์ž…๋‹ˆ๋‹ค int CREATOR_ID. ์ถ”๊ฐ€ ๋ณด์•ˆ์„ ์œ„ํ•ด ์ œ์ž‘์ž ID๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž ์‹œ ํ›„์— ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๋‹ค

๋ด‡์„ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ฝ”๋“œ๊ฐ€ ํฌํ•จ๋œ Application๋ฉ”์„œ๋“œ๋ฅผ ํฌํ•จํ•  ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค .main()Telegram Ability Bot: ๋Œ€ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ด‡ - 4

public class Application {

    public static void main(String[] args) {
        // Initializes dependencies necessary for the base bot
        ApiContextInitializer.init();

        // Create the TelegramBotsApi object to register your bots
        TelegramBotsApi botsApi = new TelegramBotsApi();

        try {
            // Register your newly created AbilityBot
            FitnessBot bot = new FitnessBot();
            botsApi.registerBot(bot);

        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }
}
์ด์ œ ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ์—์„œ ๋ด‡์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์–ด๋–ค ์ž‘์—…๋„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์นจ๋ฌต๋งŒ์ด ๋‹น์‹ ์˜ ๋Œ€๋‹ต์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์ŒํŽธ์—์„œ๋Š” ์ด๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 2 ๋ถ€
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION