Sha256: 8a7dd30326ee77d819480ef132647d47824a34e2388ecfaf911c9100b645ba29
Contents?: true
Size: 1.88 KB
Versions: 3
Compression:
Stored size: 1.88 KB
Contents
module MatrixQQ class QQ SIGN = %i[ message private group get_group_list event group_upload group_admin group_decrease group_increase friend_add friend_request join_request invite_request all unknow ].freeze class << self SIGN.each { |i| attr_accessor i } end SIGN.each { |i| QQ.send (i.to_s + '='), [] } CQ = { 'text' => ->(msg) { msg['data']['text'] }, 'face' => ->(msg) { "[QQ 表情:#{msg['data']['id']}]" }, 'bface' => ->(msg) { "[QQ 原创表情:#{msg['data']['id']}]" }, 'sface' => ->(msg) { "[QQ 小表情:#{msg['data']['id']}]" }, 'emoji' => ->(msg) { [msg['data']['id'].to_i].pack 'U' }, 'record' => ->(___) { '[语音]' }, 'image' => ->(msg) { msg['data']['url'] }, 'at' => ->(msg) { "@#{msg['data']['qq']} " }, 'rps' => ->(msg) { "[#{%w[石头 剪刀 布][msg['data']['type'] - 1]}]" }, 'dice' => ->(msg) { "[掷得 #{msg['data']['type']} 点]" }, 'shake' => ->(___) { '[窗口抖动]' }, 'music' => ->(msg) { "[音乐 #{msg['data'].to_json}]" }, 'share' => ->(msg) { "[分享 #{msg['data'].to_json}]" }, 'anonymous' => ->(___) { '[匿名消息:]' } }.freeze attr_reader :dbus, :info attr_accessor :matrix_dbus def initialize(dbus) @dbus = DBus.new dbus reg end def reg SIGN.each do |i| @dbus.obj.on_signal i.to_s do |json| info = JSON.parse json QQ.send(i).each do |func| MatrixQQ.log(func.name) do func.new(@dbus, @matrix_dbus, info.dup).run end end end end end def self.cq_call(msg) m = QQ::CQ[msg['type']] raise "Unknow type #{msg['type']}" if m.nil? m = m.call(msg) return '' if m.nil? m end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
matrix_qq-0.3.2 | lib/matrix_qq/qq/qq.rb |
matrix_qq-0.3.1 | lib/matrix_qq/qq/qq.rb |
matrix_qq-0.3.0 | lib/matrix_qq/qq/qq.rb |