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

net.dv8tion.jda.api.entities.ApplicationInfo Maven / Gradle / Ivy

Go to download

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

There is a newer version: 5.1.0
Show 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.entities;

import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.internal.utils.Checks;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.*;

/**
 * Represents a Discord Application from its bot's point of view.
 * 
 * @since  3.0
 * @author Aljoscha Grebe
 * 
 * @see    net.dv8tion.jda.api.JDA#retrieveApplicationInfo()
 */
public interface ApplicationInfo extends ISnowflake
{
    /**
     * Whether the bot requires code grant to invite or not. 
     * 
     * 

This means that additional OAuth2 steps are required to authorize the application to make a bot join a guild * like {@code &response_type=code} together with a valid {@code &redirect_uri}. *
For more information look at the Discord OAuth2 documentation. * * @return Whether the bot requires code grant */ boolean doesBotRequireCodeGrant(); /** * The description of the bot's application. * * @return The description of the bot's application or an empty {@link String} if no description is defined */ @Nonnull String getDescription(); /** * The URL for the application's terms of service. * * @return The URL for the application's terms of service or {@code null} if none is set */ @Nullable String getTermsOfServiceUrl(); /** * The URL for the application's privacy policy. * * @return The URL for the application's privacy policy or {@code null} if none is set */ @Nullable String getPrivacyPolicyUrl(); /** * The icon id of the bot's application. *
The application icon is not necessarily the same as the bot's avatar! * * @return The icon id of the bot's application or null if no icon is defined */ @Nullable String getIconId(); /** * The icon-url of the bot's application. *
The application icon is not necessarily the same as the bot's avatar! * * @return The icon-url of the bot's application or null if no icon is defined */ @Nullable String getIconUrl(); /** * The team information for this application. * * @return The {@link net.dv8tion.jda.api.entities.ApplicationTeam}, or null if this application is not in a team. */ @Nullable ApplicationTeam getTeam(); /** * Configures the required scopes applied to the {@link #getInviteUrl(Permission...)} and similar methods. *
To use slash commands you must add {@code "applications.commands"} to these scopes. The scope {@code "bot"} is always applied. * * @param scopes * The scopes to use with {@link #getInviteUrl(Permission...)} and the likes * * @throws IllegalArgumentException * If null is provided * * @return The current ApplicationInfo instance */ @Nonnull default ApplicationInfo setRequiredScopes(@Nonnull String... scopes) { Checks.noneNull(scopes, "Scopes"); return setRequiredScopes(Arrays.asList(scopes)); } /** * Configures the required scopes applied to the {@link #getInviteUrl(Permission...)} and similar methods. *
To use slash commands you must add {@code "applications.commands"} to these scopes. The scope {@code "bot"} is always applied. * * @param scopes * The scopes to use with {@link #getInviteUrl(Permission...)} and the likes * * @throws IllegalArgumentException * If null is provided * * @return The current ApplicationInfo instance */ @Nonnull ApplicationInfo setRequiredScopes(@Nonnull Collection scopes); /** * Creates a OAuth invite-link used to invite the bot. * *

The link is provided in the following format: *
{@code https://discord.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS} *
Unnecessary query parameters are stripped. * * @param permissions * Possibly empty {@link java.util.Collection Collection} of {@link net.dv8tion.jda.api.Permission Permissions} * that should be requested via invite. * * @return The link used to invite the bot */ @Nonnull default String getInviteUrl(@Nullable Collection permissions) { return getInviteUrl(null, permissions); } /** * Creates a OAuth invite-link used to invite the bot. * *

The link is provided in the following format: *
{@code https://discord.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS} *
Unnecessary query parameters are stripped. * * @param permissions * {@link net.dv8tion.jda.api.Permission Permissions} that should be requested via invite. * * @return The link used to invite the bot */ @Nonnull default String getInviteUrl(@Nullable Permission... permissions) { return getInviteUrl(null, permissions); } /** * Creates a OAuth invite-link used to invite the bot. * *

The link is provided in the following format: *
{@code https://discord.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID} *
Unnecessary query parameters are stripped. * * @param guildId * The id of the pre-selected guild. * @param permissions * Possibly empty {@link java.util.Collection Collection} of {@link net.dv8tion.jda.api.Permission Permissions} * that should be requested via invite. * * @throws java.lang.NumberFormatException * If the provided {@code id} cannot be parsed by {@link Long#parseLong(String)} * * @return The link used to invite the bot */ @Nonnull String getInviteUrl(@Nullable String guildId, @Nullable Collection permissions); /** * Creates a OAuth invite-link used to invite the bot. * *

The link is provided in the following format: *
{@code https://discord.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID} *
Unnecessary query parameters are stripped. * * @param guildId * The id of the pre-selected guild. * @param permissions * Possibly empty {@link java.util.Collection Collection} of {@link net.dv8tion.jda.api.Permission Permissions} * that should be requested via invite. * * @return The link used to invite the bot */ @Nonnull default String getInviteUrl(long guildId, @Nullable Collection permissions) { return getInviteUrl(Long.toUnsignedString(guildId), permissions); } /** * Creates a OAuth invite-link used to invite the bot. * *

The link is provided in the following format: *
{@code https://discord.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID} *
Unnecessary query parameters are stripped. * * @param guildId * The id of the pre-selected guild. * @param permissions * Possibly empty array of {@link net.dv8tion.jda.api.Permission Permissions} * that should be requested via invite. * * @throws java.lang.NumberFormatException * If the provided {@code id} cannot be parsed by {@link Long#parseLong(String)} * * @return The link used to invite the bot */ @Nonnull default String getInviteUrl(@Nullable String guildId, @Nullable Permission... permissions) { return getInviteUrl(guildId, permissions == null ? null : Arrays.asList(permissions)); } /** * Creates a OAuth invite-link used to invite the bot. * *

The link is provided in the following format: *
{@code https://discord.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID} *
Unnecessary query parameters are stripped. * * @param guildId * The id of the pre-selected guild. * @param permissions * Possibly empty array of {@link net.dv8tion.jda.api.Permission Permissions} * that should be requested via invite. * * @return The link used to invite the bot */ @Nonnull default String getInviteUrl(long guildId, @Nullable Permission... permissions) { return getInviteUrl(Long.toUnsignedString(guildId), permissions); } /** * The {@link net.dv8tion.jda.api.JDA JDA} instance of this ApplicationInfo * (the one logged into this application's bot account). * * @return The JDA instance of this ApplicationInfo */ @Nonnull JDA getJDA(); /** * The name of the bot's application. *
The application name is not necessarily the same as the bot's name! * * @return The name of the bot's application. */ @Nonnull String getName(); /** * The owner of the bot's application. * * @return The owner of the bot's application */ @Nonnull User getOwner(); /** * Whether the bot is public or not. * Public bots can be added by anyone. When false only the owner can invite the bot to guilds. * * @return Whether the bot is public */ boolean isBotPublic(); /** * A {@link java.util.List} containing the tags of this bot's application. * *

This List is empty if no tags are set in the Developer Portal. * * @return Immutable list containing the tags of this bot's application */ @Nonnull List getTags(); /** * The custom Authorization URL of this bot's application. * *

This returns {@code null} if no custom URL is set in the Developer Portal or if In-app Authorization is enabled. * * @return Custom Authorization URL, or null if it has not been set */ @Nullable String getCustomAuthorizationUrl(); /** * A {@link java.util.List} of scopes the default authorization URL is set up with. * *

This List is empty if you set a custom URL in the Developer Portal. * * @return Immutable list of scopes the default authorization URL is set up with. */ @Nonnull List getScopes(); /** * An {@link java.util.EnumSet} of permissions the default authorization URL is set up with. * *

This is empty if you set a custom URL in the Developer Portal. * * @return Set of permissions the default authorization URL is set up with. */ @Nonnull EnumSet getPermissions(); /** * The {@code long} representation of the literal permissions the default authorization URL is set up with. * * @return Never-negative long containing offset permissions the default authorization URL is set up with. */ long getPermissionsRaw(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy