JavaRush /جاوا بلاگ /Random-SD /اسپرنگ بوٽ استعمال ڪندي ٽيليگرام بوٽ ٺاهڻ
Whiskels
سطح
Москва

اسپرنگ بوٽ استعمال ڪندي ٽيليگرام بوٽ ٺاهڻ

گروپ ۾ شايع ٿيل
هيلو سڀ! توهان جي پڙهائي ۾ ڪجهه نقطي تي، توهان حقيقي منصوبن ٺاهڻ لاء مسئلا حل ڪرڻ کان منتقل ٿيڻ چاهيو ٿا جيڪي توهان جي پورٽ فوليو جو بنياد بڻجي ويندا. جڏهن مون پنهنجي انٽرنيشنل شپ شروع ڪئي (جنهن جي آئون هر ڪنهن کي سفارش ڪريان ٿو)، مون کي هڪ ٽيليگرام بوٽ لکڻ جي آڇ ملي ٿي هڪ فري لانسر جي طور تي. منهنجي ٿوري ڄاڻ جي ڪري، مون هڪ بلڪل سادو ٻوٽو لکيو ( آخري انجام بهار ڏانهن لڏپلاڻ کان اڳ )، جنهن ۾ ٽي موضوع هئا:
  • پيغام وصول ڪرڻ وارو سلسلو؛
  • پيغام موڪلڻ وارو سلسلو؛
  • ايونٽ شيڊيولنگ ​​ٿريڊ (اهو شيڊول ٿيل پيغامن لاءِ چيڪ ڪيو ويو ۽ JSON کان ڪيش ڪيل ڊيٽا کي اپڊيٽ ڪيو ويو).
جڏهن هي فنڪشنلٽي لکڻ، مون هن مضمون تي تمام گهڻو انحصار ڪيو . سڀ ڪجھ ٺيڪ ڪم ڪيو، پر جيتري قدر مون بهار ۾ گھيرو ڪيو، اوترو ئي مون پروگرام جي مطابقت کي گھٽائڻ ۽ ڪوڊ جي معيار کي بهتر بڻائڻ لاءِ سڀ ڪجھ ريفيڪٽر ڪرڻ گھريو. سونار لِنٽ (ڪوڊ جي معيار کي پاڻمرادو جانچڻ لاءِ هڪ پلگ ان) مون کي قائل ڪرڻ جي ڪوشش ڪندو رهيو ته اهو تمام سٺو ناهي ته لامحدود رهڻ دوران لوپ. ڪجهه نقطي تي، مون پنهنجو ذهن ٺاهيو ۽ هر شي کي ٻيهر لکي ڇڏيو، ۽ هاڻي مان توهان سان حصيداري ڪرڻ چاهيان ٿو جيڪا ڄاڻ حاصل ڪئي وئي جيڪا مون ريفيڪٽرنگ جي عمل دوران حاصل ڪئي. اچو ته بنيادي ڳالهين سان شروع ڪريون، ۽ خاص طور تي - TelegramBots-Spring-Boot-Starter سان ، اچو ته هلون! اچو ته هڪ بوٽ ٺاهيو جيڪو ڪنهن به پيغام جي جواب ۾ هيلو چوندو. پهرين، اسان کي هڪ نئين Maven پروجيڪٽ ٺاهڻ جي ضرورت آهي. اچو ته pom.xml ۾ ضروري انحصار شامل ڪريون. جاوا ۽ TelegramBots-Spring-Boot-Starter ورجن کي ملڪيتن ۾ شامل ڪريو. ۽ اسان انحصار رجسٽر ڪريون ٿا - هتي اسان وٽ اڳ ۾ ئي مٿي ذڪر ڪيل TelegramBots-Spring-Boot-Starter ۽ Telegram API هوندو : اسپرنگ بوٽ استعمال ڪندي ٽيليگرام بوٽ ٺاهڻ - 1TelegramBots-Spring-Boot-Starter لائبريري ۾ Spring Boot ۽ Telegram API شامل آهن. ان کي استعمال ڪرڻ اسان کي اجازت ڏئي ٿو ته اسان جي ڪوڊ ۾ هڪ بوٽ جو اعلان بلڪل سادي طريقي سان، ۽ بهار پاڻ کي بين ٺاهي ۽ بوٽ کي چالو ڪندو. جيڪڏهن توهان دلچسپي وٺندا آهيو ته هن وقت هود هيٺ ڇا ٿي رهيو آهي، پوء لائبريري ذريعن کي ڏسو (ترقي جي ماحول ۾ يا Github تي ). اسان تاليف جا پيرا ميٽر پڻ شامل ڪندا آهيون: اسپرنگ بوٽ استعمال ڪندي ٽيليگرام بوٽ ٺاهڻ - 2 پوم ڀرڻ کان پوءِ سڀني انحصار کي اپڊيٽ ڪرڻ نه وساريو! اچو ته ٻه طبقا ٺاهيون - ايپ ۽ بوٽ، گڏوگڏ وسيلن جي فولڊر ۾ هڪ application.yaml فائل. منهنجي پروجيڪٽ جي جوڙجڪ هن طرح ڏسڻ ۾ اچي ٿي: اسپرنگ بوٽ استعمال ڪندي ٽيليگرام بوٽ ٺاهڻ - 3هن اسٽيج تي، اچو ته اسان جي بوٽ جي سند کي شامل ڪريون application.yaml:
bot:
  name: JavaRushTelegramBot
  token: 22313424:AAF4gck4D8gDhq68E7k0UH8vlyQADhxQhYo
