Skip to content

Commit

Permalink
Add watered-down GuildMemberUpdateEvent
Browse files Browse the repository at this point in the history
  • Loading branch information
MinnDevelopment committed Oct 29, 2020
1 parent 76cf693 commit 8637866
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 1 deletion.
Expand Up @@ -26,7 +26,7 @@
import javax.annotation.Nullable;

/**
* Indicates that a user left a {@link Guild}.
* Indicates that a user was removed from a {@link Guild}. This includes kicks, bans, and leaves respectively.
* <br>This can be fired for uncached members and cached members alike.
* If the member was not cached by JDA, due to the {@link net.dv8tion.jda.api.utils.MemberCachePolicy MemberCachePolicy}
* or disabled member chunking, then {@link #getMember()} will return {@code null}.
Expand Down
@@ -0,0 +1,45 @@
/*
* Copyright 2015-2020 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.events.guild.member;

import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.entities.Member;

import javax.annotation.Nonnull;

/**
* Fired for every {@link Member} update, regardless of cache.
*
* <p>This is a watered-down version of the {@link net.dv8tion.jda.api.events.guild.member.update.GenericGuildMemberUpdateEvent GenericGuildMemberUpdateEvent}
* which only provides the updated member instance. This is useful when JDA cannot fire specific update events when the member is uncached.
*
* <p>You can use this to do stateless checks on member instances to update database entries or check for special roles.
* Note that the member might not be in cache when this event is fired due to the {@link net.dv8tion.jda.api.utils.MemberCachePolicy MemberCachePolicy}.
*
* <h2>Requirements</h2>
*
* <p>This event requires the {@link net.dv8tion.jda.api.requests.GatewayIntent#GUILD_MEMBERS GUILD_MEMBERS} intent to be enabled.
* <br>{@link net.dv8tion.jda.api.JDABuilder#createDefault(String) createDefault(String)} and
* {@link net.dv8tion.jda.api.JDABuilder#createLight(String) createLight(String)} disable this by default!
*/
public class GuildMemberUpdateEvent extends GenericGuildMemberEvent
{
public GuildMemberUpdateEvent(@Nonnull JDA api, long responseNumber, @Nonnull Member member)
{
super(api, responseNumber, member);
}
}
Expand Up @@ -16,6 +16,7 @@
package net.dv8tion.jda.internal.handle;

import net.dv8tion.jda.api.entities.Role;
import net.dv8tion.jda.api.events.guild.member.GuildMemberUpdateEvent;
import net.dv8tion.jda.api.utils.data.DataArray;
import net.dv8tion.jda.api.utils.data.DataObject;
import net.dv8tion.jda.internal.JDAImpl;
Expand Down Expand Up @@ -63,6 +64,7 @@ protected Long handleInternally(DataObject content)
}

getJDA().getEntityBuilder().updateMemberCache(member);
getJDA().handleEvent(new GuildMemberUpdateEvent(getJDA(), responseNumber, member));
return null;
}

Expand Down

0 comments on commit 8637866

Please sign in to comment.