سب کو سلام! اپنی پڑھائی کے کسی موقع پر، آپ مسائل کو حل کرنے سے حقیقی پروجیکٹس کی طرف جانا چاہتے ہیں جو آپ کے پورٹ فولیو کی بنیاد بنیں گے۔ جب میں نے اپنی انٹرنشپ شروع کی (جس کی میں سب کو بہت زیادہ سفارش کرتا ہوں)، مجھے ایک فری لانس کے طور پر ٹیلیگرام بوٹ لکھنے کی پیشکش موصول ہوئی۔ اپنی کم علمی کی وجہ سے، میں نے کافی آسان بوٹ لکھا ( اسپرنگ میں ہجرت کرنے سے پہلے آخری کمٹ )، جس میں تین تھریڈز تھے:
اور Telegram API موجود ہوں گے : TelegramBots-Spring-Boot-Starter لائبریری میں Spring Boot اور Telegram API شامل ہیں۔ اسے استعمال کرنے سے ہمیں اپنے کوڈ میں ایک بوٹ کا اعلان کافی آسان طریقے سے کرنے کی اجازت ملتی ہے، اور بہار خود بین بنائے گا اور بوٹ کو چالو کرے گا۔ اگر آپ اس میں دلچسپی رکھتے ہیں کہ اس وقت ہڈ کے نیچے کیا ہو رہا ہے، تو لائبریری کے ذرائع (ترقیاتی ماحول میں یا Github پر ) دیکھیں۔ ہم تالیف کے پیرامیٹرز بھی شامل کرتے ہیں: پوم کو پُر کرنے کے بعد تمام انحصار کو اپ ڈیٹ کرنا نہ بھولیں! آئیے دو کلاسز بنائیں - ایپ اور بوٹ کے ساتھ ساتھ وسائل کے فولڈر میں ایک application.yaml فائل۔ میرے پروجیکٹ کا ڈھانچہ اس طرح لگتا ہے: اس مرحلے پر، آئیے application.yaml میں اپنے بوٹ کی اسناد شامل کریں:
- پیغام وصول کرنے والا دھاگہ؛
- پیغام بھیجنے والا دھاگہ؛
- ایونٹ کا شیڈولنگ تھریڈ (اس نے JSON سے طے شدہ پیغامات اور اپ ڈیٹ شدہ کیشڈ ڈیٹا کی جانچ کی ہے)۔
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);
}
}
اگر ہم نے سب کچھ صحیح طریقے سے کیا، تو ہم مین چلا سکتے ہیں اور اپنے بوٹ کو ہیلو کہہ سکتے ہیں۔ تیار! ہم نے کامیابی کے ساتھ ایک ٹیلیگرام بوٹ لکھا اور لانچ کیا ہے جو ہر آنے والے پیغام کو ہیلو کہتا ہے۔ اگر یہ مضمون آپ کے لیے مفید تھا، تو بہترین شکریہ اگر آپ میرے ذخیرے کو دیکھیں اور ایک ستارہ چھوڑ دیں۔ وہاں آپ کو ٹیلیگرام بوٹ کا میرا ورژن بھی ملے گا، جس میں بہت سی دلچسپ خصوصیات ہیں:
- پوسٹگریس ڈیٹا بیس میں صارفین کو ذخیرہ کرنا؛
- صارف کے کردار کی بنیاد پر کمانڈز تک رسائی کی اجازت؛
- پیغام ہینڈلرز بنانے اور صارف کے حقوق کی جانچ کرنے کے لیے حسب ضرورت تشریحات @BotCommand اور @RequiredRoles کا استعمال؛
- نوٹیفکیشن شیڈول بنانے کے لیے سپورٹ۔
GO TO FULL VERSION