Search in sources :

Example 11 with User

use of org.javacord.api.entity.user.User in project Javacord by BtoBastian.

the class GuildMemberAddHandler method handle.

@Override
public void handle(JsonNode packet) {
    api.getPossiblyUnreadyServerById(packet.get("guild_id").asLong()).map(server -> (ServerImpl) server).ifPresent(server -> {
        MemberImpl member = server.addMember(packet);
        server.incrementMemberCount();
        User user = new UserImpl(api, packet.get("user"), member, server);
        ServerMemberJoinEvent event = new ServerMemberJoinEventImpl(server, user);
        api.getEventDispatcher().dispatchServerMemberJoinEvent(server, server, user, event);
    });
}
Also used : ServerImpl(org.javacord.core.entity.server.ServerImpl) ServerMemberJoinEventImpl(org.javacord.core.event.server.member.ServerMemberJoinEventImpl) ServerMemberJoinEvent(org.javacord.api.event.server.member.ServerMemberJoinEvent) User(org.javacord.api.entity.user.User) PacketHandler(org.javacord.core.util.gateway.PacketHandler) DiscordApi(org.javacord.api.DiscordApi) UserImpl(org.javacord.core.entity.user.UserImpl) MemberImpl(org.javacord.core.entity.user.MemberImpl) JsonNode(com.fasterxml.jackson.databind.JsonNode) ServerMemberJoinEvent(org.javacord.api.event.server.member.ServerMemberJoinEvent) User(org.javacord.api.entity.user.User) ServerImpl(org.javacord.core.entity.server.ServerImpl) ServerMemberJoinEventImpl(org.javacord.core.event.server.member.ServerMemberJoinEventImpl) MemberImpl(org.javacord.core.entity.user.MemberImpl) UserImpl(org.javacord.core.entity.user.UserImpl)

Example 12 with User

use of org.javacord.api.entity.user.User in project Javacord by BtoBastian.

the class GuildRoleUpdateHandler method handle.

