matrix_qq 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.yaml +9 -2
- data/lib/matrix_qq/matrix/forward/main.rb +4 -5
- data/lib/matrix_qq/matrix/matrix.rb +4 -11
- data/lib/matrix_qq/matrix/send.rb +4 -12
- data/lib/matrix_qq/qq/forward_group/matrix.rb +6 -8
- data/lib/matrix_qq/qq/log.rb +4 -8
- data/lib/matrix_qq/qq/qq.rb +27 -9
- data/lib/matrix_qq/utils.rb +14 -0
- data/lib/matrix_qq/version.rb +1 -1
- data/lib/matrix_qq.rb +1 -0
- data/matrix_qq.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 565d456e004a986b188f1ce4844883786e30d307
|
4
|
+
data.tar.gz: bc9c7c39c4c8be44beaf834fc713d2b6bbb8f0d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c84807ae0c75593ca4266d15fc18e5e25d5d6d7dd254ee1214bb9a02bfbc41490b4d605d8709402e668fc8e1233699330233502a59b61d69cc138581caf3a005
|
7
|
+
data.tar.gz: 460f1877875aa6d31f766fcc88a38100d065e42277620307932aafc1437934247eec1d3fe762fedd40dc0ed78a5318dd0663cecfcad475d10562bfdf610de605
|
data/CHANGELOG.yaml
CHANGED
@@ -1,7 +1,14 @@
|
|
1
1
|
# Notice: Incompatible items start with `!`
|
2
2
|
0.2.1:
|
3
|
-
|
4
|
-
-
|
3
|
+
Feature:
|
4
|
+
- Matrix send message will add forword parm
|
5
|
+
- CQ code parse
|
6
|
+
- utils:
|
7
|
+
log
|
8
|
+
Change:
|
9
|
+
- Start/End with uuid
|
10
|
+
- One step json parse
|
11
|
+
- move log to utils
|
5
12
|
0.2.0:
|
6
13
|
Change:
|
7
14
|
- ! config file add `.rb`
|
@@ -26,7 +26,7 @@ module MatrixQQ
|
|
26
26
|
def each_event(events, tunnel)
|
27
27
|
events.each do |event|
|
28
28
|
next unless event['type'] == 'm.room.message'
|
29
|
-
next if exist
|
29
|
+
next if exist event['content']['forword']
|
30
30
|
tunnel[:to].each_pair do |to_room, type|
|
31
31
|
call_module(event, to_room, type)
|
32
32
|
end
|
@@ -41,10 +41,9 @@ module MatrixQQ
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
def exist(
|
45
|
-
|
46
|
-
|
47
|
-
end
|
44
|
+
def exist(forword)
|
45
|
+
return false if forword.nil?
|
46
|
+
!forword
|
48
47
|
end
|
49
48
|
end # Forward
|
50
49
|
|
@@ -30,21 +30,14 @@ module MatrixQQ
|
|
30
30
|
def reg
|
31
31
|
SIGN.each do |i|
|
32
32
|
@dbus.obj.on_signal i.to_s do |json|
|
33
|
-
parse json
|
34
|
-
info = @info
|
33
|
+
info = JSON.parse json
|
35
34
|
Matrix.send(i).each do |func|
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
MatrixQQ.log(func.name) do
|
36
|
+
func.new(@dbus, @qq_dbus, info.dup).run
|
37
|
+
end
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
43
|
-
|
44
|
-
private
|
45
|
-
|
46
|
-
def parse(json)
|
47
|
-
@info = JSON.parse json
|
48
|
-
end
|
49
42
|
end
|
50
43
|
end
|
@@ -1,19 +1,11 @@
|
|
1
1
|
module MatrixQQ
|
2
2
|
class Matrix
|
3
3
|
module Send
|
4
|
-
class << self
|
5
|
-
attr_accessor :ignore, :ignore_lock
|
6
|
-
end
|
7
|
-
self.ignore = []
|
8
|
-
self.ignore_lock = Mutex.new
|
9
|
-
|
10
4
|
def self.raw(dbus, room_id, event_type, body)
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
ignore << (res['event_id'])
|
16
|
-
end
|
5
|
+
txn_id = SecureRandom.hex(32)
|
6
|
+
puts "send #{body}" if $VERBOSE
|
7
|
+
uri = "/rooms/#{room_id}/send/#{event_type}/#{txn_id}"
|
8
|
+
dbus.put uri, body.merge(forword: false)
|
17
9
|
end
|
18
10
|
|
19
11
|
def self.text(dbus, room_id, message)
|
@@ -18,14 +18,12 @@ module MatrixQQ
|
|
18
18
|
|
19
19
|
def message(messages)
|
20
20
|
messages.inject('') do |obj, msg|
|
21
|
-
obj +
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
when 'image' then msg['data']['url']
|
28
|
-
end
|
21
|
+
obj + case msg['type']
|
22
|
+
when 'at' then
|
23
|
+
"@#{user msg['data']['qq'], @info['group_id']} "
|
24
|
+
when 'image' then msg['data']['url']
|
25
|
+
else QQ.cq_call msg
|
26
|
+
end
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
data/lib/matrix_qq/qq/log.rb
CHANGED
@@ -17,14 +17,10 @@ module MatrixQQ
|
|
17
17
|
|
18
18
|
def message(messages)
|
19
19
|
messages.inject('') do |obj, msg|
|
20
|
-
obj +
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
when 'face' then "[QQ 表情:#{msg['data']['id']}]"
|
25
|
-
when 'record' then '[语音]'
|
26
|
-
when 'image' then msg['data']['url']
|
27
|
-
end
|
20
|
+
obj + case msg['type']
|
21
|
+
when 'at' then "@#{user msg['data']['qq'], @info['group_id']} "
|
22
|
+
else QQ.cq_call msg
|
23
|
+
end
|
28
24
|
end
|
29
25
|
end
|
30
26
|
|
data/lib/matrix_qq/qq/qq.rb
CHANGED
@@ -23,6 +23,23 @@ module MatrixQQ
|
|
23
23
|
end
|
24
24
|
SIGN.each { |i| QQ.send (i.to_s + '='), [] }
|
25
25
|
|
26
|
+
CQ = {
|
27
|
+
'text' => ->(msg) { msg['data']['text'] },
|
28
|
+
'face' => ->(msg) { "[QQ 表情:#{msg['data']['id']}]" },
|
29
|
+
'bface' => ->(msg) { "[QQ 原创表情:#{msg['data']['id']}]" },
|
30
|
+
'sface' => ->(msg) { "[QQ 小表情:#{msg['data']['id']}]" },
|
31
|
+
'emoji' => ->(msg) { [msg['data']['id'].to_i].pack 'U' },
|
32
|
+
'record' => ->(___) { '[语音]' },
|
33
|
+
'image' => ->(msg) { msg['data']['url'] },
|
34
|
+
'at' => ->(msg) { "@#{msg['data']['qq']} " },
|
35
|
+
'rps' => ->(msg) { "[#{%w[石头 剪刀 布][msg['data']['type'] - 1]}]" },
|
36
|
+
'dice' => ->(msg) { "[掷得 #{msg['data']['type']} 点]" },
|
37
|
+
'shake' => ->(___) { '[窗口抖动]' },
|
38
|
+
'music' => ->(msg) { "[音乐 #{msg['data'].to_json}]" },
|
39
|
+
'share' => ->(msg) { "[分享 #{msg['data'].to_json}]" },
|
40
|
+
'anonymous' => ->(___) { '[匿名消息:]' }
|
41
|
+
}.freeze
|
42
|
+
|
26
43
|
attr_reader :dbus, :info
|
27
44
|
attr_accessor :matrix_dbus
|
28
45
|
|
@@ -34,21 +51,22 @@ module MatrixQQ
|
|
34
51
|
def reg
|
35
52
|
SIGN.each do |i|
|
36
53
|
@dbus.obj.on_signal i.to_s do |json|
|
37
|
-
parse json
|
38
|
-
info = @info
|
54
|
+
info = JSON.parse json
|
39
55
|
QQ.send(i).each do |func|
|
40
|
-
|
41
|
-
|
42
|
-
|
56
|
+
MatrixQQ.log(func.name) do
|
57
|
+
func.new(@dbus, @matrix_dbus, info.dup).run
|
58
|
+
end
|
43
59
|
end
|
44
60
|
end
|
45
61
|
end
|
46
62
|
end
|
47
63
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
64
|
+
def self.cq_call(msg)
|
65
|
+
m = QQ::CQ[msg['type']]
|
66
|
+
raise "Unknow type #{msg['type']}" if m.nil?
|
67
|
+
m = m.call(msg)
|
68
|
+
return '' if m.nil?
|
69
|
+
m
|
52
70
|
end
|
53
71
|
end
|
54
72
|
end
|
data/lib/matrix_qq/version.rb
CHANGED
data/lib/matrix_qq.rb
CHANGED
data/matrix_qq.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: matrix_qq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 71e6fd52
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '2.2'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: concurrent-ruby
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
description:
|
98
112
|
email:
|
99
113
|
- DAStudio.71e6fd52@gmail.com
|
@@ -129,6 +143,7 @@ files:
|
|
129
143
|
- lib/matrix_qq/qq/qq.rb
|
130
144
|
- lib/matrix_qq/qq/require.rb
|
131
145
|
- lib/matrix_qq/qq/send.rb
|
146
|
+
- lib/matrix_qq/utils.rb
|
132
147
|
- lib/matrix_qq/version.rb
|
133
148
|
- matrix_qq.gemspec
|
134
149
|
homepage: https://github.com/71e6fd52/matrix_qq
|