Sha256: e4bbff7133a2eeb0cc48a3c0050a9ae0b92e4c1b0a97ce20791b7f32856287a2

Contents?: true

Size: 1.59 KB

Versions: 2

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true

module Kanal
  module Interfaces
    module Telegram
      module Plugins
        # This class registers properties and hooks for telegram bot library integration
        class TelegramIntegrationPlugin < Kanal::Core::Plugins::Plugin
          def name
            :telegram_properties
          end

          def setup(core)
            register_parameters core
            register_hooks core
          end

          def register_parameters(core)
            core.register_input_parameter :tg_message, readonly: true
            core.register_input_parameter :tg_text, readonly: true
            core.register_input_parameter :tg_chat_id, readonly: true
            core.register_input_parameter :tg_username, readonly: true

            core.register_output_parameter :tg_chat_id
            core.register_output_parameter :tg_text
            core.register_output_parameter :tg_reply_markup
            core.register_output_parameter :tg_image_path
            core.register_output_parameter :tg_audio_path
            core.register_output_parameter :tg_document_path
          end

          def register_hooks(core)
            core.hooks.attach :input_just_created do |input|
              input.source = :telegram
            end

            core.hooks.attach :input_before_router do |input|
              input.body = input.tg_text
            end

            core.hooks.attach :output_before_returned do |input, output|
              output.tg_text = output.body
              output.tg_chat_id = input.tg_chat_id
            end
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
kanal-interfaces-telegram-0.2.1 lib/kanal/interfaces/telegram/plugins/telegram_integration_plugin.rb
kanal-interfaces-telegram-0.2.0 lib/kanal/interfaces/telegram/plugins/telegram_integration_plugin.rb