سلام، منهنجا پيارا دوست. ها، ها، بلڪل دوستو. آئون اڳي ئي آرٽيڪل جي هن سلسلي سان ايترو واقف ٿي چڪو آهيان ته اهي ماڻهو جيڪي باقاعده تبصرن ۾ پنهنجو شڪرگذار لکندا آهن ۽/يا ڏيکاريندا آهن ته انهن مواد کي پڙهيو ۽ سمجهي ورتو آهي، اڳ ۾ ئي ويجهو ٿي چڪا آهن. تون ۽ مان ٻن طرفن کان هڪ ئي مقصد ڏانهن وڌي رهيا آهيون. توهان سمجهڻ چاهيو ٿا، پر مان وضاحت ڪرڻ چاهيان ٿو. ۽ اسان وٽ هڪ ئي آخري مقصد آهي - هڪ لکت واري درخواست جيڪا توهان کي شروع کان آخر تائين سمجهي سگهجي ٿي. توهان شايد اڳ ۾ ئي ٻڌو آهي گهڻو ڪجهه جيڪو آئون هن مضمون ۾ بيان ڪندس. مان نه ٿو سمجهان ته مان توهان کي ڪا نئين ۽ غير معمولي ڳالهه ٻڌايان (پر پروجيڪٽ جي فريم ورڪ ۾ اهو ضروري آهي ته اهو ڄاڻڻ / ورجائي). بهار ۾ مون پنهنجي لاءِ هڪ بوٽ لکيو، تنهنڪري اسان ان جي ”نمونين“ تي ڀروسو ڪنداسين.
اسان لکون ٿا JRTB-2
اسان اهو ئي ڪنداسين جيئن اسان آرٽيڪل ۾ ڪيو JRTB-0 ٽاسڪ سان :- اسان ctrl + t ميلاپ استعمال ڪندي مقامي پروجيڪٽ ۾ مکيه شاخ کي اپڊيٽ ڪيو .
- مکيه شاخ جي بنياد تي، اسان ٺاهيندا آهيون:
- بوٽ شامل ڪريو.
- اسان هڪ نئين وابستگي ٺاهيندا آهيون وضاحت سان جيڪو ڪيو ويو آهي ۽ ان کي دٻايو GitHub.
- مکيه شاخ لاء پل درخواست ٺاهيو ۽ ان کي ٻيهر چيڪ ڪريو. اسان انتظار ڪري رهيا آهيون تعمير جي ذريعي وڃڻ لاء (گٿب ڪارناما)، ان کي مکيه شاخ ۾ ضم ڪريو.
- لاڳاپيل ڪم کي بند ڪريو.
ٽيليگرام بوٽ ڇا آهي
اسان، ڊولپرز، تصور ڪري سگھون ٿا ٽيليگرام بوٽ سان ڪم ڪرڻ جهڙو: اسان انهن جي ڪلائنٽ کي انهن سان ڪم ڪرڻ لاءِ استعمال ڪندا آهيون. اسان وٽ ڪم لاءِ تيار ڪيل لائبريري آهي. عملن جو هڪ سيٽ آهي جنهن کان پوءِ ٽيليگرام بوٽ کي معلوم ٿيندو ته اهو اسان جي پروگرام سان لاڳاپيل آهي. ۽ اڳ ۾ ئي پروگرام جي اندر، اسان سکندا سين ته ڪيئن خط، حڪم حاصل ڪرڻ ۽ ڪنهن به طريقي سان انهن کي پروسيس ڪيو وڃي. ٽيليگرام بوٽن ۾ هڪ حڪم وانگر هڪ شيء آهي : اهو هڪ سليش سان شروع ٿئي ٿو "/". ان کان پوء، اسان فوري طور تي لفظ گڏ لکندا آهيون، ۽ اهو هڪ حڪم سمجهيو ويندو. مثال طور، اتي ٻه حڪم آهن ته هرڪو ڄاڻڻ گهرجي:- /start - بوٽ سان ڪم ڪرڻ شروع ڪريو؛
- / اسٽاپ - بوٽ سان ڪم ختم ڪريو.
BotFather سان هڪ بوٽ ٺاهيو
هڪ بوٽ کي ڳنڍڻ لاء، توهان کي پهريان ان کي ٺاهڻ جي ضرورت آهي. ٽيليگرام جو هڪ طريقو آهي - هڪ بوٽ ٺاهي پنهنجي منفرد نالي سان. اهو پڻ هڪ ٽوڪن سان گڏ هوندو (هڪ وڏو اسٽرنگ جيڪو پاسورڊ وانگر ڪم ڪندو آهي). مون اڳ ۾ ئي JavaRush - @javarush_community_bot لاءِ هڪ بوٽ ٺاهيو آهي . هي بوٽ اڃا تائين خالي آهي ۽ ڪجهه به نٿو ڪري سگهي. اصل ڳالهه اها آهي ته نالي جي آخر ۾ _bot هجڻ گهرجي . اهو ڏيکارڻ لاءِ ته اهو ڪيئن ڪجي، مان هڪ بوٽ ٺاهيندس جنهن تي اسان پنهنجي ڪارڪردگيءَ جي جانچ ڪنداسين. حقيقي منصوبن جي لحاظ کان، اهو هڪ امتحان وارو ماحول هوندو. ۽ اسان جو مکيه ھڪڙو پروڊ ماحول ھوندو (پروڊ - پيداوار، اھو آھي، حقيقي ماحول جنھن تي منصوبي تي عمل ڪيو ويندو). يقينن، اهو ممڪن ٿيندو ته ٻيو ماحول شامل ڪيو وڃي - هڪ سينڊ باڪس ماحول: هڪ عام سينڊ باڪس، وڌيڪ تبديل ٿيندڙ ۽ سڀني ترقياتي شرڪت ڪندڙن لاءِ پهچ. پر اهو صرف منصوبي جي ٺهڻ واري مرحلي ۾ صورتحال کي پيچيده ڪندو. ھاڻي، اچو ته ٽيسٽ لاءِ ۽ سينڊ باڪس ماحول لاءِ ٻه وڌيڪ بوٽ ٺاھيون. پهريون قدم اهو آهي ته ٽيليگرام ۾ ئي هڪ بوٽ ٺاهي (رجسٽر). اسان کي bot ڳولڻ جي ضرورت آهي: @BotFather ۽ ان تي حڪم لکو: /newbot اڳيون، اسان کي هن بوٽ کي نالو ڏيڻ لاءِ چيو ويندو. جيئن ته هي هڪ بوٽ آهي ٽيسٽنگ ڪمن لاءِ، ان جو نالو مناسب ٿيندو: [TEST] JavarushBot هاڻي اهو وقت آهي ته هڪ منفرد نالو ڏنو وڃي جنهن سان اهو هميشه ڳولهي سگهجي - ان جو يوزر نالو: test_javarush_community جيئن مون مٿي چيو، توهان کي _bot شامل ڪرڻ جي ضرورت آهي يوزرنيم لاءِ لاڳاپو، تنهنڪري اسان ٻيهر لکون ٿا: test_javarush_community_bot ۽ اهو ئي آهي! بوٽ ٺاهي وئي آهي. ھاڻي، استعمال ڪندڙ نالو ۽ ٽوڪن استعمال ڪندي، اھو اسان جي منصوبي سان ڳنڍجي سگھي ٿو. يقينن، ٽيسٽ سرور جي هموار آپريشن لاءِ، مان عوام کي ڏسڻ لاءِ هن بوٽ جو ٽوڪن (لازمي طور تي بوٽ تائين رسائي لاءِ پاسورڊ) ظاهر نه ڪندس.اسان بوٽ کي منصوبي سان ڳنڍيندا آهيون
اسان لائبريري کي معمول وانگر شامل نه ڪنداسين، پر فوري طور تي اسان جي کنڊر جو فائدو وٺنداسين - اسپرنگ بوٽ. هن وٽ اهڙي شيءِ آهي جيئن اسٽارٽر. لائبريري شامل ڪرڻ سان، اسان ان کي استعمال ڪري سگھون ٿا ته SpringBoot کي خبر ڏيو ته اسان پروجيڪٽ کي صحيح ترتيب ڏيڻ چاهيون ٿا. جيڪڏهن اسان معمول جي رستي تي وڃون ٿا، جيڪو ڪيترن ئي هنڌن تي بيان ڪيو ويو آهي، اسان کي ڪنهن جاء تي هڪ ترتيب ٺاهڻ جي ضرورت پوندي جيڪا هن وانگر هوندي:ApiContextInitializer.init();
TelegramBotsApi telegramBotsApi = new TelegramBotsApi();
try {
telegramBotsApi.registerBot(Bot.getBot());
} catch (TelegramApiRequestException e) {
e.printStackTrace();
}
هتي هڪ اعتراض ٺهيل آهي جنهن سان توهان بوٽ سان ڪنيڪشن قائم ڪري سگهو ٿا. اسان جي حالت ۾، اسٽارٽر جنهن کي اسان ڳنڍڻ چاهيون ٿا اهو سڀ ڪجهه اسان لاءِ ڪٿي نه ڪٿي ڪندو ”هيٺ هيٺان“ (اهو پڻ IT ۾ اڪثر استعمال ٿيندڙ جملي جو ترجمو آهي - هيٺ هوڊ). هتي هن اسٽارٽر لاء هڪ لنڪ آهي . توهان فوري طور تي README.md فائل مان ڏسي سگهو ٿا ته اهو ڇا آهي، ڇو ۽ ڪيئن استعمال ڪجي. ان کي ڳنڍڻ لاء، توهان کي صرف ميموري ۾ هن انحصار کي شامل ڪرڻ جي ضرورت آهي. اهو سڀ ڪجهه آهي :) هتي گهربل انحصار آهي:
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-spring-boot-starter</artifactId>
<version>5.0.1</version>
</dependency>
اسان ان کي اسان جي ياداشت ۾ شامل ڪيو. اسان نسخو انسٽال ڪيو جيئن توقع ڪئي وئي ۽ تازه ڪاري ڪيو Maven پروجيڪٽ. وضاحت جي بنياد تي، اسان کي صرف هڪ نئون ڪلاس ٺاهڻو پوندو، TelegramLongPollingBot کان ورثي ۾ ۽ هن طبقي کي اسان جي اسپرنگ بوٽ جي ايپليڪيشن جي حوالي سان شامل ڪريو. Application Context اها جڳهه آهي جتي پروجيڪٽ کي هلائڻ لاءِ ٺاهيل شيون محفوظ ڪيون وينديون آهن. ڪلاس شامل ڪرڻ لاءِ، توھان کي ھڪڙي تشريح استعمال ڪرڻ جي ضرورت آھي: @Component، @Service، @Repository، @Controller. يا @Bean تشريح جيڪڏهن ٺهيل طريقي سان ترتيب واري ڪلاس ۾ ٺاهيو وڃي (يعني هڪ ڪلاس ۾ جنهن کي ترتيب ڏنل تشريح سان نشان لڳايو ويو آهي). مان سمجهان ٿو ته اهو سڀ ڪجهه اڃا به سمجهي نه ٿو سگهي. پر جڏهن توهان ان کي سمجهڻ شروع ڪيو، توهان ڏسندا ته اتي ڪجھ به پيچيده ناهي. اسپرنگ بوٽ کي جلدي سمجھڻ لاءِ، مان سفارش ڪريان ٿو هڪ بهترين ڪتاب - اسپرنگ ان ايڪشن 5هين ايڊيشن. جيڪڏهن ڪا خواهش هجي ته هن ڪتاب تي ٻڌل مضمونن جو هڪ سلسلو لکي سگهان ٿو. اچو ته واپس وڃو. پيڪيج ۾ جنهن ۾ JavarushTelegramBotApplication شامل آهي، اسان bot پيڪيج ٺاهيندا آهيون ، جنهن ۾ اسان جي ٽيليگرام بوٽ شامل هوندي. ان جو نالو هوندو JavaRushTelegramBot :
package com.github.javarushcommunity.jrtb.bot;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.objects.Update;
/**
* Telegrambot for Javarush Community from Javarush community.
*/
@Component
public class JavarushTelegramBot extends TelegramLongPollingBot {
@Override
public void onUpdateReceived(Update update) {
}
@Override
public String getBotUsername() {
return null;
}
@Override
public String getBotToken() {
return null;
}
}
هي طبقو خلاصو هو ۽ ٽن طريقن تي عمل ڪرڻو پيو. اچو ته ان بابت وڌيڪ تفصيل سان ڳالهايون:
- onUpdateReceived(اپڊيٽ تازه ڪاري) - هي داخل ٿيڻ وارو نقطو آهي جتي صارفين جا پيغام پهچندا. سڀ نئين منطق هتان ايندي؛
- getBotUsername() - هتي توهان کي اسان جي بوٽ جو صارف نالو شامل ڪرڻو پوندو جنهن سان اسان ڳنڍينداسين؛
- getBotToken() - ۽ هي، مطابق، بوٽ ٽوڪن آهي.
- bot.username ؛
- bot.token _
package com.github.javarushcommunity.jrtb.bot;
import org.springframework.beans.factory.annotation.Value;
import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.objects.Update;
/**
* Telegram bot for Javarush Community from Javarush community.
*/
@Component
public class JavarushTelegramBot extends TelegramLongPollingBot {
@Value("${bot.username}")
private String username;
@Value("${bot.token}")
private String token;
@Override
public void onUpdateReceived(Update update) {
}
@Override
public String getBotUsername() {
return username;
}
@Override
public String getBotToken() {
return token;
}
}
اهو ڏسي سگھجي ٿو ته اسان variable جي قدر کي تشريح ڏانهن منتقل ڪيو. ۽ جڏهن اسپرنگ بوٽ اسان جو بوٽ آبجیکٹ ٺاهي ٿو، قيمتون ملڪيتن مان ورتيون وينديون (ٻيهر، انگريزيءَ مان tracing paper - property). اسان تقريبن اتي آهيون. توهان کي بوٽ جو جواب ڏيڻ جي ضرورت آهي. تنهن ڪري، اچو ته تازه ڪاري ڪريون onUpdateReceived طريقو . اسان کي اهو پيغام حاصل ڪرڻ جي ضرورت آهي جيڪو بوٽ ڏانهن آيو ۽ ان کي واپس پاس ڪيو. انهي طريقي سان اسان کي معلوم ٿيندو ته بوٽ ڪم ڪري رهيو آهي. هن کي ڪرڻ لاء، اسان تقريبا ۽ جلدي لکنداسين جيڪو ضروري آهي:
@Override
public void onUpdateReceived(Update update) {
if(update.hasMessage() && update.getMessage().hasText()) {
String message = update.getMessage().getText().trim();
String chatId = update.getMessage().getChatId().toString();
SendMessage sm = new SendMessage();
sm.setChatId(chatId);
sm.setText(message);
try {
execute(sm);
} catch (TelegramApiException e) {
//todo add logging to the project.
e.printStackTrace();
}
}
}
هتي سڀ ڪجهه بلڪل سادو آهي: اسان چيڪ ڪريون ٿا ته پيغام واقعي موجود آهي، تنهنڪري اسان پاڻ کي پيغام ( پيغام ) ۽ چيٽ جي سڃاڻپ ( chatId ) ڪڍيون ٿا جنهن ۾ خط و ڪتابت ٿي رهي آهي. اڳيون، اسان پيغام موڪلڻ لاءِ هڪ اعتراض ٺاهيون ٿا SendMessage ، پيغام پاڻ پاس ڪريو ۽ ان کي چيٽ ID - اهو آهي، بوٽ کي ڇا موڪلڻ ۽ ڪٿي. اسان وٽ اڳ ۾ ئي ڪافي آهي. اڳيون، اسان JavarushTelegramBotApplication ڪلاس ۾ مکيه طريقو هلائيندا آهيون ۽ ٽيليگرام ۾ اسان جي بوٽ کي ڳوليندا آهيون: لاگن مان اسان ڏسون ٿا ته بوٽ شروع ٿي چڪو آهي. تنهن ڪري، اهو وقت آهي ٽيليگرام ڏانهن وڃو ۽ bot ڏانهن لکو: اسان شروع تي ڪلڪ ڪندا آهيون ۽ اسان کي فوري طور تي هڪ جواب ملي ٿو: اچو ته چيڪ ڪرڻ لاءِ ڪجهه وڌيڪ گند لکون: ۽ اهو ئي آهي، هن موقعي تي اسان چئي سگهون ٿا ته اسان جو JRTB-2 ڪم مڪمل ٿي چڪو آهي. . توھان ھتي ھتي ڪو بھ ٽيسٽ نه ٿا لکي سگھو، تنھنڪري اسين سڀ ڪجھ ائين ڇڏينداسين جيئن اھو آھي. اڳيون توهان کي هڪ نئون عزم ٺاهڻ جي ضرورت آهي: ڪمٽ جي نالي تي ڌيان ڏيو: ٻيهر آئون توهان جو ڌيان هن طرف ڏيان ٿو. ھڪڙي ڪمٽ ۾ پھريائين ڪم جو نالو ھوندو آھي، ۽ پوءِ ڇا ڪيو ويو آھي جو وڌيڪ تفصيلي بيان. ڪلڪ ڪريو Commit and Push... ۽ تصديق ڪريو ڪلڪ ڪري ٻيهر Push : اسان جي پروجيڪٽ ڏانھن وڃو . جيئن اڳ ۾، GitHub اڳ ۾ ئي نئين شاخ ڏٺو آهي ۽ مکيه لاء پل درخواست ٺاهڻ لاء پيش ڪري ٿو. اسان مزاحمت نه ڪندا آهيون ۽ ان کي ٺاهيندا آهيون: هميشه وانگر، اسان اڳ ۾ ئي هڪ ليبل، هڪ منصوبو چونڊيو آهي ۽ ان کي مون کي تفويض ڪيو آهي. آخرڪار، ڪلڪ ڪريو ٺاھڻ جي درخواست ٺاھيو. اچو ته ٿورڙو انتظار ڪريون جڏهن تعمير ٿي وڃي - ۽ اهو ئي آهي، پل جي درخواست ضم ڪرڻ لاء تيار آهي:
ورجن ڪرڻ
مون کي ڪنهن طرح اهو نقطو ياد اچي ويو ته اسان کي ورزننگ ڪرڻ جي ضرورت آهي. ائين ڪرڻ لاءِ، اسان پنھنجي برانچ ۾ ڪجھ وڌيڪ تبديليون آڻينداسين. اسان IDEA ڏانھن واپس وڃو ۽ ميموري ۾ پروجيڪٽ ورزن کي ڏسو: نسخو 0.0.1-SNAPSHOT آھي . هي فرض نسخو آهي. ۽ اسان هر نئين حل ٿيل مسئلي سان پروجيڪٽ جي ورزن کي اپڊيٽ ڪندي شروع ڪنداسين. جيستائين اسان MVP تائين پهچون ٿا، نسخو لاحقه سان ايندو -SNAPSHOT. ورزننگ اسڪيم ڇا ٿيندو؟ XYZ-SNAPSHOT ڪٿي:- X - وڏي نسخي جي تازه ڪاري، اڪثر ڪري پوئين ورزن سان پسمانده مطابقت سان مسئلا شامل آهن؛
- Y - تمام وڏيون تبديليون نه، پوئين ورزن سان مڪمل طور تي مطابقت؛
- Z خرابين جو هڪ انسداد آهي جيڪو اسان مليو ۽ مرمت ڪيو.
GO TO FULL VERSION