@Override
public void handle(JsonNode packet) {
    JsonNode roleJson = packet.get("role");
    long roleId = roleJson.get("id").asLong();
    api.getRoleById(roleId).map(role -> (RoleImpl) role).ifPresent(role -> {
        Color oldColorObject = role.getColor().orElse(null);
        int oldColor = role.getColorAsInt();
        int newColor = roleJson.get("color").asInt(0);
        if (oldColor != newColor) {
            role.setColor(newColor);
            RoleChangeColorEvent event = new RoleChangeColorEventImpl(role, role.getColor().orElse(null), oldColorObject);
            api.getEventDispatcher().dispatchRoleChangeColorEvent((DispatchQueueSelector) role.getServer(), role, role.getServer(), event);
        }
        boolean oldHoist = role.isDisplayedSeparately();
        boolean newHoist = roleJson.get("hoist").asBoolean(false);
        if (oldHoist != newHoist) {
            role.setHoist(newHoist);
            RoleChangeHoistEvent event = new RoleChangeHoistEventImpl(role, oldHoist);
            api.getEventDispatcher().dispatchRoleChangeHoistEvent((DispatchQueueSelector) role.getServer(), role, role.getServer(), event);
        }
        boolean oldMentionable = role.isMentionable();
        boolean newMentionable = roleJson.get("mentionable").asBoolean(false);
        if (oldMentionable != newMentionable) {
            role.setMentionable(newMentionable);
            RoleChangeMentionableEvent event = new RoleChangeMentionableEventImpl(role, oldMentionable);
            api.getEventDispatcher().dispatchRoleChangeMentionableEvent((DispatchQueueSelector) role.getServer(), role, role.getServer(), event);
        }
        String oldName = role.getName();
        String newName = roleJson.get("name").asText();
        if (!oldName.equals(newName)) {
            role.setName(newName);
            RoleChangeNameEvent event = new RoleChangeNameEventImpl(role, newName, oldName);
            api.getEventDispatcher().dispatchRoleChangeNameEvent((DispatchQueueSelector) role.getServer(), role, role.getServer(), event);
        }
        Permissions oldPermissions = role.getPermissions();
        PermissionsImpl newPermissions = new PermissionsImpl(roleJson.get("permissions").asLong(), 0);
        if (!oldPermissions.equals(newPermissions)) {
            role.setPermissions(newPermissions);
            RoleChangePermissionsEvent event = new RoleChangePermissionsEventImpl(role, newPermissions, oldPermissions);
            api.getEventDispatcher().dispatchRoleChangePermissionsEvent((DispatchQueueSelector) role.getServer(), role, role.getServer(), event);
            // If bot is affected remove messages from cache that are no longer visible
            if (role.getUsers().stream().anyMatch(User::isYourself)) {
                Set<Long> unreadableChannels = role.getServer().getTextChannels().stream().filter(((Predicate<ServerTextChannel>) ServerTextChannel::canYouSee).negate()).map(ServerTextChannel::getId).collect(Collectors.toSet());
                api.forEachCachedMessageWhere(msg -> unreadableChannels.contains(msg.getChannel().getId()), msg -> {
                    api.removeMessageFromCache(msg.getId());
                    ((MessageCacheImpl) msg.getChannel().getMessageCache()).removeMessage(msg);
                });
            }
        }
        int oldPosition = role.getPosition();
        int oldRawPosition = role.getRawPosition();
        int newRawPosition = roleJson.get("position").asInt();
        if (oldRawPosition != newRawPosition) {
            role.setRawPosition(newRawPosition);
            int newPosition = role.getPosition();
            RoleChangePositionEvent event = new RoleChangePositionEventImpl(role, newRawPosition, oldRawPosition, newPosition, oldPosition);
            api.getEventDispatcher().dispatchRoleChangePositionEvent((DispatchQueueSelector) role.getServer(), role, role.getServer(), event);
        }
    });
}
Also used : Color(java.awt.Color) RoleChangePositionEventImpl(org.javacord.core.event.server.role.RoleChangePositionEventImpl) RoleChangePositionEvent(org.javacord.api.event.server.role.RoleChangePositionEvent) RoleChangeColorEvent(org.javacord.api.event.server.role.RoleChangeColorEvent) RoleChangeColorEventImpl(org.javacord.core.event.server.role.RoleChangeColorEventImpl) Permissions(org.javacord.api.entity.permission.Permissions) RoleImpl(org.javacord.core.entity.permission.RoleImpl) MessageCacheImpl(org.javacord.core.util.cache.MessageCacheImpl) RoleChangeMentionableEventImpl(org.javacord.core.event.server.role.RoleChangeMentionableEventImpl) RoleChangePermissionsEvent(org.javacord.api.event.server.role.RoleChangePermissionsEvent) RoleChangeNameEventImpl(org.javacord.core.event.server.role.RoleChangeNameEventImpl) ServerTextChannel(org.javacord.api.entity.channel.ServerTextChannel) JsonNode(com.fasterxml.jackson.databind.JsonNode) RoleChangePermissionsEventImpl(org.javacord.core.event.server.role.RoleChangePermissionsEventImpl) RoleChangeHoistEventImpl(org.javacord.core.event.server.role.RoleChangeHoistEventImpl) PermissionsImpl(org.javacord.core.entity.permission.PermissionsImpl) Predicate(java.util.function.Predicate) Set(java.util.Set) Collectors(java.util.stream.Collectors) User(org.javacord.api.entity.user.User) RoleChangeMentionableEvent(org.javacord.api.event.server.role.RoleChangeMentionableEvent) PacketHandler(org.javacord.core.util.gateway.PacketHandler) DiscordApi(org.javacord.api.DiscordApi) RoleChangeNameEvent(org.javacord.api.event.server.role.RoleChangeNameEvent) DispatchQueueSelector(org.javacord.core.util.event.DispatchQueueSelector) RoleChangeHoistEvent(org.javacord.api.event.server.role.RoleChangeHoistEvent) User(org.javacord.api.entity.user.User) RoleChangeMentionableEvent(org.javacord.api.event.server.role.RoleChangeMentionableEvent) RoleChangeHoistEventImpl(org.javacord.core.event.server.role.RoleChangeHoistEventImpl) RoleChangePositionEvent(org.javacord.api.event.server.role.RoleChangePositionEvent) JsonNode(com.fasterxml.jackson.databind.JsonNode) RoleChangeHoistEvent(org.javacord.api.event.server.role.RoleChangeHoistEvent) RoleChangeNameEvent(org.javacord.api.event.server.role.RoleChangeNameEvent) PermissionsImpl(org.javacord.core.entity.permission.PermissionsImpl) Permissions(org.javacord.api.entity.permission.Permissions) RoleChangeColorEvent(org.javacord.api.event.server.role.RoleChangeColorEvent) RoleChangeMentionableEventImpl(org.javacord.core.event.server.role.RoleChangeMentionableEventImpl) RoleChangeNameEventImpl(org.javacord.core.event.server.role.RoleChangeNameEventImpl) RoleChangePositionEventImpl(org.javacord.core.event.server.role.RoleChangePositionEventImpl) RoleImpl(org.javacord.core.entity.permission.RoleImpl) Color(java.awt.Color) RoleChangePermissionsEventImpl(org.javacord.core.event.server.role.RoleChangePermissionsEventImpl) RoleChangeColorEventImpl(org.javacord.core.event.server.role.RoleChangeColorEventImpl) RoleChangePermissionsEvent(org.javacord.api.event.server.role.RoleChangePermissionsEvent) ServerTextChannel(org.javacord.api.entity.channel.ServerTextChannel) MessageCacheImpl(org.javacord.core.util.cache.MessageCacheImpl)

Aggregations

User (org.javacord.api.entity.user.User)12 JsonNode (com.fasterxml.jackson.databind.JsonNode)7 DiscordApi (org.javacord.api.DiscordApi)6 ServerImpl (org.javacord.core.entity.server.ServerImpl)6 PacketHandler (org.javacord.core.util.gateway.PacketHandler)6 MemberImpl (org.javacord.core.entity.user.MemberImpl)5 UserImpl (org.javacord.core.entity.user.UserImpl)5 Role (org.javacord.api.entity.permission.Role)4 Collection (java.util.Collection)3 HashSet (java.util.HashSet)3 Map (java.util.Map)3 DiscordEntity (org.javacord.api.entity.DiscordEntity)3 ServerTextChannel (org.javacord.api.entity.channel.ServerTextChannel)3 Permissions (org.javacord.api.entity.permission.Permissions)3 MessageCacheImpl (org.javacord.core.util.cache.MessageCacheImpl)3 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)2 ArrayList (java.util.ArrayList)2 Collections (java.util.Collections)2 HashMap (java.util.HashMap)2 Set (java.util.Set)2