ruby-cqhttp 0.0.3 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 87e4e75d7c60595d1c8b7819e463ef23f400300735a747e6176e12ea6e7d3591
4
- data.tar.gz: 88a63f60407888c0ba0a258ccbca71253e84492268bfd87dc193e319554c40dd
3
+ metadata.gz: dc16893adf2a71ea90af191c3d83c6bbea44417d58b661914f10d1a38284b6fa
4
+ data.tar.gz: b25414575ff09da58a404ec81fca6832a195f9935b3a5c0e9da1f629db002479
5
5
  SHA512:
6
- metadata.gz: 9ad14175baf0305ba55f86f33446772336939fa89f3163b274906100c8d520bb9e8a51174b6e92793e4d4dc375df092bf35fa4ad27f6e9dd28f18da06c9f3249
7
- data.tar.gz: 31f469412b075c00bb95f6ec3acb1190a20647391fba290cb06f8449669eddb570612de507a689fe1c5993f7695c8d12af5ff3771265543387ca8e5f0a5e1b8d
6
+ metadata.gz: 83bd2c919fd51fe8f356fc91ab2c4a2e04b4f778ff70b492fe0f5d18b07165fb3bf201caecfc818ecca812fd1c7f1e200e6d6b6407233b7d9e34aeeadefbd9e2
7
+ data.tar.gz: d0dc12c9582ca47c100886c80c4baa2eed56e44a44b42f09d8a1f7b80da01b61619ed7aa652546c9902d9c6c737742987835e6680d83466905bbbb1fbc936938
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ ruby-cqhttp-*.gem
2
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
6
+
7
+ gem 'faye-websocket'
8
+ gem 'eventmachine'
9
+ gem 'json'
10
+ gem 'event_emitter'
11
+ gem 'uri', '~> 0.10.1'
data/README.md ADDED
@@ -0,0 +1,59 @@
1
+ # RUBY-CQHTTP
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/ruby-cqhttp.svg)](https://badge.fury.io/rb/ruby-cqhttp)
4
+ [![yard docs](http://img.shields.io/badge/yard-docs-blue.svg)](https://www.rubydoc.info/gems/ruby-cqhttp)
5
+
6
+ 用 Ruby 写 QQ 机器人!
7
+
8
+ ## 使用
9
+
10
+ 安装
11
+
12
+ $ gem install ruby-cqhttp
13
+
14
+ 或者
15
+
16
+ 在 `Gemfile` 中添加
17
+
18
+ ```ruby
19
+ gem 'eventmachine'
20
+ ```
21
+
22
+ 然后运行
23
+
24
+ $ bundle
25
+
26
+ 安装
27
+
28
+ ## 示例
29
+
30
+ ```ruby
31
+ require 'ruby-cqhttp'
32
+
33
+ CQHttp::Bot.connect host: '127.0.0.1', port: 6700 do |bot|
34
+ bot.on :logged do |botQQ|
35
+ CQHttp::Utils.log('我开了欸')
36
+ end
37
+
38
+ bot.on :message do |msg, sdr, tar|
39
+ CQHttp::Utils.log('我收到消息了欸')
40
+ end
41
+
42
+ # 获取并发出好友撤回的消息
43
+ bot.on :notice do |notice_type, data|
44
+ if notice_type == 'friend_recall'
45
+ req = CQHttp::Api.get_msg data['message_id']
46
+ bot.sendPrivateMessage req['message'], req['sender']['user_id']
47
+ end
48
+ end
49
+
50
+ # 自动同意群邀请和好友请求
51
+ bot.on :request do |request_type, sub_type, flag|
52
+ if request_type == 'group'
53
+ CQHttp::Api.acceptGroupRequest(flag, sub_type) if sub_type == 'invite'
54
+ elsif request_type == 'friend'
55
+ CQHttp::Api.acceptFriendRequest(flag)
56
+ end
57
+ end
58
+ end
59
+ ```
data/lib/Bot/Api.rb CHANGED
@@ -1,103 +1,113 @@
1
1
  module CQHttp
2
2
  class Api
3
3
  attr_accessor :apiUrl
4
-
5
- @apiUrl = 'http://127.0.0.1:5700'
6
4
  class << self
5
+ def setUrl(apiIp:'127.0.0.1', apiPort:5700)
6
+ @apiUrl = URI::HTTP.build(host: apiIp, port: apiPort)
7
+ end
7
8
  def setGroupName(group_id, group_name, url=@apiUrl)
9
+ url.path = "/set_group_name"
8
10
  ret = { group_id: group_id.to_i, group_name: group_name }.to_json
9
- data = JSON.parse(Utils.httpPost("#{url}/set_group_name", ret))
11
+ data = JSON.parse(Utils.httpPost(url, ret))
10
12
  if data['status'] == 'ok'
11
- Utils.log Time.new, '√', '设置群头像成功'
13
+ Utils.log '设置群头像成功'
12
14
  else
13
- Utils.log Time.new, '×', '设置群头像失败'
15
+ Utils.log '设置群头像失败', Logger::WARN
14
16
  end
15
17
  end
16
18
 
17
19
  def getImage(file, url=@apiUrl) # UNFINSHED
20
+ url.path = "/get_image"
18
21
  ret = { file: file }.to_json
19
- data = JSON.parse(Utils.httpPost("#{url}/get_image", ret))
22
+ data = JSON.parse(Utils.httpPost(url, ret))
20
23
  if data['status'] == 'ok'
21
- Utils.log Time.new, '√', '下载图片成功'
24
+ Utils.log '下载图片成功'
22
25
  return data['data']
23
26
  else
24
- Utils.log Time.new, '×', '下载图片失败'
27
+ Utils.log '下载图片失败', Logger::WARN
25
28
  end
26
29
  end
27
30
 
28
31
  def get_msg(message_id, url=@apiUrl) # UNFINSHED
32
+ url.path = "/get_msg"
29
33
  ret = { message_id: message_id }.to_json
30
- data = JSON.parse(Utils.httpPost("#{url}/get_msg", ret))
34
+ data = JSON.parse(Utils.httpPost(url, ret))
31
35
  if data['status'] == 'ok'
32
- Utils.log Time.new, '√', '消息获取成功'
36
+ Utils.log '消息获取成功'
33
37
  return data['data']
34
38
  else
35
- Utils.log Time.new, '×', '消息获取失败'
39
+ Utils.log '消息获取失败', Logger::WARN
36
40
  end
37
41
 
38
42
  end
39
43
 
40
44
  def sendPrivateMessage(msg, user_id, url=@apiUrl)
45
+ url.path = "/send_private_msg"
41
46
  ret = { user_id: user_id, message: msg }.to_json
42
- data = JSON.parse(Utils.httpPost("#{url}/send_private_msg", ret))
47
+ data = JSON.parse(Utils.httpPost(url, ret))
43
48
  if data['status'] == 'ok'
44
49
  message_id = data['data']['message_id']
45
- Utils.log Time.new, '↑', "发送至私聊 #{user_id} 的消息: #{msg} (#{message_id})"
50
+ Utils.log "发送至私聊 #{user_id} 的消息: #{msg} (#{message_id})"
46
51
  return message_id
47
52
  else
48
- Utils.log Time.new, '×', '发送消息失败'
53
+ Utils.log '发送消息失败', Logger::WARN
49
54
  end
50
55
  end
51
56
 
52
57
  def sendGroupMessage(msg, group_id, url=@apiUrl)
58
+ url.path = "/send_group_msg"
53
59
  ret = { group_id: group_id, message: msg }.to_json
54
- data = JSON.parse(Utils.httpPost("#{url}/send_group_msg", ret))
60
+ data = JSON.parse(Utils.httpPost(url, ret))
55
61
  if data['status'] == 'ok'
56
- message_id = data['data']['group_id']
57
- Utils.log Time.new, '↑', "发送至群 #{user_id} 的消息: #{msg} (#{message_id})"
62
+ message_id = data['data']['message_id']
63
+ Utils.log "发送至群 #{group_id} 的消息: #{msg} (#{message_id})"
58
64
  return message_id
59
65
  else
60
- Utils.log Time.new, '×', '发送消息失败'
66
+ Utils.log '发送消息失败', Logger::WARN
61
67
  end
62
68
  end
63
69
 
64
70
  def acceptFriendRequest(flag, url=@apiUrl)
71
+ url.path = "/set_friend_add_request"
65
72
  ret = { flag: flag, approve: true }.to_json
66
- data = JSON.parse(Utils.httpPost("#{url}/set_friend_add_request", ret))
73
+ data = JSON.parse(Utils.httpPost(url, ret))
67
74
  if data['status'] == 'ok'
68
- Utils.log Time.new, '√', '已通过好友请求'
75
+ Utils.log '已通过好友请求'
69
76
  else
70
- Utils.log Time.new, '×', '请求通过失败'
77
+ Utils.log '请求通过失败', Logger::WARN
71
78
  end
72
79
  end
73
80
 
74
81
  def refuseFriendRequest(flag, url=@apiUrl)
82
+ url.path = "/set_friend_add_request"
75
83
  ret = { flag: flag, approve: false }.to_json
76
- user_id = JSON.parse(Utils.httpPost("#{url}/set_friend_add_request", ret))
84
+ user_id = JSON.parse(Utils.httpPost(url, ret))
77
85
  if data['status'] == 'ok'
78
- Utils.log Time.new, '√', '已拒绝好友请求'
86
+ Utils.log '已拒绝好友请求'
79
87
  else
80
- Utils.log Time.new, '×', '请求拒绝失败'
88
+ Utils.log '请求拒绝失败', Logger::WARN
81
89
  end
82
90
  end
83
91
 
84
92
  def acceptGroupRequest(flag, sub_type, url=@apiUrl)
93
+ url.path = "/set_group_add_request"
85
94
  ret = { flag: flag, sub_type: sub_type, approve: true }.to_json
86
- data = JSON.parse(Utils.httpPost("#{url}/set_group_add_request", ret))
95
+ data = JSON.parse(Utils.httpPost(url, ret))
87
96
  if data['status'] == 'ok'
88
- Utils.log Time.new, '√', '已通过加群请求'
97
+ Utils.log '已通过加群请求'
89
98
  else
90
- Utils.log Time.new, '×', '请求通过失败'
99
+ Utils.log '请求通过失败', Logger::WARN
91
100
  end
92
101
  end
93
102
 
94
103
  def refuseGroupRequest(flag, sub_type, url=@apiUrl)
104
+ url.path = "/set_group_add_request"
95
105
  ret = { flag: flag, sub_type: sub_type, approve: false }.to_json
96
- data = JSON.parse(Utils.httpPost("#{url}/set_group_add_request", ret))
106
+ data = JSON.parse(Utils.httpPost(url, ret))
97
107
  if data['status'] == 'ok'
98
- Utils.log Time.new, '√', '已拒绝加群请求'
108
+ Utils.log '已拒绝加群请求'
99
109
  else
100
- Utils.log Time.new, '×', '请求拒绝失败'
110
+ Utils.log '请求拒绝失败', Logger::WARN
101
111
  end
102
112
  end
103
113
  end
data/lib/Bot/Bot.rb CHANGED
@@ -2,9 +2,11 @@ module CQHttp
2
2
  class Bot
3
3
  Sender = Struct.new(:age, :member_role, :card, :qqlevel, :nickname, :title, :sex)
4
4
  Target = Struct.new(:messagetype, :time, :group_id, :user_id, :message_id, :message)
5
-
6
- def self.connect(url, debugmode=false)
7
- client = ::CQHttp::Bot::WebSocket.new(url, debugmode)
5
+ def self.connect(host:, port:)
6
+ url = URI::WS.build(host: host, port: port)
7
+ Api.setUrl()
8
+ Utils.log '正在连接到 ' << url.to_s
9
+ client = ::CQHttp::Bot::WebSocket.new(url)
8
10
  yield client if block_given?
9
11
  client.connect
10
12
  client
@@ -12,30 +14,25 @@ module CQHttp
12
14
 
13
15
  class WebSocket
14
16
  attr_accessor :url
15
- attr_accessor :debugmode
16
17
  attr_accessor :selfID
17
18
 
18
19
  include EventEmitter
19
20
 
20
- def initialize(url, debugmode)
21
+ def initialize(url)
21
22
  @url = url
22
- @debugmode = debugmode
23
23
  end
24
24
 
25
25
  def connect
26
26
  EM.run do
27
- @ws = Faye::WebSocket::Client.new(@url)
28
-
29
- @ws.on :open do
30
- end
27
+ @ws = Faye::WebSocket::Client.new(@url.to_s)
31
28
 
32
29
  @ws.on :message do |event|
33
30
  Thread.new { dataParse(event.data)}
34
31
  end
35
32
 
36
- @ws.on :close do
37
- emit :close
38
- Utils.log Time.new, '!', '已断开连接'
33
+ @ws.on :close do |event|
34
+ emit :close, event
35
+ Utils.log '连接断开'
39
36
  @ws = nil
40
37
  exit
41
38
  end
@@ -50,15 +47,20 @@ module CQHttp
50
47
 
51
48
  def sendPrivateMessage(msg, user_id)
52
49
  ret = { action: 'send_private_msg', params: { user_id: user_id, message: msg }, echo: 'BotPrivateMessage' }.to_json
53
- Utils.log Time.new, '↑', "发送至私聊 #{user_id} 的消息: #{msg}"
50
+ Utils.log "发送至私聊 #{user_id} 的消息: #{msg}"
54
51
  @ws.send ret
55
52
  end
56
53
 
57
54
  def sendGroupMessage(msg, group_id)
58
55
  ret = { action: 'send_group_msg', params: { group_id: group_id, message: msg }, echo: 'BotGroupMessage' }.to_json
59
- Utils.log Time.new, '↑', "发送至群 #{group_id} 的消息: #{msg}"
56
+ Utils.log "发送至群 #{group_id} 的消息: #{msg}"
60
57
  @ws.send ret
61
58
  end
59
+
60
+ def sendMessage(msg, target)
61
+ sendGroupMessage msg, target.group_id if target.messagetype == 'group'
62
+ sendPrivateMessage msg, target.user_id if target.messagetype == 'private'
63
+ end
62
64
 
63
65
  private
64
66
 
@@ -69,12 +71,10 @@ module CQHttp
69
71
  tar.time = msg['time']
70
72
  if msg['meta_event_type'] == 'lifecycle' && msg['sub_type'] == 'connect'
71
73
  @selfID = msg['self_id']
72
- Utils.log Time.at(tar.time), '!', "连接成功, BotQQ: #{@selfID}"
74
+ Utils.log "连接成功, BotQQ: #{@selfID}"
73
75
  emit :logged, @selfID
74
76
  end
75
- if @debugmode == true # 判断是否为debug模式
76
- puts msg if msg['meta_event_type'] != 'heartbeat' # 过滤心跳
77
- end
77
+ Utils.log msg, Logger::DEBUG if msg['meta_event_type'] != 'heartbeat' # 过滤心跳
78
78
  case msg['post_type']
79
79
  #
80
80
  # 请求事件
@@ -83,10 +83,10 @@ module CQHttp
83
83
  case msg['request_type']
84
84
  when 'group'
85
85
  if msg['sub_type'] == 'invite' # 加群邀请
86
- Utils.log Time.at(tar.time), '↓', "收到用户 #{msg['user_id']} 的加群 #{msg['group_id']} 请求 (#{msg['flag']})"
86
+ Utils.log "收到用户 #{msg['user_id']} 的加群 #{msg['group_id']} 请求 (#{msg['flag']})"
87
87
  end
88
88
  when 'friend' # 加好友邀请
89
- Utils.log Time.at(tar.time), '↓', "收到用户 #{msg['user_id']} 的好友请求 (#{msg['flag']})"
89
+ Utils.log "收到用户 #{msg['user_id']} 的好友请求 (#{msg['flag']})"
90
90
  end
91
91
  emit :request, msg['request_type'], msg['sub_type'], msg['flag']
92
92
  #
@@ -96,12 +96,12 @@ module CQHttp
96
96
  case msg['notice_type']
97
97
  when 'group_decrease' # 群数量减少
98
98
  if msg['sub_type'] == 'kick_me' # 被踢出
99
- Utils.log Time.at(tar.time), '!', "被 #{msg['operator_id']} 踢出群 #{msg['group_id']}"
99
+ Utils.log "被 #{msg['operator_id']} 踢出群 #{msg['group_id']}"
100
100
  end
101
101
  when 'group_recall'
102
- Utils.log Time.at(tar.time), '!', "群 #{msg['group_id']} 中 #{msg['user_id']} 撤回了一条消息 (#{msg['message_id']})"
102
+ Utils.log "群 #{msg['group_id']} 中 #{msg['user_id']} 撤回了一条消息 (#{msg['message_id']})"
103
103
  when 'friend_recall'
104
- Utils.log Time.at(tar.time), '!', "好友 #{msg['user_id']} 撤回了一条消息 (#{msg['message_id']})"
104
+ Utils.log "好友 #{msg['user_id']} 撤回了一条消息 (#{msg['message_id']})"
105
105
  end
106
106
  emit :notice, msg['notice_type'], msg
107
107
 
@@ -123,10 +123,10 @@ module CQHttp
123
123
  sdr.member_role = msg['sender']['role'] # 群成员地位
124
124
  sdr.qqlevel = msg['sender']['level'] # 群成员等级
125
125
  if tar.messagetype == 'group' # 判断是否为群聊
126
- Utils.log Time.at(tar.time), '↓', "收到群 #{tar.group_id} 内 #{sdr.nickname}(#{tar.user_id}) 的消息: #{tar.message} (#{tar.message_id})"
126
+ Utils.log "收到群 #{tar.group_id} 内 #{sdr.nickname}(#{tar.user_id}) 的消息: #{tar.message} (#{tar.message_id})"
127
127
  emit :groupMessage, tar.message, sdr, tar
128
128
  else
129
- Utils.log Time.at(tar.time), '↓', "收到好友 #{sdr.nickname}(#{tar.user_id}) 的消息: #{tar.message} (#{tar.message_id})"
129
+ Utils.log "收到好友 #{sdr.nickname}(#{tar.user_id}) 的消息: #{tar.message} (#{tar.message_id})"
130
130
  emit :privateMessage, tar.message, sdr, tar
131
131
  end
132
132
  emit :message, tar.message, sdr, tar
data/lib/Bot/Utils.rb CHANGED
@@ -1,14 +1,37 @@
1
1
  module CQHttp
2
2
  class Utils
3
+ attr_accessor :stdLogger, :fileLogger, :loggerFile
3
4
  class << self
4
- def log(time, status, str)
5
- puts "[#{time.strftime('%Y-%m-%d %H:%M:%S')}][#{status}]: #{str}"
5
+ def setLogger(logger)
6
+ logger.level = 'INFO'
7
+ logger.formatter = proc do |severity, datetime, progname, msg|
8
+ if progname == nil
9
+ "[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}][#{severity}]: #{msg.gsub(/\n/,'\n').gsub(/\r/,'\r') }\n"
10
+ else
11
+ "[#{datetime.strftime('%Y-%m-%d %H:%M:%S')}][#{progname}][#{severity}]: #{msg.gsub(/\n/,'\n').gsub(/\r/,'\r') }\n"
12
+ end
13
+ end
14
+ logger
15
+ end
16
+ def initLogger(loggerFile=nil)
17
+ @loggerFile = loggerFile
18
+ @stdLogger = setLogger(Logger.new(STDOUT))
19
+ @fileLogger = setLogger(Logger.new(@loggerFile, 'daily')) if @loggerFile
20
+ end
21
+
22
+ def setLoggerLevel(loggerLevel)
23
+ @stdLogger.level = loggerLevel
24
+ @fileLogger.level = loggerLevel if @loggerFile
25
+ end
26
+
27
+ def log(str, severity=Logger::INFO, app="RUBY-CQHTTP")
28
+ @stdLogger.log(severity, str, app)
29
+ @fileLogger.log(severity, str, app) if @loggerFile
6
30
  end
7
31
 
8
- def httpPost(*args)
9
- url = URI.parse args[0]
32
+ def httpPost(url, ret)
10
33
  req = Net::HTTP::Post.new(url.path, { 'Content-Type' => 'application/json' })
11
- req.body = args[1]
34
+ req.body = ret
12
35
  res = Net::HTTP.start(url.hostname, url.port) do |http|
13
36
  http.request(req)
14
37
  end
data/lib/ruby-cqhttp.rb CHANGED
@@ -3,6 +3,9 @@ require 'eventmachine'
3
3
  require 'json'
4
4
  require 'event_emitter'
5
5
  require 'net/http'
6
+ require 'uri/ws'
7
+ require 'uri'
8
+ require 'logger'
6
9
 
7
10
  module CQHttp
8
11
  autoload :Bot, File.expand_path('Bot/Bot', __dir__)
@@ -10,3 +13,4 @@ module CQHttp
10
13
  autoload :Utils, File.expand_path('Bot/Utils', __dir__)
11
14
  end
12
15
 
16
+ CQHttp::Utils.initLogger
data/ruby-cqhttp.gemspec CHANGED
@@ -3,19 +3,23 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = 'ruby-cqhttp'
6
- s.version = '0.0.3'
7
- s.date = '2020-11-04'
6
+ s.version = '0.0.6'
7
+ s.date = '2021-03-23'
8
8
  s.summary = 'ruby-cqhttp for osucat'
9
9
  s.description = 'ruby-cqhttp for osucat'
10
10
  s.authors = ['fantasyzhjk']
11
11
  s.email = 'fantasyzhjk@outlook.com'
12
- s.files = ['lib/ruby-cqhttp.rb']
13
- s.homepage = 'http://rubygems.org/gems/ruby-cqhttp'
12
+ s.platform = Gem::Platform::RUBY
13
+ s.homepage = 'https://github.com/fantasyzhjk/ruby-cqhttp/'
14
14
  s.license = 'MIT'
15
15
  s.files = `git ls-files -z`.split("\x0")
16
16
  s.require_paths = ['lib']
17
+ s.required_ruby_version = '>= 2.7.0'
17
18
 
18
- # s.add_runtime_dependency 'json', '~> 1.1'
19
- # s.add_runtime_dependency 'eventmachine', '~> 1.1'
20
- # s.add_runtime_dependency 'faye-websocket', '~> 1.1'
19
+ s.add_runtime_dependency 'json'
20
+ s.add_runtime_dependency 'logger'
21
+ s.add_runtime_dependency 'uri', '~> 0.10.1'
22
+ s.add_runtime_dependency 'eventmachine'
23
+ s.add_runtime_dependency 'faye-websocket'
24
+ s.add_runtime_dependency 'event_emitter'
21
25
  end
metadata CHANGED
@@ -1,27 +1,114 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-cqhttp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - fantasyzhjk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-11-04 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2021-03-23 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: json
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: logger
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: uri
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: 0.10.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: 0.10.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: eventmachine
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faye-websocket
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: event_emitter
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
13
97
  description: ruby-cqhttp for osucat
14
98
  email: fantasyzhjk@outlook.com
15
99
  executables: []
16
100
  extensions: []
17
101
  extra_rdoc_files: []
18
102
  files:
103
+ - ".gitignore"
104
+ - Gemfile
105
+ - README.md
19
106
  - lib/Bot/Api.rb
20
107
  - lib/Bot/Bot.rb
21
108
  - lib/Bot/Utils.rb
22
109
  - lib/ruby-cqhttp.rb
23
110
  - ruby-cqhttp.gemspec
24
- homepage: http://rubygems.org/gems/ruby-cqhttp
111
+ homepage: https://github.com/fantasyzhjk/ruby-cqhttp/
25
112
  licenses:
26
113
  - MIT
27
114
  metadata: {}
@@ -33,14 +120,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
33
120
  requirements:
34
121
  - - ">="
35
122
  - !ruby/object:Gem::Version
36
- version: '0'
123
+ version: 2.7.0
37
124
  required_rubygems_version: !ruby/object:Gem::Requirement
38
125
  requirements:
39
126
  - - ">="
40
127
  - !ruby/object:Gem::Version
41
128
  version: '0'
42
129
  requirements: []
43
- rubygems_version: 3.0.3
130
+ rubygems_version: 3.1.2
44
131
  signing_key:
45
132
  specification_version: 4
46
133
  summary: ruby-cqhttp for osucat