Ejemplo n.º 1
0
        /// <summary>
        /// Sends an interactive message to the given channel and deletes it after a certain timeout.
        /// </summary>
        /// <param name="channel">The channel to send the message to.</param>
        /// <param name="message">The message to send.</param>
        /// <param name="timeout">The timeout after which the embed will be deleted. Defaults to 15 seconds.</param>
        /// <returns>A <see cref="Task"/> representing the asynchronous operation.</returns>
        public async Task SendInteractiveMessageAndDeleteAsync
        (
            [NotNull] IMessageChannel channel,
            [NotNull] IInteractiveMessage message,
            [CanBeNull] TimeSpan?timeout = null
        )
        {
            timeout = timeout ?? TimeSpan.FromSeconds(15.0);

            _trackedMessages.Add(message);
            await message.SendAsync(this, channel);

            _delayedActions.DelayUntil(() => DeleteInteractiveMessageAsync(message), timeout.Value);
        }
Ejemplo n.º 2
0
        public async Task SendInteractiveMessageAsync
        (
            [NotNull] IMessageChannel channel,
            [NotNull] IInteractiveMessage message
        )
        {
            _trackedMessages.Add(message);
            await message.SendAsync(this, channel);

            while (_trackedMessages.Contains(message))
            {
                await Task.Delay(TimeSpan.FromSeconds(5));
            }
        }