/
ApplicationInfo.java
210 lines (192 loc) · 7.69 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
/*
* Copyright 2015-2017 Austin Keener & Michael Ritter
*
* 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.bot.entities;
import net.dv8tion.jda.core.JDA;
import net.dv8tion.jda.core.Permission;
import net.dv8tion.jda.core.entities.ISnowflake;
import net.dv8tion.jda.core.entities.User;
import net.dv8tion.jda.core.utils.MiscUtil;
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.bot.JDABot#getApplicationInfo() JDABot.getApplicationInfo()
*/
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
*/
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
*/
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
*/
String getIconUrl();
/**
* 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.core.Permission Permissions}
* that should be requested via invite.
*
* @return The link used to invite the bot
*/
String getInviteUrl(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}
* <br>Unnecessary query parameters are stripped.
*
* @param permissions
* {@link net.dv8tion.jda.core.Permission Permissions} that should be requested via invite.
*
* @return The link used to invite the bot
*/
String getInviteUrl(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.core.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
*/
default String getInviteUrl(String guildId, Collection<Permission> permissions)
{
return getInviteUrl(MiscUtil.parseSnowflake(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 {@link java.util.Collection Collection} of {@link net.dv8tion.jda.core.Permission Permissions}
* that should be requested via invite.
*
* @return The link used to invite the bot
*/
String getInviteUrl(long guildId, 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 array of {@link net.dv8tion.jda.core.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
*/
default String getInviteUrl(String guildId, Permission... permissions)
{
return getInviteUrl(MiscUtil.parseSnowflake(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.core.Permission Permissions}
* that should be requested via invite.
*
* @return The link used to invite the bot
*/
String getInviteUrl(long guildId, Permission... permissions);
/**
* The {@link net.dv8tion.jda.core.JDA JDA} instance of this ApplicationInfo
* (the one logged into this application's bot account).
*
* @return The JDA instance of this ApplicationInfo
*/
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.
*/
String getName();
/**
* The owner of the bot's application. This may be a fake user.
*
* @return The owner of the bot's application
*/
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();
}