درجه بندي نوٽيفڪيشن اسان کي ورجائڻ کان پاسو ڪرڻ جي اجازت ڏئي ٿي (bot.name، bot.token) ۽ پڙهڻ جي صلاحيت کي بهتر. جيڪڏهن توهان اڃا تائين ڪو بوٽ نه ٺاهيو آهي، توهان هڪ ٺاهي سگهو ٿا سرڪاري هدايتن تي عمل ڪندي . جيڪڏھن توھان نٿا چاھيو ته bot جي سندن کي application.yaml ۾ ڏيکاريو (جيڪو صحيح آھي)، استعمال ڪريو ماحوليات متغير جڏھن ترتيب ڏيو:
bot:
  name: ${BOT_NAME}
  token: ${BOT_TOKEN}
بوٽ ڪلاس کي ڀرڻ:
package com.whiskels.telegram.bot;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;

// Аннотация @Component необходима, чтобы наш класс распознавался Spring, How полноправный Bean
@Component
// Наследуемся от TelegramLongPollingBot - абстрактного класса Telegram API
public class Bot extends TelegramLongPollingBot {
    // Аннотация @Value позволяет задавать meaning полю путем считывания из application.yaml
    @Value("${bot.name}")
    private String botUsername;

    @Value("${bot.token}")
    private String botToken;

    /* Перегружаем метод интерфейса LongPollingBot
    Теперь при получении messages наш бот будет отвечать сообщением Hi!
     */
    @Override
    public void onUpdateReceived(Update update) {
        try {
            execute(new SendMessage().setChatId(update.getMessage().getChatId())
            .setText("Hi!"));
        } catch (TelegramApiException e) {
            e.printStackTrace();
        }
    }

    // Геттеры, которые необходимы для наследования от TelegramLongPollingBot
    public String getBotUsername() {
        return botUsername;
    }

    public String getBotToken() {
        return botToken;
    }
}
ايپ ڪلاس ۾ ڀريو:
package com.whiskels.telegram;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.telegram.telegrambots.ApiContextInitializer;

// Аннотация, которая объединяет в себя @Configuration, @EnableAutoConfiguration, @ComponentScan
@SpringBootApplication
public class App {
    public static void main(String[] args) {
        // Здесь code написан по заветам
        // https://github.com/rubenlagus/TelegramBots/tree/master/telegrambots-spring-boot-starter
        ApiContextInitializer.init();

        SpringApplication.run(App.class, args);
    }
}
جيڪڏهن اسان سڀ ڪجهه صحيح طريقي سان ڪيو، ته پوء اسان هلائي سگهون ٿا مکيه ۽ اسان جي بوٽ کي هيلو چئي سگهون ٿا. اسپرنگ بوٽ استعمال ڪندي ٽيليگرام بوٽ ٺاهڻ - 4تيار! اسان ڪاميابي سان لکيو آهي ۽ هڪ ٽيليگرام بوٽ شروع ڪيو آهي جيڪو هر ايندڙ پيغام کي هيلو چوي ٿو. جيڪڏهن هي مضمون توهان لاء ڪارائتو هو، ته پوء بهترين شڪرگذار ٿيندو جيڪڏهن توهان منهنجي مخزن کي ڏسو ۽ هڪ اسٽار ڇڏي ڏيو. اتي توهان کي ٽيليگرام بوٽ جو منهنجو نسخو پڻ ملندو، جنهن ۾ ڪيتريون ئي دلچسپ خاصيتون آهن:
  • پوسٽ گريس ڊيٽابيس ۾ صارفين کي محفوظ ڪرڻ؛
  • صارف جي ڪردار جي بنياد تي حڪمن تائين رسائي جي اختيار؛
  • ميسيج هينڊلر ٺاهڻ ۽ صارف جي حقن جي جانچ ڪرڻ لاءِ حسب ضرورت بيانن جو استعمال @BotCommand ۽ @RequiredRoles؛
  • نوٽيفڪيشن شيڊول ٺاهڻ لاءِ سپورٽ.
جيڪڏهن هن فنڪشنلٽي مان ڪا به توهان جي دلچسپي آهي، تبصرن ۾ لکو، ۽ مان يا ته جواب ڏيڻ جي ڪوشش ڪندس يا هڪ تفصيلي مضمون لکندس ان کي ٻيهر ڪيئن ٺاهيو. PS هي منهنجو پهريون مضمون آهي JavaRush تي، ۽ مان اسپرنگ JPA ۽ @Scheduled annotations جي جهنگلن ۾ غوطا هڻڻ چاهيان ٿو، پر پهريان مون سوچيو ته هي گائيڊ لکڻ جي قابل هوندو ته ڪيئن عام طور تي اسپرنگ بوٽ استعمال ڪندي بوٽ ٺاهيو وڃي. بوٽن تي ڪيترائي مضمون اڳ ۾ ئي لکيا ويا آهن، پر ڳولا اهڙي رهنمائي نه ڪئي، تنهنڪري مون هن جڳهه کي ڀرڻ جو فيصلو ڪيو :) مان پڻ ميروها جو ذڪر ڪرڻ چاهيندس - UpdateHandlers جي خيال لاء مهرباني، مون ان لاء چوري ڪيو مان پاڻ :) حصو 2 حصو 3
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION