-
-
Notifications
You must be signed in to change notification settings - Fork 724
/
ApplicationInfo.java
239 lines (221 loc) · 8.36 KB
/
ApplicationInfo.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
/*
* Copyright 2015-2019 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 javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Collection;
/**
* 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.
*
* <p>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}.
* <br>For more information look at the <a href="https://discordapp.com/developers/docs/topics/oauth2">Discord OAuth2 documentation</a>.
*
* @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 icon id of the bot's application.
* <br>The application icon is <b>not</b> 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.
* <br>The application icon is <b>not</b> 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();
/**
* Creates a OAuth invite-link used to invite the bot.
*
* <p>The link is provided in the following format:
* <br>{@code https://discordapp.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS}
* <br>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<Permission> permissions)
{
return getInviteUrl(null, permissions);
}
/**
* Creates a OAuth invite-link used to invite the bot.
*
* <p>The link is provided in the following format:
* <br>{@code https://discordapp.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS}
* <br>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.
*
* <p>The link is provided in the following format:
* <br>{@code https://discordapp.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID}
* <br>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<Permission> permissions);
/**
* Creates a OAuth invite-link used to invite the bot.
*
* <p>The link is provided in the following format:
* <br>{@code https://discordapp.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID}
* <br>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<Permission> permissions)
{
return getInviteUrl(Long.toUnsignedString(guildId), permissions);
}
/**
* Creates a OAuth invite-link used to invite the bot.
*
* <p>The link is provided in the following format:
* <br>{@code https://discordapp.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID}
* <br>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.
*
* <p>The link is provided in the following format:
* <br>{@code https://discordapp.com/oauth2/authorize?client_id=APPLICATION_ID&scope=bot&permissions=PERMISSIONS&guild_id=GUILD_ID}
* <br>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.
* <br>The application name is <b>not</b> 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. This may be a fake user.
*
* @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();
}