نوشتن روبات تلگرام در روبی

جولای 22

این روزها، در کمتر گروهی است که شاهد حضور یک یا دو بات نباشیم. همچنین، اکثر افراد علاقمند، بسته به سلیقه ها و علاقه هایشان، بات های تلگرام مختلفی را نوشته اند. برای مثال، شخصی باتی نوشته که با دادن پیغام خاصی، شخصی را به گروه اضافه، و یا از گروه حذف میکند، یا بات های دیگری که صرفا برای اسپم کردن در گروه ها، جست و جو در ویکیپدیا  و … نوشته شده اند. برای ساخت یک بات تلگرام، شما نیاز دارید تا توسط اکانت 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 برای ارسال تصویر استفاده نمودیم. همچنین، سایر ویژگی های زبان روبی نیز در این کد استفاده شده است. اگر کدهای موجود در این بات ساده، برای شما نا آشناست، بهتر است ابتدا مستندات روبی، سپس مطالب قدیمی همین وبسایت و در نهایت مستندات جم تلگرام بات را مطالعه فرمایید. همچنین، درصورت داشتن سوال، میتوانید در بخش کامنت ها ، سوال خود را مطرح کنید.

10 دیدگاه برای “ نوشتن روبات تلگرام در روبی

  1. مهراد گفت:

    خیلی هم عالی 🙂 ممنون

  2. mohammad گفت:

    ino koja bayad run konim to ide ya terminal? yekam bishtar tozih bedid

    • prp-e گفت:

      از ترمینال باید ران بشه.

      • mohammad گفت:

        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 `’

  3. mohammad گفت:

    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

  4. صادق گفت:

    به تعدادی نیروی ریلز کار و یک نفر ui کار آشنا به ریلز نیاز داریم برای یک پروژه جذاب هر یک از دوستان که علاقه دارد رزومه خود را به houshmand@salamat-yar.com ارسال نماید
    زمینه کار سلامت الکترونیک است و چارچوب توسعه اسکرام
    http://www.salamat-yar.com

  5. مرتضی گفت:

    سلام

    ببخشین کسی توکن برای استخاره و فال حافظ نداره؟

پاسخ دادن به صادق لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *