Discord JDA ActivityStartEvent (getMember)

Tingcraf

Neues Mitglied
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 :)
 

Ähnliche Java Themen

Neue Themen


Oben