Module: Rubycord::API::User

Defined in:
lib/rubycord/api/user.rb

Overview

API calls for User object

Class Method Summary collapse

Class Method Details

.avatar_url(user_id, avatar_id, format = nil) ⇒ Object

Make an avatar URL from the user and avatar IDs



145
146
147
148
149
150
151
152
# File 'lib/rubycord/api/user.rb', line 145

def avatar_url(user_id, avatar_id, format = nil)
  format ||= if avatar_id.start_with?("a_")
    "gif"
  else
    "webp"
  end
  "#{Rubycord::API.cdn_url}/avatars/#{user_id}/#{avatar_id}.#{format}"
end

.change_own_nickname(token, server_id, nick, reason = nil) ⇒ Object

Change the current bot's nickname on a server https://discord.com/developers/docs/resources/user#modify-current-user



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/rubycord/api/user.rb', line 31

def change_own_nickname(token, server_id, nick, reason = nil)
  Rubycord::API.request(
    :guilds_sid_members_me_nick,
    server_id, # This is technically a guild endpoint
    :patch,
    "#{Rubycord::API.api_base}/guilds/#{server_id}/members/@me/nick",
    {nick: nick}.to_json,
    Authorization: token,
    content_type: :json,
    "X-Audit-Log-Reason": reason
  )
end

.change_status_setting(token, status) ⇒ Object

Change user status setting



121
122
123
124
125
126
127
128
129
130
131
# File 'lib/rubycord/api/user.rb', line 121

def change_status_setting(token, status)
  Rubycord::API.request(
    :users_me_settings,
    nil,
    :patch,
    "#{Rubycord::API.api_base}/users/@me/settings",
    {status: status}.to_json,
    Authorization: token,
    content_type: :json
  )
end

.connections(token) ⇒ Object



110
111
112
113
114
115
116
117
118
# File 'lib/rubycord/api/user.rb', line 110

def connections(token)
  Rubycord::API.request(
    :users_me_connections,
    nil,
    :get,
    "#{Rubycord::API.api_base}/users/@me/connections",
    Authorization: token
  )
end

.create_pm(token, recipient_id) ⇒ Object



96
97
98
99
100
101
102
103
104
105
106
# File 'lib/rubycord/api/user.rb', line 96

def create_pm(token, recipient_id)
  Rubycord::API.request(
    :users_me_channels,
    nil,
    :post,
    "#{Rubycord::API.api_base}/users/@me/channels",
    {recipient_id: recipient_id}.to_json,
    Authorization: token,
    content_type: :json
  )
end

.default_avatar(discrim_id = 0, legacy: false) ⇒ Object

Returns one of the "default" discord avatars from the CDN given a discriminator or id since new usernames TODO: Maybe change this method again after discriminator removal ?



135
136
137
138
139
140
141
142
# File 'lib/rubycord/api/user.rb', line 135

def default_avatar(discrim_id = 0, legacy: false)
  index = if legacy
    discrim_id.to_i % 5
  else
    (discrim_id.to_i >> 22) % 5
  end
  "#{Rubycord::API.cdn_url}/embed/avatars/#{index}.png"
end

.leave_server(token, server_id) ⇒ Object



72
73
74
75
76
77
78
79
80
# File 'lib/rubycord/api/user.rb', line 72

def leave_server(token, server_id)
  Rubycord::API.request(
    :users_me_guilds_sid,
    nil,
    :delete,
    "#{Rubycord::API.api_base}/users/@me/guilds/#{server_id}",
    Authorization: token
  )
end

.profile(token) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/rubycord/api/user.rb', line 19

def profile(token)
  Rubycord::API.request(
    :users_me,
    nil,
    :get,
    "#{Rubycord::API.api_base}/users/@me",
    Authorization: token
  )
end

.resolve(token, user_id) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'lib/rubycord/api/user.rb', line 7

def resolve(token, user_id)
  Rubycord::API.request(
    :users_uid,
    nil,
    :get,
    "#{Rubycord::API.api_base}/users/#{user_id}",
    Authorization: token
  )
end

.servers(token) ⇒ Object



60
61
62
63
64
65
66
67
68
# File 'lib/rubycord/api/user.rb', line 60

def servers(token)
  Rubycord::API.request(
    :users_me_guilds,
    nil,
    :get,
    "#{Rubycord::API.api_base}/users/@me/guilds",
    Authorization: token
  )
end

.update_profile(token, email, password, new_username, avatar, new_password = nil) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
# File 'lib/rubycord/api/user.rb', line 46

def update_profile(token, email, password, new_username, avatar, new_password = nil)
  Rubycord::API.request(
    :users_me,
    nil,
    :patch,
    "#{Rubycord::API.api_base}/users/@me",
    {avatar: avatar, email: email, new_password: new_password, password: password, username: new_username}.to_json,
    Authorization: token,
    content_type: :json
  )
end

.user_dms(token) ⇒ Object



84
85
86
87
88
89
90
91
92
# File 'lib/rubycord/api/user.rb', line 84

def user_dms(token)
  Rubycord::API.request(
    :users_me_channels,
    nil,
    :get,
    "#{Rubycord::API.api_base}/users/@me/channels",
    Authorization: token
  )
end