All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.dv8tion.jda.api.managers.channel.attribute.IPostContainerManager Maven / Gradle / Ivy

Go to download

Java wrapper for the popular chat & VOIP service: Discord https://discord.com

The newest version!
/*
 * Copyright 2015 Austin Keener, Michael Ritter, Florian Spieß, and the JDA contributors
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package net.dv8tion.jda.api.managers.channel.attribute;

import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer;
import net.dv8tion.jda.api.entities.channel.attribute.IPostContainer.SortOrder;
import net.dv8tion.jda.api.entities.channel.concrete.ForumChannel;
import net.dv8tion.jda.api.entities.channel.forums.BaseForumTag;
import net.dv8tion.jda.api.entities.channel.forums.ForumTagData;
import net.dv8tion.jda.api.entities.emoji.Emoji;

import javax.annotation.CheckReturnValue;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;

/**
 * Manager abstraction to configure settings related to forum post containers, such as {@link ForumChannel}.
 *
 * @param  The channel type
 * @param  The manager type
 */
public interface IPostContainerManager> extends IThreadContainerManager, IPermissionContainerManager
{
    /**
     * Sets the tag requirement state of this {@link IPostContainer}.
     * 
If true, all new posts must have at least one tag. * * @param requireTag * The new tag requirement state for the selected {@link IPostContainer} * * @return ChannelManager for chaining convenience. * * @see IPostContainer#isTagRequired() */ @Nonnull @CheckReturnValue M setTagRequired(boolean requireTag); /** * Sets the available tags of the selected {@link IPostContainer}. *
Tags will be ordered based on the provided list order. * *

This is a full replacement of the tags list, all missing tags will be removed. * You can use {@link ForumTagData} to create new tags or update existing ones. * *

Example *

{@code
     * List tags = new ArrayList<>(channel.getAvailableTags());
     * tags.add(new ForumTagData("question").setModerated(true)); // add a new tag
     * tags.set(0, ForumTagData.from(tags.get(0)).setName("bug report")); // update an existing tag
     * // Update the tag list
     * channel.getManager().setAvailableTags(tags).queue();
     * }
* * @param tags * The new available tags in the desired order. * * @throws IllegalArgumentException * If the provided list is null or contains null elements * * @return ChannelManager for chaining convenience * * @see IPostContainer#getAvailableTags() */ @Nonnull @CheckReturnValue M setAvailableTags(@Nonnull List tags); /** * Sets the default reaction emoji of the selected {@link IPostContainer}. *
This does not support custom emoji from other guilds. * * @param emoji * The new default reaction emoji, or null to unset. * * @return ChannelManager for chaining convenience * * @see IPostContainer#getDefaultReaction() */ @Nonnull @CheckReturnValue M setDefaultReaction(@Nullable Emoji emoji); /** * Sets the default sort order of the selected {@link IPostContainer}. * * @param sortOrder * The new {@link SortOrder} * * @throws IllegalArgumentException * If null or {@link SortOrder#UNKNOWN} is provided * * @return ChannelManager for chaining convenience * * @see IPostContainer#getDefaultSortOrder() */ @Nonnull @CheckReturnValue M setDefaultSortOrder(@Nonnull SortOrder sortOrder); /** * Sets the topic of the selected {@link IPostContainer channel}. * * @param topic * The new topic for the selected channel, * {@code null} or empty String to reset * * @throws IllegalArgumentException * If the provided topic is greater than {@value IPostContainer#MAX_POST_CONTAINER_TOPIC_LENGTH} in length. * * @return ChannelManager for chaining convenience */ @Nonnull @CheckReturnValue M setTopic(@Nullable String topic); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy