Interface AuditableRestAction<T>

Type Parameters:
T - The return type
All Superinterfaces:
RestAction<T>
All Known Subinterfaces:
AccountManager, AudioChannelManager<T,M>, AutoModRuleManager, CategoryManager, ChannelAction<T>, ChannelManager<T,M>, CustomEmojiManager, FluentAuditableRestAction<T,R>, ForumChannelManager, GuildManager, GuildStickerManager, GuildWelcomeScreenManager, IAgeRestrictedChannelManager<T,M>, ICategorizableChannelManager<T,M>, InviteAction, IPermissionContainerManager<T,M>, IPositionableChannelManager<T,M>, IPostContainerManager<T,M>, ISlowmodeChannelManager<T,M>, IThreadContainerManager<T,M>, Manager<M>, MediaChannelManager, NewsChannelManager, PermissionOverrideAction, PermOverrideManager, RoleAction, RoleManager, ScheduledEventAction, ScheduledEventManager, StageChannelManager, StageInstanceManager, StandardGuildChannelManager<T,M>, StandardGuildMessageChannelManager<T,M>, TemplateManager, TextChannelManager, ThreadChannelAction, ThreadChannelManager, VoiceChannelManager, WebhookAction, WebhookManager

public interface AuditableRestAction<T> extends RestAction<T>
Extension of RestAction to allow setting a reason.

This will automatically use the ThreadLocalReason if no reason was specified via reason(String).

Since:
3.3.0
  • Field Details

    • MAX_REASON_LENGTH

      static final int MAX_REASON_LENGTH
      The maximum length of an audit-log reason
      See Also:
  • Method Details

    • reason

      Applies the specified reason as audit-log reason field.
      When the provided reason is empty or null it will be treated as not set. If the provided reason is longer than 512 characters, it will be truncated to fit the limit.

      Reasons for any AuditableRestAction may be retrieved via AuditLogEntry.getReason() in iterable AuditLogPaginationActions from Guild.retrieveAuditLogs()! For guild bans, this is also accessible via Guild.Ban.getReason().

      This will specify the reason via the X-Audit-Log-Reason Request Header.

      Parameters:
      reason - The reason for this action which should be logged in the Guild's AuditLogs (up to 512 characters)
      Returns:
      The current AuditableRestAction instance for chaining convenience
      See Also:
    • setCheck

      Sets the last-second checks before finally executing the http request in the queue.
      If the provided supplier evaluates to false or throws an exception this will not be finished. When an exception is thrown from the supplier it will be provided to the failure callback.
      Specified by:
      setCheck in interface RestAction<T>
      Parameters:
      checks - The checks to run before executing the request, or null to run no checks
      Returns:
      The current RestAction for chaining convenience
      See Also:
    • timeout

      @Nonnull default AuditableRestAction<T> timeout(long timeout, @Nonnull TimeUnit unit)
      Timeout for this RestAction instance.
      If the request doesn't get executed within the timeout it will fail.

      When a RestAction times out, it will fail with a TimeoutException. This is the same as deadline(System.currentTimeMillis() + unit.toMillis(timeout)).

      Example

      
       action.timeout(10, TimeUnit.SECONDS) // 10 seconds from now
             .queueAfter(20, SECONDS); // request will not be executed within deadline and timeout immediately after 20 seconds
       
      Specified by:
      timeout in interface RestAction<T>
      Parameters:
      timeout - The timeout to use
      unit - Unit for the timeout value
      Returns:
      The same RestAction instance with the applied timeout
      See Also:
    • deadline

      @Nonnull default AuditableRestAction<T> deadline(long timestamp)
      Similar to RestAction.timeout(long, TimeUnit) but schedules a deadline at which the request has to be completed.
      If the deadline is reached, the request will fail with a TimeoutException.

      This does not mean that the request will immediately timeout when the deadline is reached. JDA will check the deadline right before executing the request or within intervals in a worker thread. This only means the request will timeout if the deadline has passed.

      Example

      
       action.deadline(System.currentTimeMillis() + 10000) // 10 seconds from now
             .queueAfter(20, SECONDS); // request will not be executed within deadline and timeout immediately after 20 seconds
       
      Specified by:
      deadline in interface RestAction<T>
      Parameters:
      timestamp - Millisecond timestamp at which the request will timeout
      Returns:
      The same RestAction with the applied deadline
      See Also: