JavaRush /جاوا بلاگ /Random-UR /اسپرنگ بوٹ کا استعمال کرتے ہوئے ٹیلیگرام بوٹ بنانا
Whiskels
سطح
Москва

اسپرنگ بوٹ کا استعمال کرتے ہوئے ٹیلیگرام بوٹ بنانا

گروپ میں شائع ہوا۔
سب کو سلام! اپنی پڑھائی کے کسی موقع پر، آپ مسائل کو حل کرنے سے حقیقی پروجیکٹس کی طرف جانا چاہتے ہیں جو آپ کے پورٹ فولیو کی بنیاد بنیں گے۔ جب میں نے اپنی انٹرنشپ شروع کی (جس کی میں سب کو بہت زیادہ سفارش کرتا ہوں)، مجھے ایک فری لانس کے طور پر ٹیلیگرام بوٹ لکھنے کی پیشکش موصول ہوئی۔ اپنی کم علمی کی وجہ سے، میں نے کافی آسان بوٹ لکھا ( اسپرنگ میں ہجرت کرنے سے پہلے آخری کمٹ )، جس میں تین تھریڈز تھے:
  • پیغام وصول کرنے والا دھاگہ؛
  • پیغام بھیجنے والا دھاگہ؛
  • ایونٹ کا شیڈولنگ تھریڈ (اس نے JSON سے طے شدہ پیغامات اور اپ ڈیٹ شدہ کیشڈ ڈیٹا کی جانچ کی ہے)۔
اس فعالیت کو لکھتے وقت، میں نے اس مضمون پر بہت زیادہ انحصار کیا ۔ ہر چیز نے بہت اچھی طرح سے کام کیا، لیکن میں نے بہار میں جتنا گہرائی میں غوطہ لگایا، اتنا ہی میں پروگرام کی ہم آہنگی کو کم کرنے اور کوڈ کے معیار کو بہتر بنانے کے لیے ہر چیز کو ری فیکٹر کرنا چاہتا تھا۔ سونار لِنٹ (کوڈ کے معیار کو خود بخود جانچنے کا ایک پلگ ان) مجھے یہ باور کرانے کی کوشش کرتا رہا کہ لوپ کے دوران لامتناہی ہونا بہت اچھا نہیں ہے۔ کسی موقع پر، میں نے اپنا ذہن بنا لیا اور سب کچھ دوبارہ لکھا، اور اب میں آپ کے ساتھ ری فیکٹرنگ کے عمل کے دوران حاصل کردہ علم کا اشتراک کرنا چاہتا ہوں۔ آئیے بنیادی باتوں کے ساتھ شروع کریں، اور خاص طور پر - TelegramBots-Spring-Boot-Starter کے ساتھ تو، چلیں! آئیے ایک بوٹ بنائیں جو کسی بھی پیغام کے جواب میں ہیلو کہے۔ سب سے پہلے، ہمیں ایک نیا Maven پروجیکٹ بنانے کی ضرورت ہے۔ آئیے pom.xml میں ضروری انحصار شامل کریں۔ جاوا اور ٹیلیگرام بوٹس-اسپرنگ-بوٹ-اسٹارٹر ورژن پراپرٹیز میں شامل کریں۔ اور ہم انحصار کو رجسٹر کرتے ہیں - یہاں ہمارے پاس پہلے سے ہی مذکورہ بالا 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
درجہ بندی کی نشاندہی ہمیں تکرار سے بچنے اور پڑھنے کی اہلیت کو بہتر بنانے کی اجازت دیتی ہے۔ اگر آپ نے ابھی تک بوٹ نہیں بنایا ہے، تو آپ آفیشل ہدایات پر عمل کرکے ایک بوٹ بنا سکتے ہیں ۔ اگر آپ 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 تشریحات کے جنگلات میں غوطہ لگانا چاہوں گا، لیکن پہلے میں نے سوچا کہ اس گائیڈ کو لکھنا مناسب ہوگا کہ عام طور پر Spring Boot کا استعمال کرتے ہوئے بوٹ کیسے بنایا جائے۔ بوٹس پر پہلے ہی کئی مضامین لکھے جا چکے ہیں، لیکن تلاش میں ایسا کوئی گائیڈ سامنے نہیں آیا، اس لیے میں نے اس جگہ کو بھرنے کا فیصلہ کیا :) میں میروہا کا بھی ذکر کرنا چاہوں گا - اپ ڈیٹ ہینڈلرز کے خیال کے لیے شکریہ، میں نے اسے چوری کیا میں خود :) حصہ 2 حصہ 3
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION