در این آموزش قصد داریم به زبانی ساده چگونگی ساخت ربات برای نرم افزار پیامرسان تلگرام را به شما عزیزان آموزش دهیم.
قدم اول:
ابتدا باید به این آدرس بروید، و توضیحات ارایه شده آن را مطالعه کنید. خب حالا وقت آن است که از تلگرام در خواست کنید برای شما یک ربات بسازد و کد ارتباط با ربات را در اختیار شما قرار دهد، برای این کار نرم افزار تلگرام خود را باز کرده و ربات BotFather مانند تصویر زیر پیدا کنید.
بعد از پیدا کردن ربات میتوانید از دستور /help برای دیدین دیگر دستورها استفاده کنید، در این مرحله من به دستور /newbot نیاز دارم، وقتی این دستور را وارد میکنید پیامی به شما نمایش داده میشود و نام ربات را از شما میخواهد. سپس نامی برای یوزنیم ربات از شما در خواست میکند، توجه کنید که برای یوزرنیم باید آخر اسم انتخابی شما bot داشیه باشد.
در این مثال من نام ربات و یوزرنیم آن را یکی گذاشتم.
سپس بعد از تایید، به شما Token id منحصر به فردی خواهد داد، به وسیله این TokenId میتوانید با ربات خود ارتباط بر قرار کرده و آن را برنامهریزی کنید.
حالا وقت آن است که توضیحاتی در مورد ربات ایجاد کنیم، برای این کار از دستور /setdescription استفاده کنید، سپس در قسمت پایین صفحه نام رباتهای شما نمایش داده خواهد شد، رباتی را که میخواهید توضیحات به آن اضافه کنید انتخاب کنید سپس متن خود را وارد کنید.
بعد از توضیحات نوبت قرار دادن عکس برای ربات میرسد، دستور /setuserpic مانند دفعه قبل ربات مورد نظر را از پایین انتخاب کنید، سپس عکس دلخواه خود را اضافه کنید.
اگر میخواهید ربات شما بتواند به گروهی اضافه شود، دستور /setjoingroups را وارد کنید، مانند قبل ربات مورد نظر را انتخاب کرده سپس Enable را تایپ کنید.
در قسمت بعدی در مورد قدم دوم که برنامه نویسی ربات است توضیح خواهیم داد.
چگونه ربات را برنامه نویسی کنیم :
حالا نوبت آن است ، تا با ربات خود ارتباط برقرار کرده و آن را برنامه ریزی کنیم ، برای این کار من از زبان JAVA استفاده می کنیم به لینک https://github.com/rubenlagus/TelegramBots
در این لینک API ساده و خوبی برای برنامه ریزی ربات به زبان جاوا وجود دارد ، خوب توضیحات را مطالعه کرده و فایل های مربوطه را دانلود کنید .
سپس برنامه را باز کنید ، ساختار پوشه ها به این شکل است ، البته با کمی تفاوت با عکسی که من می گذارم ، نگران نباشید ، کلاس هایی که ندارید را ایجاد خواهیم کرد .
ابتدا کلاسی به نام BotConfig ایجاد کنید مانند تصویر بالا ، سپس داخل آن این کد ها را قرار دهید .
package org.telegram.telegrambots; public class BotConfig { public static final String TOKENMYPROJECT = " کد شما "; public static final String USERNAMEMYPROJECT = "یوزر نیم شما"; }
همان طور که می بینید دو پراپرتی داریم ، به یکی برای Token Id شما و دیگری برای یوزرنیم.
خوب کار ما با این کلاس فعلا تمام شده .
در پوشه updateshandlers کلاسی ایجاد کنید من نام کلاسم را DarkoobHandler گذاشتم .
توجه کنید که این کلاس باید از کلاس TelegramLongPollingBot ارث بری کنید ، در این صورت شما موظف خواهید بود 3 متد را پیاده سازی کنید .
public class DarkoobHandler extends TelegramLongPollingBot { @Override public void onUpdateReceived(Update update) { } @Override public String getBotUsername() { return BotConfig.USERNAMEMYPROJECT; } @Override public String getBotToken() { return BotConfig.TOKENMYPROJECT; }
در متد getBotUsername یوزر نیم را برگردانید و در getBotToken تکن آدی را ، مانند کد بالا ، خوب حالا می ماند unUpdateRecived در این متد کد زیر را بنویسید :
@Override public void onUpdateReceived(Update update) { if(update.hasMessage()){ Message message = update.getMessage(); if(message.hasText()){ SendMessage sendMessageRequest = new SendMessage(); sendMessageRequest.setChatId(message.getChatId().toString()); sendMessageRequest.setText("پیام شما : " + message.getText()); try { sendMessage(sendMessageRequest); } catch (TelegramApiException e) { } } } }
متد onUpdateReceived شما باید مانند تصویر بالا باشد ، حالا به سراغ کلاس Main میرویم .
public class Main { private static final String LOGTAG = "MAIN"; public static void main(String[] args) { TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); try { telegramBotsApi.registerBot(new DarkoobHandler()); } catch (TelegramApiException e) { BotLogger.error(LOGTAG, e); } } }
کلاس Main را به صورت بالا بنویسید ، حال نرم افزار را اجرا کنید ، ربات خود را در تلگرام جستوجو کنید ، متنی برای او بنویسید ، و در مقابل ربات پیام شما را به شما نشان خواهد داد و جلمه پیام شما را اول آن چاپ خواهد کرد .
در قسمت بعد به شما نشان خواهیم داد چگونه برای ربات دکمه بسازید.
چگونه در ربات دکمه ایجاد کنیم :
برای ایجاد دکمه من متدی به نام ReplyKeyboardMarkup در کلاس DarkoobHandler ایجاد می کنم به شکل زیر :
private static ReplyKeyboardMarkup getMainMenuKeyboard() { ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); replyKeyboardMarkup.setSelective(true); replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboad(false); List keyboard = new ArrayList<>(); KeyboardRow keyboardFirstRow = new KeyboardRow(); keyboardFirstRow.add(getOurWorks()); keyboardFirstRow.add(getAboutUs()); KeyboardRow keyboardSecondRow = new KeyboardRow(); keyboardSecondRow.add(getContactUs()); keyboardSecondRow.add(getWebAddress()); keyboard.add(keyboardFirstRow); keyboard.add(keyboardSecondRow); replyKeyboardMarkup.setKeyboard(keyboard); return replyKeyboardMarkup; }
دراین متد من متدهای دیگری مانند getContactUs را صدا زده ام ، باید این متد هارا نیز ایجاد کنید .
من چهار دکمه دارم و چهار متد نیز ایجاد کرده ام.
private static String getWebAddress() { return "آدرس سایت"; } private static String getContactUs() { return "تماس باما"; } private static String getOurWorks() { return "نمونه کارها"; } private static String getAboutUs() { return "درباره ما"; }
سپس وقت آن رسیده تا متد onUpdateReceived را کمی تغییر دهیم ، به شکل زیر :
@Override public void onUpdateReceived(Update update) { if (update.hasMessage()) { Message message = update.getMessage(); if (message.hasText() || message.hasLocation()) { try { handleIncomingMessage(message); } catch (TelegramApiException e) { e.printStackTrace(); } } } }
همان طور که می بینید ، متدی به نام handelIncomingMessage صدا زده شده است ، بیاید آن را ایجاد کنیم :
private void handleIncomingMessage(Message message) throws TelegramApiException { answerUser(message); }
فعلا این متد کار ساده ای انجام میدهد و آن صدا زدن متدی به نام مanswerUser است اما در آینده کارهای دیگری نیز انجام خواهد داد که در این مبحث نمی گنجد.
اما در answerUser چه چیزی وجود دارد ؟ به کد زیر دقت کنید :
private void answerUser(Message message) { ReplyKeyboardMarkup replyKeyboardMarkup = getMainMenuKeyboard(); SendMessage sendMessageRequest = new SendMessage(); if (replyKeyboardMarkup != null) { sendMessageRequest.setReplyMarkup(replyKeyboardMarkup); } if (message.hasText()) { sendMessageRequest.setChatId(message.getChatId().toString()); String userMessage = message.getText(); switch (userMessage) { case "تماس باما": sendMessageRequest.setText("مراجعه حضوری: مشهد، بلوار امامت، امامت 46، پلاک 75/1، واحد یک (قبل از مراجعه لطفآ هماهنگ کنید)\n" + "ارتباط تلفنی: 05136040231"); break; case "آدرس سایت": sendMessageRequest.setText("http://darkoobweb.com/"); break; case "نمونه کارها": sendMessageRequest.setText("http://darkoobweb.com/%D9%85%D8%B9%D8%B1%D9%81%DB%8C-%D9%BE%D8%B1%D9%88%DA%98%D9%87-%D9%87%D8%A7/"); break; case "درباره ما": sendMessageRequest.setText("\u200C\u200Cما در زمینه\u200Cی طراحی و توسعه\u200Cی وب فارسی فعال هستیم. نشاط، انگیزه و نوآوری اولین چیزی\u200Cست که از تیم ما به چشم می\u200Cخورد. موضوع اصلی فعالیت ما تولید پوسته\u200Cهای ایرانی برای سیستم وردپرس است. همچنین برنامه نویسی، طراحی سایت، خدمات میزبانی و ... از جمله خدمات ماست."); break; case "/start": sendMessageRequest.setText("خوش آمدید"); break; } try { sendMessage(sendMessageRequest); } catch (TelegramApiException e) { sendMessageRequest.setText("Darkoobwebbot"); } } }
حال برنامه را اجرا کنید ، و به دنبال @DarkoobWebBot در تلگرام بگردید ، شکل زیر را مشاهده خواهید کرد .
موفق باشید .
باسلام
ممنون از پست خوبتون.