Add DiscordJoinListener to handle member join events
Introduced `DiscordJoinListener` to manage actions when a Discord user joins the server, ensuring linked players are assigned appropriate roles. Integrated the listener into the bot's event handlers in `Bot.java`. This enhances the user experience by maintaining role synchronization.
This commit is contained in:
parent
7083235d68
commit
8ddbfcd521
|
|
@ -1,8 +1,8 @@
|
||||||
package com.alttd.proxydiscordlink.bot;
|
package com.alttd.proxydiscordlink.bot;
|
||||||
|
|
||||||
import com.alttd.proxydiscordlink.JDAListener;
|
|
||||||
import com.alttd.proxydiscordlink.DiscordLink;
|
import com.alttd.proxydiscordlink.DiscordLink;
|
||||||
import com.alttd.proxydiscordlink.bot.commandManager.CommandManager;
|
import com.alttd.proxydiscordlink.bot.commandManager.CommandManager;
|
||||||
|
import com.alttd.proxydiscordlink.bot.listeners.DiscordJoinListener;
|
||||||
import com.alttd.proxydiscordlink.bot.listeners.DiscordRoleListener;
|
import com.alttd.proxydiscordlink.bot.listeners.DiscordRoleListener;
|
||||||
import com.alttd.proxydiscordlink.bot.tasks.CheckLinkSync;
|
import com.alttd.proxydiscordlink.bot.tasks.CheckLinkSync;
|
||||||
import com.alttd.proxydiscordlink.config.BotConfig;
|
import com.alttd.proxydiscordlink.config.BotConfig;
|
||||||
|
|
@ -41,6 +41,7 @@ public class Bot {
|
||||||
jda.awaitReady();
|
jda.awaitReady();
|
||||||
ALogger.info("JDA ready");
|
ALogger.info("JDA ready");
|
||||||
jda.addEventListener(
|
jda.addEventListener(
|
||||||
|
new DiscordJoinListener(),
|
||||||
new DiscordRoleListener()/*,
|
new DiscordRoleListener()/*,
|
||||||
new JDAListener(jda)*/);
|
new JDAListener(jda)*/);
|
||||||
DiscordLink.getPlugin().getProxy().getScheduler().buildTask(DiscordLink.getPlugin(), new CheckLinkSync())
|
DiscordLink.getPlugin().getProxy().getScheduler().buildTask(DiscordLink.getPlugin(), new CheckLinkSync())
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
package com.alttd.proxydiscordlink.bot.listeners;
|
||||||
|
|
||||||
|
import com.alttd.proxydiscordlink.DiscordLink;
|
||||||
|
import com.alttd.proxydiscordlink.bot.objects.DiscordRole;
|
||||||
|
import com.alttd.proxydiscordlink.database.Database;
|
||||||
|
import com.alttd.proxydiscordlink.objects.DiscordLinkPlayer;
|
||||||
|
import net.dv8tion.jda.api.entities.User;
|
||||||
|
import net.dv8tion.jda.api.events.guild.member.GuildMemberJoinEvent;
|
||||||
|
import net.dv8tion.jda.api.hooks.ListenerAdapter;
|
||||||
|
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class DiscordJoinListener extends ListenerAdapter {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onGuildMemberJoin(GuildMemberJoinEvent event) {
|
||||||
|
User user = event.getUser();
|
||||||
|
Database database = DiscordLink.getPlugin().getDatabase();
|
||||||
|
if (database.playerIsLinked(user.getIdLong())) {
|
||||||
|
DiscordLinkPlayer discordLinkPlayer = database.getPlayer(user.getIdLong());
|
||||||
|
discordLinkPlayer.linkedRole(true);
|
||||||
|
discordLinkPlayer.updateDiscord(
|
||||||
|
DiscordRole.getDiscordRoles().stream()
|
||||||
|
.filter(role -> discordLinkPlayer.getRoles().contains(role.getInternalName()))
|
||||||
|
.collect(Collectors.toList()),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user