printercu/telegram-bot

View on GitHub
lib/tasks/telegram-bot.rake

Summary

Maintainability
Test Coverage
# frozen_string_literal: true

namespace :telegram do
  namespace :bot do
    desc 'Run poller. It broadcasts Rails.logger to STDOUT in dev like `rails s` do. ' \
      'Use LOG_TO_STDOUT to enable/disable broadcasting.'
    task :poller do
      ENV['BOT_POLLER_MODE'] = 'true'
      Rake::Task['environment'].invoke
      if ENV.fetch('LOG_TO_STDOUT') { Rails.env.development? }.present?
        console = ActiveSupport::Logger.new($stderr)
        if Rails.logger.respond_to?(:broadcast_to)
          Rails.logger.broadcast_to(console)
        else
          Rails.logger.extend ActiveSupport::Logger.broadcast console
        end
      end
      Telegram::Bot::UpdatesPoller.start(ENV['BOT']&.to_sym || :default)
    end

    desc 'Set webhook urls for all bots'
    task set_webhook: :environment do
      Telegram::Bot::Tasks.set_webhook
    end

    desc 'Delete webhooks for all or specific BOT'
    task :delete_webhook do
      Telegram::Bot::Tasks.delete_webhook
    end

    desc 'Perform logOut command for all or specific BOT'
    task :log_out do
      Telegram::Bot::Tasks.log_out
    end

    desc 'Perform `close` command for all or specific BOT'
    task :close do
      Telegram::Bot::Tasks.close
    end
  end
end