mirror of
https://github.com/System-End/Discord-MC-Chat.git
synced 2026-04-19 22:05:11 +00:00
Add method to retrieve all Discord members and enhance mention handling
This commit is contained in:
parent
241bc8d8ed
commit
203f21701a
2 changed files with 36 additions and 0 deletions
|
|
@ -347,6 +347,25 @@ public final class DiscordManager {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all Discord members from every connected guild.
|
||||
*/
|
||||
public static List<Member> getAllMembers() {
|
||||
if (jda == null) {
|
||||
return List.of();
|
||||
}
|
||||
Set<String> seen = new LinkedHashSet<>();
|
||||
List<Member> members = new ArrayList<>();
|
||||
for (var guild : jda.getGuilds()) {
|
||||
for (Member member : guild.getMembers()) {
|
||||
if (seen.add(member.getId())) {
|
||||
members.add(member);
|
||||
}
|
||||
}
|
||||
}
|
||||
return members;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all guild roles from every connected guild.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -222,6 +222,7 @@ public final class MinecraftMessageParser {
|
|||
Map<String, MentionTarget> roleByAlias = new HashMap<>();
|
||||
Map<String, MentionTarget> allMentionByAlias = new HashMap<>();
|
||||
Map<String, RichCustomEmoji> emojiByAlias = new HashMap<>();
|
||||
Map<String, MentionTarget> targetByDiscordId = new HashMap<>();
|
||||
|
||||
Map<String, List<LinkedAccountManager.LinkEntry>> allLinks = LinkedAccountManager.getAllLinks();
|
||||
for (Map.Entry<String, List<LinkedAccountManager.LinkEntry>> entry : allLinks.entrySet()) {
|
||||
|
|
@ -234,6 +235,7 @@ public final class MinecraftMessageParser {
|
|||
String roleColor = DiscordMessageParser.getRoleColorHex(member);
|
||||
|
||||
MentionTarget target = new MentionTarget(MentionType.USER, discordId, displayName, roleColor, linkedUuids);
|
||||
targetByDiscordId.put(discordId, target);
|
||||
|
||||
if (user != null) {
|
||||
putMentionAlias(userByAlias, allMentionByAlias, user.getName(), target);
|
||||
|
|
@ -249,6 +251,21 @@ public final class MinecraftMessageParser {
|
|||
}
|
||||
}
|
||||
|
||||
for (Member member : DiscordManager.getAllMembers()) {
|
||||
String discordId = member.getId();
|
||||
MentionTarget target = targetByDiscordId.computeIfAbsent(discordId, id -> new MentionTarget(
|
||||
MentionType.USER,
|
||||
id,
|
||||
member.getEffectiveName(),
|
||||
DiscordMessageParser.getRoleColorHex(member),
|
||||
List.of()
|
||||
));
|
||||
|
||||
User user = member.getUser();
|
||||
putMentionAlias(userByAlias, allMentionByAlias, user.getName(), target);
|
||||
putMentionAlias(userByAlias, allMentionByAlias, member.getEffectiveName(), target);
|
||||
}
|
||||
|
||||
for (Role role : DiscordManager.getAllRoles()) {
|
||||
String color = "white";
|
||||
Color roleColor = role.getColors().getPrimary();
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue