Files
Discord.Net/src/Discord.Net.Rest/Entities/Guilds/RestUserGuild.cs
NaN 257f246d1d Format the project with 'dotnet format' (#2551)
* Sync and Re-Format

* Fix Title string.

* Fix indentation.
2023-02-13 18:45:59 +01:00

68 lines
2.2 KiB
C#

using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Model = Discord.API.UserGuild;
namespace Discord.Rest
{
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class RestUserGuild : RestEntity<ulong>, IUserGuild
{
private string _iconId;
/// <inheritdoc />
public string Name { get; private set; }
/// <inheritdoc />
public bool IsOwner { get; private set; }
/// <inheritdoc />
public GuildPermissions Permissions { get; private set; }
/// <inheritdoc />
public DateTimeOffset CreatedAt => SnowflakeUtils.FromSnowflake(Id);
/// <inheritdoc />
public string IconUrl => CDN.GetGuildIconUrl(Id, _iconId);
/// <inheritdoc />
public GuildFeatures Features { get; private set; }
internal RestUserGuild(BaseDiscordClient discord, ulong id)
: base(discord, id)
{
}
internal static RestUserGuild Create(BaseDiscordClient discord, Model model)
{
var entity = new RestUserGuild(discord, model.Id);
entity.Update(model);
return entity;
}
internal void Update(Model model)
{
_iconId = model.Icon;
IsOwner = model.Owner;
Name = model.Name;
Permissions = new GuildPermissions(model.Permissions);
Features = model.Features;
}
public async Task LeaveAsync(RequestOptions options = null)
{
await Discord.ApiClient.LeaveGuildAsync(Id, options).ConfigureAwait(false);
}
public async Task<RestGuildUser> GetCurrentUserGuildMemberAsync(RequestOptions options = null)
{
var user = await Discord.ApiClient.GetCurrentUserGuildMember(Id, options);
return RestGuildUser.Create(Discord, null, user, Id);
}
/// <inheritdoc />
public async Task DeleteAsync(RequestOptions options = null)
{
await Discord.ApiClient.DeleteGuildAsync(Id, options).ConfigureAwait(false);
}
public override string ToString() => Name;
private string DebuggerDisplay => $"{Name} ({Id}{(IsOwner ? ", Owned" : "")})";
}
}