using System; using System.Collections.Generic; using System.IO; using System.Threading.Tasks; namespace Discord { /// /// Represents a generic channel in a guild that can send and receive messages. /// public interface ITextChannel : IMessageChannel, IMentionable, INestedChannel { /// /// Gets a value that indicates whether the channel is NSFW. /// /// /// true if the channel has the NSFW flag enabled; otherwise false. /// bool IsNsfw { get; } /// /// Gets the current topic for this text channel. /// /// /// A string representing the topic set in the channel; null if none is set. /// string Topic { get; } /// /// Gets the current slow-mode delay for this channel. /// /// /// An representing the time in seconds required before the user can send another /// message; 0 if disabled. /// int SlowModeInterval { get; } /// /// Bulk-deletes multiple messages. /// /// /// The following example gets 250 messages from the channel and deletes them. /// /// var messages = await textChannel.GetMessagesAsync(250).FlattenAsync(); /// await textChannel.DeleteMessagesAsync(messages); /// /// /// /// This method attempts to remove the messages specified in bulk. /// /// Due to the limitation set by Discord, this method can only remove messages that are posted within 14 days! /// /// /// The messages to be bulk-deleted. /// The options to be used when sending the request. /// /// A task that represents the asynchronous bulk-removal operation. /// Task DeleteMessagesAsync(IEnumerable messages, RequestOptions options = null); /// /// Bulk-deletes multiple messages. /// /// /// This method attempts to remove the messages specified in bulk. /// /// Due to the limitation set by Discord, this method can only remove messages that are posted within 14 days! /// /// /// The snowflake identifier of the messages to be bulk-deleted. /// The options to be used when sending the request. /// /// A task that represents the asynchronous bulk-removal operation. /// Task DeleteMessagesAsync(IEnumerable messageIds, RequestOptions options = null); /// /// Modifies this text channel. /// /// The delegate containing the properties to modify the channel with. /// The options to be used when sending the request. /// /// A task that represents the asynchronous modification operation. /// /// Task ModifyAsync(Action func, RequestOptions options = null); /// /// Creates a webhook in this text channel. /// /// The name of the webhook. /// The avatar of the webhook. /// The options to be used when sending the request. /// /// A task that represents the asynchronous creation operation. The task result contains the newly created /// webhook. /// Task CreateWebhookAsync(string name, Stream avatar = null, RequestOptions options = null); /// /// Gets a webhook available in this text channel. /// /// The identifier of the webhook. /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a webhook associated /// with the identifier; null if the webhook is not found. /// Task GetWebhookAsync(ulong id, RequestOptions options = null); /// /// Gets the webhooks available in this text channel. /// /// The options to be used when sending the request. /// /// A task that represents the asynchronous get operation. The task result contains a read-only collection /// of webhooks that is available in this channel. /// Task> GetWebhooksAsync(RequestOptions options = null); } }