discord-jda / JDA

Java wrapper for the popular chat & VOIP service: Discord https://discord.com
Apache License 2.0
4.28k stars 737 forks source link

event does not send response (GuildMemberJoinEvent) #2640

Closed iFran2019 closed 5 months ago

iFran2019 commented 5 months ago

General Troubleshooting

Version of JDA

5.0.0-beta.21

Expected Behaviour

When the member enters, say the message in the console.

Code Example for Reproduction Steps

package i.fran2019.sigma;

import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.GatewayIntent;
import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent;
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import javax.security.auth.login.LoginException;
import org.slf4j.Logger;

public class Bot {
    private final String botToken;
    private final Activity.ActivityType activityType;
    private final String activityStatus;
    private final Activity onlineStatus;

    public Bot(String botToken, Activity.ActivityType activityType, String activityStatus, Activity onlineStatus) {
        this.botToken = botToken;
        this.activityType = activityType;
        this.activityStatus = activityStatus;
        this.onlineStatus = onlineStatus;
    }

    public void start() {
        try {
            JDABuilder jdaBuilder = JDABuilder.createDefault(botToken);
            jdaBuilder.setStatus(onlineStatus);
            jdaBuilder.setActivity(Activity.of(activityType, activityStatus));
            jdaBuilder.enableIntents(GatewayIntent.GUILD_MEMBERS);
            jdaBuilder.addEventListeners(new InvitesHandler());
            jdaBuilder.build();
        } catch (LoginException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String botToken = "YOUR_BOT_TOKEN_HERE";
        Activity.ActivityType activityType = Activity.ActivityType.DEFAULT;
        String activityStatus = "Listening to commands";
        Activity onlineStatus = Activity.online(Activity.ActivityType.DEFAULT);

        Bot bot = new Bot(botToken, activityType, activityStatus, onlineStatus);
        bot.start();
    }

    public static class InvitesHandler extends ListenerAdapter {
        private static final Logger logger = Chronnos.getChronnos().getLogger();

        @Override
        public void onGuildInviteCreate(GuildInviteCreateEvent event) {
            String inviteCode = event.getInvite().getCode();
            logger.info("Se ha creado una invitación: {}", inviteCode);
        }

        @Override
        public void onGuildMemberJoin(GuildMemberJoinEvent event) {
            String memberName = event.getMember().getEffectiveName();
            String guildName = event.getGuild().getName();
            logger.info("MEMBER JOIN: {} se ha unido al servidor {}", memberName, guildName);
        }
    }
}

Code for JDABuilder or DefaultShardManagerBuilder used

package i.fran2019.sigma;

import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.GatewayIntent;
import net.dv8tion.jda.api.events.guild.invite.GuildInviteCreateEvent;
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;

import javax.security.auth.login.LoginException;
import org.slf4j.Logger;

public class Bot {
    private final String botToken;
    private final Activity.ActivityType activityType;
    private final String activityStatus;
    private final Activity onlineStatus;

    public Bot(String botToken, Activity.ActivityType activityType, String activityStatus, Activity onlineStatus) {
        this.botToken = botToken;
        this.activityType = activityType;
        this.activityStatus = activityStatus;
        this.onlineStatus = onlineStatus;
    }

    public void start() {
        try {
            JDABuilder jdaBuilder = JDABuilder.createDefault(botToken);
            jdaBuilder.setStatus(onlineStatus);
            jdaBuilder.setActivity(Activity.of(activityType, activityStatus));
            jdaBuilder.enableIntents(GatewayIntent.GUILD_MEMBERS);
            jdaBuilder.addEventListeners(new InvitesHandler());
            jdaBuilder.build();
        } catch (LoginException e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        String botToken = "YOUR_BOT_TOKEN_HERE";
        Activity.ActivityType activityType = Activity.ActivityType.DEFAULT;
        String activityStatus = "Listening to commands";
        Activity onlineStatus = Activity.online(Activity.ActivityType.DEFAULT);

        Bot bot = new Bot(botToken, activityType, activityStatus, onlineStatus);
        bot.start();
    }
}

Exception or Error

The error that the event does not give a response.