Show / Hide Table of Contents

# Interface IUser

Represents a generic user.

##### Inherited Members

ISnowflakeEntity.CreatedAt
IEntity<UInt64>.Id
IMentionable.Mention
IPresence.Activity
IPresence.Status
IPresence.ActiveClients

###### Namespace: Discord

###### Assembly: Discord.Net.Core.dll

##### Syntax

    public interface IUser : ISnowflakeEntity, IEntity<ulong>, IMentionable, IPresence

### Properties

| Improve this Doc View Source

#### AvatarId

Gets the identifier of this user's avatar.

##### Declaration

    string AvatarId { get; }

##### Property Value

Type | Description
--- | ---
System.String |

| Improve this Doc View Source

#### Discriminator

Gets the per-username unique ID for this user.

##### Declaration

    string Discriminator { get; }

##### Property Value

Type | Description
--- | ---
System.String |

| Improve this Doc View Source

#### DiscriminatorValue

Gets the per-username unique ID for this user.

##### Declaration

    ushort DiscriminatorValue { get; }

##### Property Value

Type | Description
--- | ---
System.UInt16 |

| Improve this Doc View Source

#### IsBot

Gets a value that indicates whether this user is identified as a bot.

##### Declaration

    bool IsBot { get; }

##### Property Value

Type | Description
--- | ---
System.Boolean | `true` if the user is a bot application; otherwise `false`.

##### Remarks

This property retrieves a value that indicates whether this user is a registered bot application (indicated by the blue BOT tag within the official chat client).

| Improve this Doc View Source

#### IsWebhook

Gets a value that indicates whether this user is a webhook user.

##### Declaration

    bool IsWebhook { get; }

##### Property Value

Type | Description
--- | ---
System.Boolean | `true` if the user is a webhook; otherwise `false`.

| Improve this Doc View Source

#### Username

Gets the username for this user.

##### Declaration

    string Username { get; }

##### Property Value

Type | Description
--- | ---
System.String |

### Methods

| Improve this Doc View Source

#### GetAvatarUrl(ImageFormat, UInt16)

Gets the avatar URL for this user.

##### Declaration

    string GetAvatarUrl(ImageFormat format = ImageFormat.Auto, ushort size = 128)

##### Parameters

Type | Name | Description
--- | --- | ---
ImageFormat | format | The format to return.
System.UInt16 | size | The size of the image to return in. This can be any power of two between 16 and 2048.

##### Returns

Type | Description
--- | ---
System.String | A string representing the user's avatar URL; `null` if the user does not have an avatar in place.

##### Remarks

This property retrieves a URL for this user's avatar. In event that the user does not have a valid avatar (i.e. their avatar identifier is not set), this property will return `null`. If you wish to retrieve the default avatar for this user, consider using GetDefaultAvatarUrl() (see example).

##### Examples

    The following example attempts to retrieve the user&apos;s current avatar and send it to a channel; if one is
    not set, a default avatar for this user will be returned instead.

    public async Task GetAvatarAsync(IUser user, ITextChannel textChannel)
    {
        var userAvatarUrl = user.GetAvatarUrl() ?? user.GetDefaultAvatarUrl();
        await textChannel.SendMessageAsync(userAvatarUrl);
    }

| Improve this Doc View Source

#### GetDefaultAvatarUrl()

Gets the default avatar URL for this user.

##### Declaration

    string GetDefaultAvatarUrl()

##### Returns

Type | Description
--- | ---
System.String | A string representing the user's avatar URL.

##### Remarks

This property retrieves a URL for this user's default avatar generated by Discord (Discord logo followed by a random color as its background). This property will always return a value as it is calculated based on the user's DiscriminatorValue (`discriminator % 5`).

| Improve this Doc View Source

#### GetOrCreateDMChannelAsync(RequestOptions)

Gets the direct message channel of this user, or create one if it does not already exist.

##### Declaration

    Task<IDMChannel> GetOrCreateDMChannelAsync(RequestOptions options = null)

##### Parameters

Type | Name | Description
--- | --- | ---
RequestOptions | options | The options to be used when sending the request.

##### Returns

Type | Description
--- | ---
System.Threading.Tasks.Task<IDMChannel> | A task that represents the asynchronous operation for getting or creating a DM channel. The task result contains the DM channel associated with this user.

##### Remarks

This method is used to obtain or create a channel used to send a direct message.

##### warning

In event that the current user cannot send a message to the target user, a channel can and will still be created by Discord. However, attempting to send a message will yield a Discord.Net.HttpException with a 403 as its Discord.Net.HttpException.HttpCode. There are currently no official workarounds by Discord.

##### Examples

    The following example attempts to send a direct message to the target user and logs the incident should
    it fail.

    public async Task MessageUserAsync(IUser user)
    {
        var channel = await user.GetOrCreateDMChannelAsync();
        try
        {
            await channel.SendMessageAsync("Awesome stuff!");
        }
        catch (Discord.Net.HttpException ex) when (ex.HttpCode == HttpStatusCode.Forbidden)
        {
            Console.WriteLine($"Boo, I cannot message {user}.");
        }
    }

### Extension Methods

UserExtensions.SendMessageAsync(IUser, String, Boolean, Embed, RequestOptions)
UserExtensions.SendFileAsync(IUser, Stream, String, String, Boolean, Embed, RequestOptions)
UserExtensions.SendFileAsync(IUser, String, String, Boolean, Embed, RequestOptions)