use of net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent in project JDA by DV8FromTheWorld.
the class InviteCreateHandler method handleInternally.
@Override
protected Long handleInternally(DataObject content) {
long guildId = content.getUnsignedLong("guild_id");
if (getJDA().getGuildSetupController().isLocked(guildId))
return guildId;
Guild realGuild = getJDA().getGuildById(guildId);
if (realGuild == null) {
EventCache.LOG.debug("Caching INVITE_CREATE for unknown guild with id {}", guildId);
getJDA().getEventCache().cache(EventCache.Type.GUILD, guildId, responseNumber, allContent, this::handle);
return null;
}
long channelId = content.getUnsignedLong("channel_id");
GuildChannel realChannel = realGuild.getGuildChannelById(channelId);
if (realChannel == null) {
EventCache.LOG.debug("Caching INVITE_CREATE for unknown channel with id {} in guild with id {}", channelId, guildId);
getJDA().getEventCache().cache(EventCache.Type.CHANNEL, channelId, responseNumber, allContent, this::handle);
return null;
}
String code = content.getString("code");
boolean temporary = content.getBoolean("temporary");
int maxAge = content.getInt("max_age", -1);
int maxUses = content.getInt("max_uses", -1);
OffsetDateTime creationTime = content.opt("created_at").map(String::valueOf).map(OffsetDateTime::parse).orElse(null);
Optional<DataObject> inviterJson = content.optObject("inviter");
boolean expanded = maxUses != -1;
User inviter = inviterJson.map(json -> getJDA().getEntityBuilder().createUser(json)).orElse(null);
InviteImpl.ChannelImpl channel = new InviteImpl.ChannelImpl(realChannel);
InviteImpl.GuildImpl guild = new InviteImpl.GuildImpl(realGuild);
final Invite.TargetType targetType = Invite.TargetType.fromId(content.getInt("target_type", 0));
final Invite.InviteTarget target;
switch(targetType) {
case STREAM:
DataObject targetUserObject = content.getObject("target_user");
target = new InviteImpl.InviteTargetImpl(targetType, null, getJDA().getEntityBuilder().createUser(targetUserObject));
break;
case EMBEDDED_APPLICATION:
DataObject applicationObject = content.getObject("target_application");
Invite.EmbeddedApplication application = new InviteImpl.EmbeddedApplicationImpl(applicationObject.getString("icon", null), applicationObject.getString("name"), applicationObject.getString("description"), applicationObject.getString("summary"), applicationObject.getLong("id"), applicationObject.getInt("max_participants", -1));
target = new InviteImpl.InviteTargetImpl(targetType, application, null);
break;
case NONE:
target = null;
break;
default:
target = new InviteImpl.InviteTargetImpl(targetType, null, null);
}
Invite invite = new InviteImpl(getJDA(), code, expanded, inviter, maxAge, maxUses, temporary, creationTime, 0, channel, guild, null, target, Invite.InviteType.GUILD);
getJDA().handleEvent(new GuildInviteCreateEvent(getJDA(), responseNumber, invite, realChannel));
return null;
}
Aggregations