این روزها، در کمتر گروهی است که شاهد حضور یک یا دو بات نباشیم. همچنین، اکثر افراد علاقمند، بسته به سلیقه ها و علاقه هایشان، بات های تلگرام مختلفی را نوشته اند. برای مثال، شخصی باتی نوشته که با دادن پیغام خاصی، شخصی را به گروه اضافه، و یا از گروه حذف میکند، یا بات های دیگری که صرفا برای اسپم کردن در گروه ها، جست و جو در ویکیپدیا و … نوشته شده اند. برای ساخت یک بات تلگرام، شما نیاز دارید تا توسط اکانت 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 برای ارسال تصویر استفاده نمودیم. همچنین، سایر ویژگی های زبان روبی نیز در این کد استفاده شده است. اگر کدهای موجود در این بات ساده، برای شما نا آشناست، بهتر است ابتدا مستندات روبی، سپس مطالب قدیمی همین وبسایت و در نهایت مستندات جم تلگرام بات را مطالعه فرمایید. همچنین، درصورت داشتن سوال، میتوانید در بخش کامنت ها ، سوال خود را مطرح کنید.
خیلی هم عالی 🙂 ممنون
ino koja bayad run konim to ide ya terminal? yekam bishtar tozih bedid
از ترمینال باید ران بشه.
in erroro mideh moghe run to terminal
/usr/local/lib/ruby/gems/2.2.0/gems/telegram-bot-ruby-0.2.5/lib/telegram/bot/api.rb:36:in `call’: Telegram API has returned the error. (error_code: “403”, uri: “https://api.telegram.org/botYOUR_TELEGRAM_BOT_API_TOKEN/getUpdates”) (Telegram::Bot::Exceptions::ResponseError)
from /usr/local/lib/ruby/gems/2.2.0/gems/telegram-bot-ruby-0.2.5/lib/telegram/bot/api.rb:27:in `method_missing’
from /usr/local/lib/ruby/gems/2.2.0/gems/telegram-bot-ruby-0.2.5/lib/telegram/bot/client.rb:22:in `block in listen’
from /usr/local/lib/ruby/gems/2.2.0/gems/telegram-bot-ruby-0.2.5/lib/telegram/bot/client.rb:21:in `loop’
from /usr/local/lib/ruby/gems/2.2.0/gems/telegram-bot-ruby-0.2.5/lib/telegram/bot/client.rb:21:in `listen’
from /Users/mohammad/Desktop/telegram/bot.rb:6:in `block in ‘
from /usr/local/lib/ruby/gems/2.2.0/gems/telegram-bot-ruby-0.2.5/lib/telegram/bot/client.rb:17:in `run’
from /usr/local/lib/ruby/gems/2.2.0/gems/telegram-bot-ruby-0.2.5/lib/telegram/bot/client.rb:7:in `run’
from /Users/mohammad/Desktop/telegram/bot.rb:5:in `’
ok shod mamnon babat post khbeton 🙂
salam ye soal dashtam
agar bekham akharin message ro reply konam baad text befrestam bayad chi kar konam
!ba hamin gem
mamnon misham agar javab bedid
به تعدادی نیروی ریلز کار و یک نفر ui کار آشنا به ریلز نیاز داریم برای یک پروژه جذاب هر یک از دوستان که علاقه دارد رزومه خود را به houshmand@salamat-yar.com ارسال نماید
زمینه کار سلامت الکترونیک است و چارچوب توسعه اسکرام
http://www.salamat-yar.com
درود بر شما، اگر ممکنه به گروه تلگرام روبی بیاید و درخواستتون رو مطرح کنید :
https://telegram.me/joinchat/03ce76f700ba27345f7d6c902dc55525
سلام
ببخشین کسی توکن برای استخاره و فال حافظ نداره؟
برای سرویس هایی مثل فال و … باید یک وب سرویس پیدا کنید و ازش Request بگیرید.
سلام
خوشحالم که با سایت شما اشنا شدم
لطفا راهنمایی کنید و بگید این ربات رو کجا باید آپلود کنم؟
چونکه نمیشه تا زمانی که سیستم من روشن هست اون اجرا بشه و وقتی سیستم روشن نیست از کار بیفته
ممنون
شما نیاز دارید یک سرور تهیه کنید و روی اون سرور آپلود کنید و بعد روشنش کنید.
یک پرانتز در آخر کار یادتون رفته بزارید
(chat_id: message.chat.id, photo: File.new(‘./image.jpg’)