برنامه نویسی و ITبرنامه‌نویسی موبایلجاوا

آموزش قدم به قدم ساخت ربات تلگرام با جاوا

در این مقاله قصد داریم به آموزش ساخت ربات تلگرام با جاوا می‌پردازیم. API در جاوا بسیار عالی و ایده آل پیاده‌سازی شده است و برای ساخت ربات‌های تلگرام بسیار خوب عمل می‌کند. ما در این پروژه از ابزار ساخت جاوا، Gradle، استفاده خواهیم کرد. همچنین کتاب کتابخانه ما برای ساخت ربات تلگرام با جاوا java-telegram-bot-api خواهد بود.

رباتی که ما قرار است آن را طراحی و پیاده‌سازی کنیم یک ربات پرداخت خواهد بود. این ربات پرداخت به شما کمک می‌کند که سفارشات را اتوماتیک دریافت کنید و مشتری از طریق رباتی که می‌سازیم پرداخت را انجام دهد. تلگرام اکنون یک API پرداخت را پیشنهاد می‌کند، بنابراین می‌توانید مستقیماً از طریق تلگرام شروع به فروش کالا کنید. درحالی‌که قسمت اول این فصل اصول اولیه را بازبینی می‌کند، سپس رباتی را پیاده‌سازی می‌کنیم که به چالش‌های استفاده از API پرداخت تلگرام پاسخ می‌دهد و نمونه‌ای از چرخه زندگی کامل پرداخت را ایجاد می‌کند.

نیازمندی‌ها برای ساخت ربات تلگرام با جاوا

Apache Maven، Gradle ابزار اصلی ما برای ساخت ربات تلگرام با جاوا است. این درواقع ابزار ساخت اصلی برای ساخت برنامه‌های اندروید است.

