این روزها، در کمتر گروهی است که شاهد حضور یک یا دو بات نباشیم. همچنین، اکثر افراد علاقمند، بسته به سلیقه ها و علاقه هایشان، بات های تلگرام مختلفی را نوشته اند. برای مثال، شخصی باتی نوشته که با دادن پیغام خاصی، شخصی را به گروه اضافه، و یا از گروه حذف میکند، یا بات های دیگری که صرفا برای اسپم کردن در گروه ها، جست و جو در ویکیپدیا و … نوشته شده اند. برای ساخت یک بات تلگرام، شما نیاز دارید تا توسط اکانت BotFather روبات خود را تعریف کنید. سپس با خواندن مستندات API بات ها، روبات (های) خود را کامل کنید. اما این متد ها و API کد ها، به خودی خود هیچ کاری انجام نمیدهند. بلکه شما هستید که با کدی که برای روبات خود مینویسید، میگویید که چه کند. در این آموزش، ساخت یک روبات کوچک که به دو دستور start و img واکنش نشان میدهد را خواهید آموخت.
نصب جم های مورد نیاز
خوشبختانه برای هر منظوری در روبی، حداقل یک جم وجود دارد. شما میتوانید به صورت مستقیم با تایپ دستور :
gem install telegram-bot-ruby
این جم را نصب کنید و یا یک Gemfile بسازید و بعد محتوای آن را چنین وارد کنید :
source 'https://rubygems.org'
gem 'telegram-bot-ruby'
جهت اطلاعات بیشتر در مورد کار با Bundler ، میتوانید مقاله قبلی همین وبسایت را مطالعه کنید.
شروع به نوشتن روبات
اکنون، جم مورد نیاز ما نصب شده است، روبات خود را با استفاده از BotFather ایجاد کرده ایم، و نوبتی هم باشد نوبت نوشتن کد برای روبات است. یک فایل به نام bot.rb ایجاد میکنیم (توجه کنید که اسم فایل اختیاری است)، و سپس جم مورد نظر را فراخوانی میکنیم. همچنین API خود را درون متغیری به اسم token قرار میدهیم :
require 'telegram/bot'
token = 'YOUR API CODE HERE'
سپس، باید دستوری بدهیم که آغاز بات ما باشد :
Telegram::Bot::Client.run(token) do |bot|
end
همانگونه که می بینید، دستور نسبتا طولانی را در متغیری به نام bot خلاصه کردیم. اکنون نوبت آن است که روبات ما، شروع کند به شنیدن آن چه توسط privacy تنظیم کرده ایم (به صورت پیشفرض، روبات ها صرفا به پیام هایی دسترسی دارند که با / شروع می شوند). کل برنامه ما به این شکل خواهد بود:
require 'telegram/bot'
token = 'YOUR_TELEGRAM_BOT_API_TOKEN'
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
end
end
اکنون میخواهیم بررسی کنیم که از کدام متد ها برای روبات خود استفاده کنیم. همانگونه که در ابتدای مطلب گفته شد، قرار است دو دستور start و img دریافت گردد، و سپس واکنشی نشان داده شود. دستور start میخواهد به کاربر سلام دهد، و دستور img یک عکس برای کاربر بفرستد. پس کد برنامه به این شکل خواهد بود :
require 'telegram/bot'
token = 'YOUR_TELEGRAM_BOT_API_TOKEN'
Telegram::Bot::Client.run(token) do |bot|
bot.listen do |message|
case message.text
when '/start'
bot.api.sendMessage(chat_id: message.chat.id, text: "Hello, @#{message.from.username}")
when '/img'
bot.api.sendPhoto(chat_id: message.chat.id, photo: File.new('./image.jpg')
end
end
end
ما از دو متد sendMessage برای ارسال متن و sendPhoto برای ارسال تصویر استفاده نمودیم. همچنین، سایر ویژگی های زبان روبی نیز در این کد استفاده شده است. اگر کدهای موجود در این بات ساده، برای شما نا آشناست، بهتر است ابتدا مستندات روبی، سپس مطالب قدیمی همین وبسایت و در نهایت مستندات جم تلگرام بات را مطالعه فرمایید. همچنین، درصورت داشتن سوال، میتوانید در بخش کامنت ها ، سوال خود را مطرح کنید.