+ ActivityType + IAttachment + ChannelPermission + ChannelPermissions + ChannelType + Attachmentpull/988/head
| @@ -1,10 +1,17 @@ | |||
| namespace Discord | |||
| namespace Discord | |||
| { | |||
| /// <summary> | |||
| /// Defines user's activity type. | |||
| /// </summary> | |||
| public enum ActivityType | |||
| { | |||
| /// <summary> Activity that represents a user that is playing a game. </summary> | |||
| Playing = 0, | |||
| /// <summary> Activity that represents a user that is streaming online. </summary> | |||
| Streaming = 1, | |||
| /// <summary> Activity that represents a user that is listening to a song. </summary> | |||
| Listening = 2, | |||
| /// <summary> Activity that represents a user that is watching a media. </summary> | |||
| Watching = 3 | |||
| } | |||
| } | |||
| @@ -1,14 +1,21 @@ | |||
| namespace Discord | |||
| namespace Discord | |||
| { | |||
| public interface IAttachment | |||
| { | |||
| /// <summary> The snowflake ID of the attachment. </summary> | |||
| ulong Id { get; } | |||
| /// <summary> The filename of the attachment. </summary> | |||
| string Filename { get; } | |||
| /// <summary> The URL of the attachment. </summary> | |||
| string Url { get; } | |||
| /// <summary> The proxied URL of the attachment. </summary> | |||
| string ProxyUrl { get; } | |||
| /// <summary> The file size of the attachment. </summary> | |||
| int Size { get; } | |||
| /// <summary> The height of the attachment if it is an image, or return <see langword="null"/> when it is not. </summary> | |||
| int? Height { get; } | |||
| /// <summary> The width of the attachment if it is an image, or return <see langword="null"/> when it is not. </summary> | |||
| int? Width { get; } | |||
| } | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| using System; | |||
| using System; | |||
| namespace Discord | |||
| { | |||
| @@ -6,33 +6,54 @@ namespace Discord | |||
| public enum ChannelPermission : ulong | |||
| { | |||
| // General | |||
| /// <summary> Allows creation of instant invites. </summary> | |||
| CreateInstantInvite = 0x00_00_00_01, | |||
| ManageChannels = 0x00_00_00_10, | |||
| /// <summary> Allows management and editing of channels. </summary> | |||
| ManageChannels = 0x00_00_00_10, | |||
| // Text | |||
| AddReactions = 0x00_00_00_40, | |||
| /// <summary> Allows for the addition of reactions to messages. </summary> | |||
| AddReactions = 0x00_00_00_40, | |||
| /// <summary> Allows for reading of message. </summary> | |||
| [Obsolete("Use ViewChannel instead.")] | |||
| ReadMessages = ViewChannel, | |||
| ViewChannel = 0x00_00_04_00, | |||
| SendMessages = 0x00_00_08_00, | |||
| SendTTSMessages = 0x00_00_10_00, | |||
| ManageMessages = 0x00_00_20_00, | |||
| EmbedLinks = 0x00_00_40_00, | |||
| AttachFiles = 0x00_00_80_00, | |||
| ReadMessageHistory = 0x00_01_00_00, | |||
| MentionEveryone = 0x00_02_00_00, | |||
| UseExternalEmojis = 0x00_04_00_00, | |||
| ReadMessages = ViewChannel, | |||
| /// <summary> Allows guild members to view a channel, which includes reading messages in text channels. </summary> | |||
| ViewChannel = 0x00_00_04_00, | |||
| /// <summary> Allows for sending messages in a channel. </summary> | |||
| SendMessages = 0x00_00_08_00, | |||
| /// <summary> Allows for sending of text-to-speech messages. </summary> | |||
| SendTTSMessages = 0x00_00_10_00, | |||
| /// <summary> Allows for deletion of other users messages. </summary> | |||
| ManageMessages = 0x00_00_20_00, | |||
| /// <summary> Links sent by users with this permission will be auto-embedded. </summary> | |||
| EmbedLinks = 0x00_00_40_00, | |||
| /// <summary> Allows for uploading images and files. </summary> | |||
| AttachFiles = 0x00_00_80_00, | |||
| /// <summary> Allows for reading of message history. </summary> | |||
| ReadMessageHistory = 0x00_01_00_00, | |||
| /// <summary> Allows for using the @everyone tag to notify all users in a channel, and the @here tag to notify all online users in a channel. </summary> | |||
| MentionEveryone = 0x00_02_00_00, | |||
| /// <summary> Allows the usage of custom emojis from other servers. </summary> | |||
| UseExternalEmojis = 0x00_04_00_00, | |||
| // Voice | |||
| Connect = 0x00_10_00_00, | |||
| Speak = 0x00_20_00_00, | |||
| MuteMembers = 0x00_40_00_00, | |||
| DeafenMembers = 0x00_80_00_00, | |||
| MoveMembers = 0x01_00_00_00, | |||
| UseVAD = 0x02_00_00_00, | |||
| /// <summary> Allows for joining of a voice channel. </summary> | |||
| Connect = 0x00_10_00_00, | |||
| /// <summary> Allows for speaking in a voice channel. </summary> | |||
| Speak = 0x00_20_00_00, | |||
| /// <summary> Allows for muting members in a voice channel. </summary> | |||
| MuteMembers = 0x00_40_00_00, | |||
| /// <summary> Allows for deafening of members in a voice channel. </summary> | |||
| DeafenMembers = 0x00_80_00_00, | |||
| /// <summary> Allows for moving of members between voice channels. </summary> | |||
| MoveMembers = 0x01_00_00_00, | |||
| /// <summary> Allows for using voice-activity-detection in a voice channel. </summary> | |||
| UseVAD = 0x02_00_00_00, | |||
| // More General | |||
| ManageRoles = 0x10_00_00_00, | |||
| ManageWebhooks = 0x20_00_00_00, | |||
| /// <summary> Allows management and editing of roles. </summary> | |||
| ManageRoles = 0x10_00_00_00, | |||
| /// <summary> Allows management and editing of webhooks. </summary> | |||
| ManageWebhooks = 0x20_00_00_00, | |||
| } | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| using System; | |||
| using System; | |||
| using System.Collections.Generic; | |||
| using System.Diagnostics; | |||
| @@ -7,17 +7,17 @@ namespace Discord | |||
| [DebuggerDisplay("{DebuggerDisplay,nq}")] | |||
| public struct ChannelPermissions | |||
| { | |||
| /// <summary> Gets a blank ChannelPermissions that grants no permissions. </summary> | |||
| /// <summary> Gets a blank <see cref="ChannelPermissions"/> that grants no permissions. </summary> | |||
| public static readonly ChannelPermissions None = new ChannelPermissions(); | |||
| /// <summary> Gets a ChannelPermissions that grants all permissions for text channels. </summary> | |||
| /// <summary> Gets a <see cref="ChannelPermissions"/> that grants all permissions for text channels. </summary> | |||
| public static readonly ChannelPermissions Text = new ChannelPermissions(0b01100_0000000_1111111110001_010001); | |||
| /// <summary> Gets a ChannelPermissions that grants all permissions for voice channels. </summary> | |||
| /// <summary> Gets a <see cref="ChannelPermissions"/> that grants all permissions for voice channels. </summary> | |||
| public static readonly ChannelPermissions Voice = new ChannelPermissions(0b00100_1111110_0000000000000_010001); | |||
| /// <summary> Gets a ChannelPermissions that grants all permissions for direct message channels. </summary> | |||
| /// <summary> Gets a <see cref="ChannelPermissions"/> that grants all permissions for direct message channels. </summary> | |||
| public static readonly ChannelPermissions DM = new ChannelPermissions(0b00000_1000110_1011100110000_000000); | |||
| /// <summary> Gets a ChannelPermissions that grants all permissions for group channels. </summary> | |||
| /// <summary> Gets a <see cref="ChannelPermissions"/> that grants all permissions for group channels. </summary> | |||
| public static readonly ChannelPermissions Group = new ChannelPermissions(0b00000_1000110_0001101100000_000000); | |||
| /// <summary> Gets a ChannelPermissions that grants all permissions for a given channelType. </summary> | |||
| /// <summary> Gets a <see cref="ChannelPermissions"/> that grants all permissions for a given channelType. </summary> | |||
| public static ChannelPermissions All(IChannel channel) | |||
| { | |||
| switch (channel) | |||
| @@ -30,7 +30,7 @@ namespace Discord | |||
| } | |||
| } | |||
| /// <summary> Gets a packed value representing all the permissions in this ChannelPermissions. </summary> | |||
| /// <summary> Gets a packed value representing all the permissions in this <see cref="ChannelPermissions"/>. </summary> | |||
| public ulong RawValue { get; } | |||
| /// <summary> If True, a user may create invites. </summary> | |||
| @@ -117,7 +117,7 @@ namespace Discord | |||
| RawValue = value; | |||
| } | |||
| /// <summary> Creates a new ChannelPermissions with the provided permissions. </summary> | |||
| /// <summary> Creates a new <see cref="ChannelPermissions"/> with the provided permissions. </summary> | |||
| public ChannelPermissions(bool createInstantInvite = false, bool manageChannel = false, | |||
| bool addReactions = false, | |||
| bool viewChannel = false, bool sendMessages = false, bool sendTTSMessages = false, bool manageMessages = false, | |||
| @@ -129,7 +129,7 @@ namespace Discord | |||
| speak, muteMembers, deafenMembers, moveMembers, useVoiceActivation, manageRoles, manageWebhooks) | |||
| { } | |||
| /// <summary> Creates a new ChannelPermissions from this one, changing the provided non-null permissions. </summary> | |||
| /// <summary> Creates a new <see cref="ChannelPermissions"/> from this one, changing the provided non-null permissions. </summary> | |||
| public ChannelPermissions Modify(bool? createInstantInvite = null, bool? manageChannel = null, | |||
| bool? addReactions = null, | |||
| bool? viewChannel = null, bool? sendMessages = null, bool? sendTTSMessages = null, bool? manageMessages = null, | |||
| @@ -157,4 +157,4 @@ namespace Discord | |||
| public override string ToString() => RawValue.ToString(); | |||
| private string DebuggerDisplay => $"{string.Join(", ", ToList())}"; | |||
| } | |||
| } | |||
| } | |||
| @@ -1,11 +1,17 @@ | |||
| namespace Discord | |||
| namespace Discord | |||
| { | |||
| /// <summary> Defines the types of channels. </summary> | |||
| public enum ChannelType | |||
| { | |||
| /// <summary> Represents a text channel. </summary> | |||
| Text = 0, | |||
| /// <summary> Represents a Direct Message channel. </summary> | |||
| DM = 1, | |||
| /// <summary> Represents a voice channel. </summary> | |||
| Voice = 2, | |||
| /// <summary> Represents a group channel. </summary> | |||
| Group = 3, | |||
| /// <summary> Represents a category channel. </summary> | |||
| Category = 4 | |||
| } | |||
| } | |||
| @@ -1,4 +1,4 @@ | |||
| using System.Diagnostics; | |||
| using System.Diagnostics; | |||
| using Model = Discord.API.Attachment; | |||
| namespace Discord | |||
| @@ -6,12 +6,19 @@ namespace Discord | |||
| [DebuggerDisplay(@"{DebuggerDisplay,nq}")] | |||
| public class Attachment : IAttachment | |||
| { | |||
| /// <inheritdoc/> | |||
| public ulong Id { get; } | |||
| /// <inheritdoc/> | |||
| public string Filename { get; } | |||
| /// <inheritdoc/> | |||
| public string Url { get; } | |||
| /// <inheritdoc/> | |||
| public string ProxyUrl { get; } | |||
| /// <inheritdoc/> | |||
| public int Size { get; } | |||
| /// <inheritdoc/> | |||
| public int? Height { get; } | |||
| /// <inheritdoc/> | |||
| public int? Width { get; } | |||
| internal Attachment(ulong id, string filename, string url, string proxyUrl, int size, int? height, int? width) | |||