Sha256: 73a99644b96ba44a531d50b9f2cc0f29d52427df92fe6d917846f19eca3df75b

Contents?: true

Size: 925 Bytes

Versions: 1

Compression:

Stored size: 925 Bytes

Contents

module Ruboty
  module Handlers
    class GoodNight < Base
      BRAIN_NAMESPACE = 'ruboty-goodnight'

      on /おやすみ/, name: 'greet', description: 'greet to ruboty'

      def initialize(*args)
        super
        if robot.brain.data[BRAIN_NAMESPACE]
          room.reply('おはようございます')
          trap_message(room)
        end
      end

      def greet(message)
        save(message)
        message.reply('まだ寝ないよ!')
      end

      private

      def save(message)
        robot.brain.data[BRAIN_NAMESPACE] = message.original.except(:robot)
        trap_message(message)
      end

      def room
        Ruboty::Message.new(robot.brain.data[BRAIN_NAMESPACE].merge(robot: robot))
      end

      def trap_message(message)
        Signal.trap('TERM') do
          message.reply('おやすみ〜')
          Process.kill 'QUIT', Process.pid
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ruboty-good-night-0.1.1 lib/ruboty/handlers/good_night.rb