java - 从 ID 获取用户名 - Discord JDA

标签 java discord discord-jda

我从 User.fromID(long id) 获得一个 User

用户 u = User.fromID(123456);

然后我想获取该用户的名称。所以我使用 User.getName()

字符串名称 = u.getName();

但随后我收到一个错误。

[JDA MainWS-ReadThread] ERROR JDA - One of the EventListeners had an uncaught exception
java.lang.UnsupportedOperationException: This User instance only wraps an ID. Other operations are unsupported
    at net.dv8tion.jda.internal.entities.UserById.unsupported(UserById.java:78)
    at net.dv8tion.jda.internal.entities.UserById.getName(UserById.java:85)
    at bot.Profile.<init>(Profile.java:19)
    at files.Profiles.handleUser(Profiles.java:17)
    at bot.Chat.onMessageReceived(Chat.java:19)
    at net.dv8tion.jda.api.hooks.ListenerAdapter.onEvent(ListenerAdapter.java:430)
    at net.dv8tion.jda.api.hooks.InterfacedEventManager.handle(InterfacedEventManager.java:96)
    at net.dv8tion.jda.internal.hooks.EventManagerProxy.handleInternally(EventManagerProxy.java:82)
    at net.dv8tion.jda.internal.hooks.EventManagerProxy.handle(EventManagerProxy.java:69)
    at net.dv8tion.jda.internal.JDAImpl.handleEvent(JDAImpl.java:150)
    at net.dv8tion.jda.internal.handle.MessageCreateHandler.handleInternally(MessageCreateHandler.java:122)
    at net.dv8tion.jda.internal.handle.SocketHandler.handle(SocketHandler.java:36)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onDispatch(WebSocketClient.java:948)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onEvent(WebSocketClient.java:835)
    at net.dv8tion.jda.internal.requests.WebSocketClient.handleEvent(WebSocketClient.java:813)
    at net.dv8tion.jda.internal.requests.WebSocketClient.onBinaryMessage(WebSocketClient.java:986)
    at com.neovisionaries.ws.client.ListenerManager.callOnBinaryMessage(ListenerManager.java:385)
    at com.neovisionaries.ws.client.ReadingThread.callOnBinaryMessage(ReadingThread.java:276)
    at com.neovisionaries.ws.client.ReadingThread.handleBinaryFrame(ReadingThread.java:996)
    at com.neovisionaries.ws.client.ReadingThread.handleFrame(ReadingThread.java:755)
    at com.neovisionaries.ws.client.ReadingThread.main(ReadingThread.java:108)
    at com.neovisionaries.ws.client.ReadingThread.runMain(ReadingThread.java:64)
    at com.neovisionaries.ws.client.WebSocketThread.run(WebSocketThread.java:45)

如何获取仅包含 ID用户 名称?

感谢任何帮助。

最佳答案

您需要一个 JDA实例并使用retrieveUserById相反。

示例:

jda.retrieveUserById(userId)
   .map(User::getName)
   .queue(name -> {
   // use name here
       System.out.println("The user has the name " + name);
   });

关于java - 从 ID 获取用户名 - Discord JDA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64493339/

相关文章:

java - Web 应用程序中的线程(servlet、Spring、hibernate)

python - 如何加入服务器?

javascript - Discord.js 禁止/踢出命令可供所有用户使用。我怎样才能解决这个问题?

java - 如何授予新创建的角色加入新创建的 JDA 库语音聊天的权限?

java - 使用计时器删除 ListenerAdapter

java - 将 Google Protocol Buffers 与 Java NIO 结合使用?

java - JPA OneToOne,外键在 Spring Boot 上获取 null

python - 尝试每小时向 channel 发送消息

mysql - 创建一个 View ,其中玩家经验大于级别表所需的经验

java - 使用 JUnit 时让 TimerTask 运行