discorb 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/build_version.yml +53 -0
- data/Changelog.md +35 -1
- data/README.md +1 -1
- data/docs/cli/init.md +15 -1
- data/docs/events.md +8 -4
- data/docs/tutorial.md +1 -1
- data/examples/commands/bookmarker.rb +1 -1
- data/examples/commands/inspect.rb +1 -1
- data/examples/components/authorization_button.rb +1 -1
- data/examples/components/select_menu.rb +1 -1
- data/examples/extension/main.rb +1 -1
- data/examples/simple/eval.rb +1 -1
- data/examples/simple/ping_pong.rb +1 -1
- data/examples/simple/rolepanel.rb +1 -1
- data/examples/simple/wait_for_message.rb +1 -1
- data/lib/discorb/client.rb +4 -1
- data/lib/discorb/common.rb +1 -1
- data/lib/discorb/error.rb +3 -1
- data/lib/discorb/exe/init.rb +59 -2
- data/lib/discorb/exe/irb.rb +1 -1
- data/lib/discorb/flag.rb +1 -0
- data/lib/discorb/gateway.rb +70 -35
- data/lib/discorb/guild.rb +33 -1
- data/lib/discorb/http.rb +4 -3
- data/lib/discorb/integration.rb +1 -1
- data/lib/discorb/intents.rb +7 -3
- data/lib/discorb/member.rb +12 -1
- data/po/yard.pot +1 -1
- data/sig/discorb.rbs +7217 -7217
- metadata +3 -2
data/lib/discorb/guild.rb
CHANGED
@@ -502,7 +502,6 @@ module Discorb
|
|
502
502
|
# Fetch a member in the guild.
|
503
503
|
# @macro async
|
504
504
|
# @macro http
|
505
|
-
# @macro members_intent
|
506
505
|
#
|
507
506
|
# @param [#to_s] id The ID of the member to fetch.
|
508
507
|
#
|
@@ -519,6 +518,39 @@ module Discorb
|
|
519
518
|
end
|
520
519
|
end
|
521
520
|
|
521
|
+
# Fetch members in the guild.
|
522
|
+
# @macro async
|
523
|
+
# @macro http
|
524
|
+
# @macro members_intent
|
525
|
+
#
|
526
|
+
# @param [Integer] limit The maximum number of members to fetch, 0 for all.
|
527
|
+
# @param [Integer] after The ID of the member to start fetching after.
|
528
|
+
#
|
529
|
+
# @return [Async::Task<Array<Discorb::Member>>] The list of members.
|
530
|
+
#
|
531
|
+
def fetch_members(limit: 0, after: nil)
|
532
|
+
Async do
|
533
|
+
unless limit == 0
|
534
|
+
_resp, data = @client.http.get("/guilds/#{@id}/members?#{URI.encode_www_form({ after: after, limit: limit })}").wait
|
535
|
+
next data[:members].map { |m| Member.new(@client, @id, m[:user], m) }
|
536
|
+
end
|
537
|
+
ret = []
|
538
|
+
after = 0
|
539
|
+
loop do
|
540
|
+
params = { after: after, limit: 100 }
|
541
|
+
_resp, data = @client.http.get("/guilds/#{@id}/members?#{URI.encode_www_form(params)}").wait
|
542
|
+
ret += data.map { |m| Member.new(@client, @id, m[:user], m) }
|
543
|
+
after = data.last[:user][:id]
|
544
|
+
if data.length != 1000
|
545
|
+
break
|
546
|
+
end
|
547
|
+
end
|
548
|
+
ret
|
549
|
+
end
|
550
|
+
end
|
551
|
+
|
552
|
+
alias fetch_member_list fetch_members
|
553
|
+
|
522
554
|
#
|
523
555
|
# Search for members by name in the guild.
|
524
556
|
# @macro async
|
data/lib/discorb/http.rb
CHANGED
@@ -242,12 +242,13 @@ module Discorb
|
|
242
242
|
else
|
243
243
|
API_BASE_URL + path
|
244
244
|
end
|
245
|
-
URI(full_path)
|
245
|
+
uri = URI(full_path)
|
246
|
+
full_path.sub(uri.scheme + "://" + uri.host, "")
|
246
247
|
end
|
247
248
|
|
248
249
|
def get_response_data(resp)
|
249
|
-
if resp["Via"].nil?
|
250
|
-
raise CloudFlareBanError.new(@client
|
250
|
+
if resp["Via"].nil? && resp.code == "429"
|
251
|
+
raise CloudFlareBanError.new(resp, @client)
|
251
252
|
end
|
252
253
|
rd = resp.body
|
253
254
|
if rd.nil? || rd.empty?
|
data/lib/discorb/integration.rb
CHANGED
@@ -80,7 +80,7 @@ module Discorb
|
|
80
80
|
@enable_emoticons = data[:enable_emoticons]
|
81
81
|
@expire_behavior = self.class.expire_behavior[data[:expire_behavior]]
|
82
82
|
@expire_grace_period = data[:expire_grace_period]
|
83
|
-
@user = client.users[data[:user].to_i]
|
83
|
+
@user = @client.users[data[:user].to_i]
|
84
84
|
@account = Account.new(data[:account])
|
85
85
|
@subscriber_count = data[:subscriber_count]
|
86
86
|
@revoked = data[:revoked]
|
data/lib/discorb/intents.rb
CHANGED
@@ -82,7 +82,7 @@ module Discorb
|
|
82
82
|
if @raw_value.key?(name)
|
83
83
|
@raw_value[name]
|
84
84
|
elsif name.end_with?("=") && @raw_value.key?(name[0..-2].to_sym)
|
85
|
-
raise ArgumentError, "true/false expected"
|
85
|
+
raise ArgumentError, "true/false expected" unless args.is_a? TrueClass or args.is_a?(FalseClass)
|
86
86
|
|
87
87
|
@raw_value[name[0..-2].to_sym] = args
|
88
88
|
else
|
@@ -108,6 +108,10 @@ module Discorb
|
|
108
108
|
"#<#{self.class} value=#{value}>"
|
109
109
|
end
|
110
110
|
|
111
|
+
def to_h
|
112
|
+
@raw_value
|
113
|
+
end
|
114
|
+
|
111
115
|
class << self
|
112
116
|
# Create new intent object from raw value.
|
113
117
|
# @param value [Integer] The value of the intent.
|
@@ -121,12 +125,12 @@ module Discorb
|
|
121
125
|
|
122
126
|
# Create new intent object with default values.
|
123
127
|
def default
|
124
|
-
from_value(
|
128
|
+
from_value(32509)
|
125
129
|
end
|
126
130
|
|
127
131
|
# Create new intent object with all intents.
|
128
132
|
def all
|
129
|
-
from_value(
|
133
|
+
from_value(32767)
|
130
134
|
end
|
131
135
|
|
132
136
|
# Create new intent object with no intents.
|
data/lib/discorb/member.rb
CHANGED
@@ -59,6 +59,8 @@ module Discorb
|
|
59
59
|
# @!attribute [r] status
|
60
60
|
# @macro client_cache
|
61
61
|
# @return [Symbol] The status of the member. It's from the {#presence}.
|
62
|
+
# @!attribute [r] owner?
|
63
|
+
# @return [Boolean] Whether the member is the owner of the guild.
|
62
64
|
|
63
65
|
# @!visibility private
|
64
66
|
def initialize(client, guild_id, user_data, member_data)
|
@@ -99,18 +101,27 @@ module Discorb
|
|
99
101
|
guild.voice_states[@id]
|
100
102
|
end
|
101
103
|
|
104
|
+
def owner?
|
105
|
+
guild.owner_id == @id
|
106
|
+
end
|
107
|
+
|
102
108
|
def guild
|
103
109
|
@client.guilds[@guild_id]
|
104
110
|
end
|
105
111
|
|
106
112
|
def roles
|
107
|
-
@role_ids.map { |r| guild.roles[r] }.sort_by(&:position)
|
113
|
+
@role_ids.map { |r| guild.roles[r] }.sort_by(&:position).reverse + [guild.roles[guild.id]]
|
108
114
|
end
|
109
115
|
|
110
116
|
def permissions
|
117
|
+
if owner?
|
118
|
+
return Permission.new((1 << 38) - 1)
|
119
|
+
end
|
111
120
|
roles.map(&:permissions).sum(Permission.new(0))
|
112
121
|
end
|
113
122
|
|
123
|
+
alias guild_permissions permissions
|
124
|
+
|
114
125
|
def hoisted_role
|
115
126
|
@hoisted_role_id && guild.roles[@hoisted_role_id]
|
116
127
|
end
|