Class: Discordrb::User

Inherits:
Object
  • Object
show all
Includes:
IDObject, UserAttributes
Defined in:
lib/discordrb/data.rb

Overview

User on Discord, including internal data like discriminators

Direct Known Subclasses

Member, Profile, Recipient

Instance Attribute Summary collapse

Attributes included from UserAttributes

#avatar_id, #bot_account, #discriminator, #username

Attributes included from IDObject

#id

Instance Method Summary collapse

Methods included from UserAttributes

#avatar_url, #distinct, #mention

Methods included from IDObject

#==, #creation_time

Constructor Details

#initialize(data, bot) ⇒ User



137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/discordrb/data.rb', line 137

def initialize(data, bot)
  @bot = bot

  @username = data['username']
  @id = data['id'].to_i
  @discriminator = data['discriminator']
  @avatar_id = data['avatar']
  @roles = {}

   = false
   = true if data['bot']

  @status = :offline
end

Instance Attribute Details

#gameString?



135
136
137
# File 'lib/discordrb/data.rb', line 135

def game
  @game
end

#statusSymbol



131
132
133
# File 'lib/discordrb/data.rb', line 131

def status
  @status
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.

See Also:



181
182
183
# File 'lib/discordrb/data.rb', line 181

def await(key, attributes = {}, &block)
  @bot.add_await(key, Discordrb::Events::MessageEvent, { from: @id }.merge(attributes), &block)
end

#current_bot?true, false

Is the user the bot?



195
196
197
# File 'lib/discordrb/data.rb', line 195

def current_bot?
  @bot.profile.id == @id
end

#inspectObject

The inspect method is overwritten to give more useful output



200
201
202
# File 'lib/discordrb/data.rb', line 200

def inspect
  "<User username=#{@username} id=#{@id} discriminator=#{@discriminator}>"
end

#on(server) ⇒ Member

Gets the member this user is on a server



188
189
190
191
# File 'lib/discordrb/data.rb', line 188

def on(server)
  id = server.resolve_id
  @bot.server(id).member(@id)
end

#pmChannel #pm(content) ⇒ Message

Get a user's PM channel or send them a PM

Overloads:

  • #pmChannel

    Creates a private message channel for this user or returns an existing one if it already exists

  • #pm(content) ⇒ Message

    Sends a private to this user.



160
161
162
163
164
165
166
167
168
169
# File 'lib/discordrb/data.rb', line 160

def pm(content = nil)
  if content
    # Recursively call pm to get the channel, then send a message to it
    channel = pm
    channel.send_message(content)
  else
    # If no message was specified, return the PM channel
    @bot.private_channel(@id)
  end
end