lib/tasks/telegram-bot.rake
# 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