From dc801a1fbeefe3720d101d67a279649c1e84afd6 Mon Sep 17 00:00:00 2001 From: Teal <git@teal.is> Date: Sat, 25 May 2024 22:28:07 +0200 Subject: [PATCH] start subscriber --- app/subscribers/telegram_bot_subscriber.rb | 31 ++++++++++++++++++++++ config/initializers/subscribers.rb | 3 +++ 2 files changed, 34 insertions(+) create mode 100644 app/subscribers/telegram_bot_subscriber.rb create mode 100644 config/initializers/subscribers.rb diff --git a/app/subscribers/telegram_bot_subscriber.rb b/app/subscribers/telegram_bot_subscriber.rb new file mode 100644 index 0000000..bbbd606 --- /dev/null +++ b/app/subscribers/telegram_bot_subscriber.rb @@ -0,0 +1,31 @@ +class TelegramBotSubscriber + def self.subscribe + ActiveSupport::Notifications.subscribe(/republica\.import/) do |*args| + event = ActiveSupport::Notifications::Event.new(*args) + new.handle_event(event) # Call the instance method + end + end + + def handle_event(event) + # 1. Extract Relevant Information + model_name = event.name.split(".").last # Get "session" or "speaker" + record = event.payload[:record] + changes = event.payload[:changes] + + # 2. Format Message for Telegram + message = format_telegram_message(model_name, record, changes) + + # 3. Send Message via Telegram Bot API + # (Replace with your actual Telegram bot API integration) + # TelegramBotAPI.sendMessage(chat_id: YOUR_CHAT_ID, text: message) + Rails.logger.info("event: #{message}") + end + + private + + def format_telegram_message(model_name, record, changes) + # Customize this to your desired message format + "**#{model_name.capitalize} Updated:**\n\n" + + changes.map { |attr, (from, to)| "- #{attr}: #{from} -> #{to}" }.join("\n") + end +end diff --git a/config/initializers/subscribers.rb b/config/initializers/subscribers.rb new file mode 100644 index 0000000..cc511bf --- /dev/null +++ b/config/initializers/subscribers.rb @@ -0,0 +1,3 @@ +Rails.application.config.to_prepare do + TelegramBotSubscriber.subscribe # Subscribe to notifications +end \ No newline at end of file -- GitLab