Class: Discordrb::User
- Inherits:
-
Object
- Object
- Discordrb::User
- Includes:
- IDObject, UserAttributes
- Defined in:
- lib/discordrb/data.rb
Overview
User on Discord, including internal data like discriminators
Instance Attribute Summary collapse
-
#game ⇒ String?
readonly
The game the user is currently playing, or
nil
if none is being played. -
#status ⇒ Symbol
readonly
The current online status of the user (
:online
,:offline
or:idle
). -
#stream_type ⇒ String, ...
readonly
The type of the stream.
-
#stream_url ⇒ String?
readonly
The URL to the stream, if the user is currently streaming something.
Attributes included from UserAttributes
#avatar_id, #bot_account, #discriminator, #username
Attributes included from IDObject
Instance Method Summary collapse
-
#await(key, attributes = {}, &block) ⇒ Object
Add an await for a message from this user.
-
#await!(attributes = {}) ⇒ Object
Add a blocking await for a message from this user.
-
#current_bot? ⇒ true, false
Is the user the bot?.
-
#initialize(data, bot) ⇒ User
constructor
A new instance of User.
-
#inspect ⇒ Object
The inspect method is overwritten to give more useful output.
-
#on(server) ⇒ Member
Gets the member this user is on a server.
-
#pm(content = nil) ⇒ Object
(also: #dm)
Get a user's PM channel or send them a PM.
-
#send_file(file, caption = nil) ⇒ Message
Send the user a file.
-
#webhook? ⇒ true, false
Whether this user is a fake user for a webhook message.
Methods included from UserAttributes
#avatar_url, #distinct, #mention
Methods included from IDObject
#==, #creation_time, synthesise
Constructor Details
#initialize(data, bot) ⇒ User
Returns a new instance of User.
165 166 167 168 169 170 171 172 173 174 175 176 177 178 |
# File 'lib/discordrb/data.rb', line 165 def initialize(data, bot) @bot = bot @username = data['username'] @id = data['id'].to_i @discriminator = data['discriminator'] @avatar_id = data['avatar'] @roles = {} @bot_account = false @bot_account = true if data['bot'] @status = :offline end |
Instance Attribute Details
#game ⇒ String? (readonly)
Returns the game the user is currently playing, or nil
if none is being played.
156 157 158 |
# File 'lib/discordrb/data.rb', line 156 def game @game end |
#status ⇒ Symbol (readonly)
Returns the current online status of the user (:online
, :offline
or :idle
).
153 154 155 |
# File 'lib/discordrb/data.rb', line 153 def status @status end |
#stream_type ⇒ String, ... (readonly)
Returns the type of the stream. Can technically be set to anything, most of the time it will be 0 for no stream or 1 for Twitch streams.
163 164 165 |
# File 'lib/discordrb/data.rb', line 163 def stream_type @stream_type end |
#stream_url ⇒ String? (readonly)
Returns the URL to the stream, if the user is currently streaming something.
159 160 161 |
# File 'lib/discordrb/data.rb', line 159 def stream_url @stream_url end |
Instance Method Details
#await(key, attributes = {}, &block) ⇒ Object
Add an await for a message from this user. Specifically, this adds a global await for a MessageEvent with this user's ID as a :from attribute.
238 239 240 |
# File 'lib/discordrb/data.rb', line 238 def await(key, attributes = {}, &block) @bot.add_await(key, Discordrb::Events::MessageEvent, { from: @id }.merge(attributes), &block) end |
#await!(attributes = {}) ⇒ Object
Add a blocking await for a message from this user. Specifically, this adds a global await for a MessageEvent with this user's ID as a :from attribute.
245 246 247 |
# File 'lib/discordrb/data.rb', line 245 def await!(attributes = {}) @bot.add_await!(Discordrb::Events::MessageEvent, { from: @id }.merge(attributes)) end |
#current_bot? ⇒ true, false
Is the user the bot?
259 260 261 |
# File 'lib/discordrb/data.rb', line 259 def current_bot? @bot.profile.id == @id end |
#inspect ⇒ Object
The inspect method is overwritten to give more useful output
275 276 277 |
# File 'lib/discordrb/data.rb', line 275 def inspect "<User username=#{@username} id=#{@id} discriminator=#{@discriminator}>" end |
#on(server) ⇒ Member
Gets the member this user is on a server
252 253 254 255 |
# File 'lib/discordrb/data.rb', line 252 def on(server) id = server.resolve_id @bot.server(id).member(@id) end |
#pm ⇒ Channel #pm(content) ⇒ Message Also known as: dm
Get a user's PM channel or send them a PM
188 189 190 191 192 193 194 195 196 197 |
# File 'lib/discordrb/data.rb', line 188 def pm(content = nil) if content # Recursively call pm to get the channel, then send a message to it channel = pm channel.(content) else # If no message was specified, return the PM channel @bot.pm_channel(@id) end end |
#send_file(file, caption = nil) ⇒ Message
Send the user a file.
207 208 209 |
# File 'lib/discordrb/data.rb', line 207 def send_file(file, = nil) pm.send_file(file, caption: ) end |
#webhook? ⇒ true, false
Returns whether this user is a fake user for a webhook message.
264 265 266 |
# File 'lib/discordrb/data.rb', line 264 def webhook? @discriminator == Message::ZERO_DISCRIM end |