# Discord JDA ActivityStartEvent (getMember)



## Tingcraf (16. Mai 2021)

Hallo zusammen,
Ich hab da ein Problem mit diesen Code:
[CODE lang="java" title="Main"]package de.tingcraf;

import net.dv8tion.jda.api.JDA;
import net.dv8tion.jda.api.JDABuilder;
import net.dv8tion.jda.api.requests.GatewayIntent;
import net.dv8tion.jda.api.utils.MemberCachePolicy;
import net.dv8tion.jda.api.utils.cache.CacheFlag;

import javax.security.auth.login.LoginException;

public class Main {

    static JDA jda;

    public static void main(String[] args) throws LoginException {

        jda = JDABuilder.createDefault("HierWäreDer/DasToken...").
                enableIntents(GatewayIntent.GUILD_MEMBERS, GatewayIntent.GUILD_PRESENCES).
                setMemberCachePolicy(MemberCachePolicy.ALL).
                enableCache(CacheFlag.ACTIVITY,CacheFlag.ONLINE_STATUS).
                build();

        jda.addEventListener(new Listener());

    }
}
[/CODE]


[CODE lang="java" title="Listener"]package de.tingcraf;

import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.entities.Member;
import net.dv8tion.jda.api.entities.MessageChannel;
import net.dv8tion.jda.api.entities.User;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.events.message.priv.PrivateMessageReceivedEvent;
import net.dv8tion.jda.api.events.user.UserActivityEndEvent;
import net.dv8tion.jda.api.events.user.UserActivityStartEvent;
import net.dv8tion.jda.api.events.user.update.UserUpdateOnlineStatusEvent;
import net.dv8tion.jda.api.hooks.ListenerAdapter;
import net.dv8tion.jda.api.requests.RestAction;
import net.dv8tion.jda.api.requests.restaction.MessageAction;
import org.jetbrains.annotations.NotNull;

import javax.annotation.CheckReturnValue;
import javax.swing.*;
import java.sql.ResultSet;





public class Listener extends ListenerAdapter {

    @Override
    public void onUserActivityStart(@NotNull UserActivityStartEvent event) {

        var guild = event.getGuild();
        var activity = event.getNewActivity();
        var liveChannel = guild.getTextChannelById(841679879039746088L);
        var memberLive = event.getMember();

        System.out.println(event.getMember()); //Nur zum schauen, ob das geht...

        if (event.getNewActivity().getType() == Activity.ActivityType.STREAMING) {
            guild.addRoleToMember(memberLive, guild.getRoleById(842401499308884018L)).queue();
            liveChannel.sendMessage(memberLive.getAsMention() + " ist nun Live!\n" + activity.getUrl() + "\n<@&842408283972960266>").queue();

        }

    }



    @Override
    public void onUserActivityEnd(@NotNull UserActivityEndEvent event) {

        var guild = event.getGuild();
        var activity = event.getOldActivity();

        if (activity.getType() == Activity.ActivityType.STREAMING) {
            guild.removeRoleFromMember(event.getMember(), guild.getRoleById(842401499308884018L)).queue();


        }
    }
}

[/CODE]

Allerdings findet der keinen Spieler welcher grade seine Aktivität geändert hat, obwohl ich das mehrfach getestet habe... Die Permissons im Dev-Portal ist auch soweit richtig. Wenn ihr vielleicht wisst, weshalb das nicht geht...

Vielen Dank im Voraus

LG
Tingcraf

PS: Ich bin noch nicht lange am Coden... also bitte werft mir keine Fachbegriffe um die Ohren, ohne diese kurz zu erklären


----------



## TylerSchoen (19. Nov 2022)

Was hast denn eigentlich vor?


----------

