/
GuildStickerManagerImpl.java
135 lines (121 loc) · 3.63 KB
/
GuildStickerManagerImpl.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
package net.dv8tion.jda.internal.managers;
import net.dv8tion.jda.api.Permission;
import net.dv8tion.jda.api.entities.Guild;
import net.dv8tion.jda.api.entities.sticker.StickerSnowflake;
import net.dv8tion.jda.api.exceptions.InsufficientPermissionException;
import net.dv8tion.jda.api.managers.GuildStickerManager;
import net.dv8tion.jda.api.requests.Route;
import net.dv8tion.jda.api.utils.data.DataObject;
import net.dv8tion.jda.internal.utils.Checks;
import okhttp3.RequestBody;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.Collection;
public class GuildStickerManagerImpl extends ManagerBase<GuildStickerManager> implements GuildStickerManager
{
private final Guild guild;
private final long guildId;
private String name;
private String description;
private String tags;
public GuildStickerManagerImpl(Guild guild, long guildId, StickerSnowflake sticker)
{
super(guild.getJDA(), Route.Stickers.MODIFY_GUILD_STICKER.compile(Long.toUnsignedString(guildId), sticker.getId()));
this.guild = guild;
this.guildId = guildId;
if (isPermissionChecksEnabled())
checkPermissions();
}
@Nullable
@Override
public Guild getGuild()
{
return guild;
}
@Override
public long getGuildIdLong()
{
return guildId;
}
@Nonnull
@Override
public GuildStickerManagerImpl reset(long fields)
{
super.reset(fields);
if ((fields & NAME) == NAME)
this.name = null;
if ((fields & DESCRIPTION) == DESCRIPTION)
this.description = null;
if ((fields & TAGS) == TAGS)
this.tags = null;
return this;
}
@Nonnull
@Override
public GuildStickerManagerImpl reset(long... fields)
{
super.reset(fields);
return this;
}
@Nonnull
@Override
public GuildStickerManagerImpl reset()
{
super.reset();
this.name = null;
this.description = null;
this.tags = null;
return this;
}
@Nonnull
@Override
public GuildStickerManager setName(@Nonnull String name)
{
Checks.inRange(name, 2, 30, "Name");
this.name = name;
set |= NAME;
return this;
}
@Nonnull
@Override
public GuildStickerManager setDescription(@Nonnull String description)
{
Checks.inRange(description, 2, 100, "Description");
this.description = description;
set |= DESCRIPTION;
return this;
}
@Nonnull
@Override
public GuildStickerManager setTags(@Nonnull Collection<String> tags)
{
Checks.notEmpty(tags, "Tags");
for (String tag : tags)
Checks.notEmpty(tag, "Tags"); // checks for empty and null
String csv = String.join(",", tags);
Checks.notLonger(csv, 200, "List of tags");
this.tags = csv;
set |= TAGS;
return this;
}
@Override
protected RequestBody finalizeData()
{
DataObject object = DataObject.empty();
if (shouldUpdate(NAME))
object.put("name", name);
if (shouldUpdate(DESCRIPTION))
object.put("description", description);
if (shouldUpdate(TAGS))
object.put("tags", tags);
reset();
return getRequestBody(object);
}
@Override
protected boolean checkPermissions()
{
if (guild != null && !guild.getSelfMember().hasPermission(Permission.MANAGE_EMOJIS_AND_STICKERS))
throw new InsufficientPermissionException(guild, Permission.MANAGE_EMOJIS_AND_STICKERS);
return super.checkPermissions();
}
}