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