می‌توانید Gradle را به‌صورت دستی بر روی دستگاه خود دانلود و نصب کنید. دانلود باینری‌ها از طریق بسته‌های مختلف در دسترس است. وب‌سایت Gradle (https://gradle.org/install/) یک بخش گسترده در مورد نحوه نصب نرم‌افزار دارد.

ویدیوهای پییشنهادی : آموزش جاوا

 

ساختار پروژه ساخت ربات تلگرام با جاوا

یک پروژه جاوا با استفاده از Gradle بیشتر از فایل build.gradle ساخته‌شده است که حاوی ابر داده و اطلاعات ساختنی است که Gradle بتواند آن را درک کند و فایل‌های منبع واقع در src/main/java (به‌طور پیش‌فرض) هستند. به‌صورت کلی ساختار فایل ربات تلگرام با جاوا به‌صورت زیر است.

ساختار فایل ربات تلگرام با جاوا

فایل build.gradle

Gradle کاملاً همه‌کاره است و تقریباً می‌توانید هر چیزی را با آن بسازید. در این مقاله همان‌طور که گفتم قصد داریم یک پروژه ساخت تلگرام با جاوا بسازیم، بنابراین از پلاگین Gradle برای جاوا استفاده خواهیم کرد، با چند تنظیمات استاندارد که برای کامپایل استفاده می‌شود، مانند کدگذاری فایل و سازگاری کامپایل.

وابستگی‌ها در بخش وابستگی‌ها تعریف می‌شوند که هرکدام با فرمت زیر مشخص می‌شوند: شما می‌توانید وابستگی‌ها را در تصویر زیر مشاهده کنید.

<group>:<name>:<version>.

 

فایل build.gradle

در اینجا محتوای فایل build.gradle آمده است:

 


apply plugin: 'java'

sourceCompatibility = 1.8

targetCompatibility = 1.8

compileJava {

 options.encoding = "UTF-8"

}

repositories {

 jcenter()

}

dependencies {

 compile 'com.github.pengrad:java-telegram-bot-api:4.1.0'

 compile 'com.sparkjava:spark-core:2.2'

 compile 'org.jsoup:jsoup:1.8.3'

 compile 'io.reactivex:rxjava:1.0.16'

}

apply plugin: 'application'
mainClassName = "com.hellonico.Simple"

 

دو خط آخر افزونه برنامه و mainClassName موردنیاز نیستند، اما اگر می‌خواهید برنامه خود را به‌سادگی با استفاده از:

gradle run اجرا کنید طبق دستور پایین عمل کنید.

 

به‌عنوان‌مثال، با توجه به کلاس و برنامه ساده جاوا زیر:

 


package com.hellonico;

public class Simple {

public static void main(String[] args) {

System.out.println("hello nico");

}

}

 

اگر دستور run را اجرا کنید، برنامه اجرا خواهد شد و خروجی زیر در ترمینال یا خط فرمان نشان داده می‌شود:

 


$ gradle run
> Task :run
hello nico
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed


 

این روش ربات ساخته‌شده ما با جاوا  com.helonico.Simple را اجرا می‌کند. کلاس اطلاعات بیشتر در مورد افزونه برنامه را می‌توانید در وب‌سایت Gradle بیابید(https://docs.gradle.org/current/userguide/application_plugin.

html).

 

مقاله پییشنهادی : معرفی 12 تا از بهترین کتاب‌های آموزش جاوا

 

تنظیم کد ویژوال استودیو

ازآنجایی‌که ما استفاده از Gradle را به‌عنوان ابزار ساخت ربات تلگرام با جاوا را پیشنهاد کرده‌ایم، Visual Studio Code می‌تواند ابزار ساخت را تشخیص دهد و پروژه را با یکپارچگی تقریباً کامل، با استفاده از ابزار جاوا راه‌اندازی کند. پلاگین اصلی جاوا در شکل زیر نشان داده‌شده است و می‌توان آن را از طریق بازار Visual Studio Code نصب کرد.

 

تنظیم کد ویژوال استودیو

 

همان کلاس جاوا ساده‌ای که در بالا نوشته شد، نتیجه نشان داده‌شده در شکل را به دست می‌دهد.

 

تنظیم کد ویژوال استودیو

 

اکنون دو آیکون می‌بینید که با آن کد خود  یا کد ساخت ربات تلگرام با جاوا را اجرا و اشکال‌زدایی می‌کنید. این ابزارها هنگام نوشتن ربات تلگرام مفید خواهند بود. برای اینکه اکنون آن را امتحان کنید، روی Run کلیک کنید، که برنامه را اجرا می‌کند و خروجی مناسب را در کنسول Visual Studio Code نشان می‌دهد.

 

تنظیم کد ویژوال استودیو

 

اولین ربات تلگرام با جاوا

اولین ربات تلگرام با جاوا ما متن و یک عکس ارسال می‌کند تا مطمئن شویم که راه‌اندازی ربات تلگرام با جاوا  درست‌کار می‌کند. ربات با توکن بارگیری شده از یک فایل منابع/توکن مقداردهی اولیه می‌شود، که باید توکن ربات خود را در آن قرار دهید.

برای ساخت ربات و دریافت توکن کافی است که یک ربات تلگرام را با استفاده از @botfather راه‌اندازی کنید و توکن و مشخصات آن را برای مراحل بعدی ذخیره کنید.

در طول راه، احتمالاً متوجه خواهید شد که یافتن ایمپورترهای جاوا کمی سخت است، اما همان‌طور که در شکل نشان داده‌شده است، می‌توان آن‌ها را با استفاده از Visual Studio Code Organize Imports به‌صورت خودکار وارد کرد.

 

پیدا کردن ایمپورترهای جاوا

 

احتمالاً سخت‌ترین قسمت کد برای ساخت ربات تلگرام با جاوا خط زیر است:

 

bot.setUpdatesListener(new UpdatesListener() {..}

 

اینجا جایی است که به کد ما به ربات می‌گویید خودش را به‌روز کند. در ساده‌ترین شکل، کد ربات به‌صورت زیر است:

 


package com.hellonico;

import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.List;

import java.util.stream.Collectors;

import com.pengrad.telegrambot.TelegramBot;

import com.pengrad.telegrambot.UpdatesListener;

import com.pengrad.telegrambot.model.Update;

public class Main {

public static String streamFile_Buffer(String file) throws

Exception{

BufferedReader reader =

new BufferedReader(new FileReader(file));

return reader

.lines()

.collect(Collectors.joining(System.lineSeparator()));

}

public static void main(String[] args) throws Exception {

TelegramBot bot =

new TelegramBot(streamFile_Buffer("resources/token"));

bot.setUpdatesListener(new UpdatesListener() {

@Override

public int process(List updates) {

System.out.println(updates.toString());

// DO SOMETHING HERE.

return UpdatesListener.CONFIRMED_UPDATES_ALL;

}

});

}

}

 

ویدیوهای پییشنهادی : ساخت برنامه اندروید با جاوا

 

ساخت ربات تلگرام با جاوا برای ارسال متن به چت

اولین تعامل ما در ساخت ربات تلگرام با جاوا ارسال متنی به چت خواهد بود. شما می‌توانید مانند سایر زبان‌ها از طریق پیام‌های به‌روزرسانی از تلگرام پیمایش کنید. شما پیام‌های معمولی را با همان ساختاری که تابه‌حال دیده‌شده است پیدا خواهید کرد.

 


[Update{update_id=573518674, message=Message{message_id=956, from=User{id=121843071, is_bot=false, first_name='Nico', last_ name='Nico', username='hellonico', language_code='en-JP'} , date=1537602748, chat=Chat{id=121843071,..

 

ازآنجا می‌توانیم شناسه چت را دریافت کنیم

 

int id = updates.get(0).message().chat().id().intValue();

 

و دوباره به چت پیام ارسال کنید. توجه داشته باشید که ما از ربات استفاده می‌کنیم. با یک درخواست و یک فراخوان اجرا کنید، بنابراین نتیجه ناهم‌زمان است.

 


SendMessage requestText =

new SendMessage(id, "*hello from java*").parseMode(ParseMode.

Markdown);

bot.execute(requestText, new Callback<SendMessage, SendResponse>() {

@Override

public void onResponse(SendMessage request, SendResponse

response) {}

@Override

public void onFailure(SendMessage request, IOException e) {}

});

قبل از راه‌اندازی ربات، باید ایمپورترهای جاوا را سازمان‌دهی کنید یا لیست را به‌صورت دستی تکمیل کنید. لیست کامل در زیر نشان داده‌شده است و باید در بالای فایل منبع قرار گیرد.

 


import java.io.BufferedReader;

import java.io.FileReader;

import java.io.IOException;

import java.util.List;

import java.util.stream.Collectors;

import com.pengrad.telegrambot.Callback;

import com.pengrad.telegrambot.TelegramBot;

import com.pengrad.telegrambot.UpdatesListener;

import com.pengrad.telegrambot.model.Update;

import com.pengrad.telegrambot.model.request.ParseMode;

import com.pengrad.telegrambot.request.SendMessage;

import com.pengrad.telegrambot.response.SendResponse;

 

ربات را با کلیک روی Run یا Debug راه‌اندازی کنید، که متنی با فرمت علامت‌گذاری شده در چت می‌دهد.

 

ساخت ربات تلگرام با جاوا برای ارسال متن به چت

 

ساخت ربات تلگرام با جاوا برای ارسال تصویر

ارسال عکس به‌آسانی ارسال متن در ساخت ربات تلگرام با جاوا است و این بار از نسخه هم‌زمان ارسال درخواست به تلگرام استفاده می‌کنیم. ازآنجایی‌که کد دیگر ناهم‌زمان نیست، خرابی‌ها در پاسخ به تماس onFailure که در نسخه ناهم‌زمان موجود بود، کنترل نمی‌شوند. بنابراین، ایده خوبی است که درخواست را با یک بلوک try/catch احاطه کنیم.

 


SendPhoto requestPhoto = new SendPhoto(id, new File("resources/

cat.jpg"));

try {

SendResponse response = bot.execute(requestPhoto);

} catch (Exception e) {

e.printStackTrace();

}

 

و عکس گربه همان‌طور که در شکل نشان داده‌شده است به چت ارسال می‌شود.

 

ساخت ربات تلگرام با جاوا برای ارسال تصویر

 

حالا بیایید سعی کنیم یک فاکتور تولید کنیم و با استفاده از ربات تلگرام جاوای ساخته‌شده سفارش‌ها را ماشینی تحویل بگیریم.

 

ربات باقابلیت فاکتور

تلگرام یک API پرداخت اضافه کرده است تا پرداخت را مستقیماً از چت روم بپذیرد. این‌یک راه‌اندازی واقعاً فوق‌العاده برای ارسال پول است و تراکنش‌ها درزمینهٔ خدمات از گسترش آن بسیار سود می‌برند. در این مرحله از ساخت ربات تلگرام با جاوا قصد داریم این پیاده‌سازی را ارائه دهیم.

پیشنهاد مطالعه: آموزش مفهوم Final در جاوا + مثال عملی

درخواست مجوز

قبل از استفاده از این قابلیت‌ها، باید با تغییر تنظیمات Payments ربات خود، مجدداً از ربات تلگرام BotFather مجوز دریافت کنید.

 

ساخت ربات تلگرام با جاوا

 

پس از به‌روزرسانی تنظیمات پرداخت برای ربات، BotFather یک رمز پرداخت به شما می‌دهد، همان‌طور که در شکل نشان داده‌شده است.

 

ساخت ربات تلگرام با جاوا

 

در اینجا توجه داشته باشید که رمز دیگری به شما داده می‌شود. این رمزی است که باید هنگام ارسال پیام فاکتور استفاده کنید.

در طول مسیر، باید یک حساب پرداخت با ارائه‌دهنده  خدمات موردعلاقه خود راه‌اندازی کنید. در اینجا، همان‌طور که در شکل‌های نشان داده‌شده است، از Stripe استفاده می‌کنیم و قابلیت‌های آن را آزمایش می‌کنیم. Stripe یک شرکت خدمات پرداخت خارجی است.

 

stripe چیست

 

راه‌اندازی استریپ:

 

راه‌اندازی stripe

 

اگر تنظیمات به‌درستی تکمیل‌شده باشد، همان‌طور که در شکل نشان داده‌شده است، تأییدیه را از ربات تست Stripe دریافت خواهید کرد.

 

راه‌اندازی stripe

 

اکنون ربات تلگرام شما می‌تواند پیام‌های فاکتور ارسال کند و سعی کند از افرادی که با آن صحبت می‌کنند پول دریافت کند.

 

ارسال پیام فاکتور

همانند ارسال عکس یا متن، می‌توانید با استفاده از پیام SendInvoice، فاکتورها را به چت ارسال کنید.

 


SendInvoice sendInvoice

= new SendInvoice(id, "Lemon", "desc", "hello","2846850

63:TEST:NDBlMjliMGM2YmQ0", "my_start_param", "JPY", new

LabeledPrice("label", 2000))

.needPhoneNumber(false)

.needShippingAddress(false)

.isFlexible(true)

.replyMarkup(new InlineKeyboardMarkup(new InlineKeyboardButton[]

{ new InlineKeyboardButton("just pay").pay(),

new InlineKeyboardButton("google it").url("www.google.com") }));

 

مجدداً می‌توانید پرس‌وجو را به‌صورت هم‌زمان یا ناهم‌زمان اجرا کنید. توصیه می‌شود از مسدود کردن اجرا در رشته اصلی خودداری کنید.

 


// sync version

SendResponse response = bot.execute(sendInvoice);

// async version

bot.execute(sendInvoice, new Callback<SendInvoice, SendResponse>() {

@Override

public void onResponse(SendInvoice request, SendResponse

response) {}

@Override

public void onFailure(SendInvoice request, IOException e) {}});


در ساخت ربات تلگرام با جاوا ما پرداخت فقط با استفاده از نسخه موبایلی اپلیکیشن تلگرام امکان‌پذیر است که کاربران نیز باید کالای ارسالی خود را به آن ارائه دهند.

 

ارسال پیام فاکتور در ربات تلگرام با جاوا

 

در این مرحله با کلیک بر روی فقط پرداخت، ربات پرداخت درخواست ارسال را ارسال می‌کند. (درواقع فقط درصورتی‌که .isFlexible (true) تنظیم‌شده باشد.) در این مرحله می‌توانیم چند گزینه برای ارسال کنیم و دوباره به چت ارسال کنیم.

 


ShippingQuery shipping= updates.get(0).shippingQuery();

if (shipping!= null) {

ShippingOption option =

new ShippingOption("fedex", "FedEx", new LabeledPrice("JOY", 2000));

AnswerShippingQuery query =

new AnswerShippingQuery(shipping.id(), option);

bot.execute(query);

return UpdatesListener.CONFIRMED_UPDATES_ALL;

}

 

همان‌طور که در شکل نشان داده‌شده است، گزینه‌های حمل‌ونقل در چت نشان داده می‌شوند.

 

ارسال پیام فاکتور در ربات تلگرام با جاوا

 

شکل‌های  بعدی روند پر کردن اطلاعات باقی‌مانده از فرآیند پرداخت را نشان می‌دهد.

 

روند پر کردن اطلاعات فرآیند پرداخت

 

روند پر کردن اطلاعات فرآیند پرداخت

 

درنهایت، ربات پرداخت، درخواستی را برای پیش‌پرداخت به ربات شما ارسال می‌کند، با تمام جزئیات پرداخت. شما باید تا جایی که می‌توانید به این درخواست ربات پاسخ دهید و درواقع ده ثانیه حداکثر محدودیت زمانی است، در غیر این صورت پرداخت لغو می‌شود. تکمیل تراکنش با ارسال یک PreCheckoutQuery با شناسه query، زمانی که یک عنصر preCheckoutQuery دریافت می‌شود، انجام می‌شود.

 


PreCheckoutQuery query = updates.get(0).preCheckoutQuery();

if (query != null) {

AnswerPreCheckoutQuery apcq = new AnswerPreCheckoutQuery

(query.id());

bot.execute(apcq);

return UpdatesListener.CONFIRMED_UPDATES_ALL;

}

 

شکل بعد چت را پس از تکمیل پرداخت نشان می‌دهد.

 

تکمیل پرداخت در ربات تلگرامی به زبان جاوا

 

در داشبورد Stripe، در قسمت پرداخت، پس از فعال کردن داده‌های تست، همان‌طور که در شکل بعد نشان داده‌شده است، می‌توانید سفارشات مختلف با استفاده از ربات ساخته‌شده با جاوا را مشاهده کنید.

 

داشبورد Stripe

 

امیدوارم که از مقاله ما در رابطه با سات ربات تلگرام با جاوا لذت برده باشید و برای شما مفید واقع‌شده باشد.

کامل بهرامی

کامل بهرامی دانش‌آموخته کارشناسی ارشد رشته مهندسی کامپیوتر گرایش نرم‌افزار از دانشگاه ارومیه است. به حوزه کامپیوتر، برنامه‌نویسی و فناوری اطلاعات علاقه‌مند‌ است و هم اکنون به عنوان عضو تیم سئو و مدیر تیم نویسنده‌های مکتب خونه در این مجموعه فعالیت می‌کند.

نوشته های مشابه

همچنین ببینید
بستن
دکمه بازگشت به بالا