java - 从 ID 获取用户名 - Discord JDA
问题描述
我得到一个用户User.fromID(long id)
User u = User.fromID(123456);
然后我想得到那个用户的名字。所以我用User.getName()
String name = 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);
});
推荐阅读
- html - 使用 Multer 在 Nodejs 中上传多个图像
- reactjs - 为什么在部署我的项目后卡住/空白页面?反应路由器 Dom | 参数
- python - 试图绘制大约 10 条线并以不同的方式命名每条线?
- java - 在集成 Razorpay 支付网关期间没有支付?
- reactjs - 如何在从 API 调用收到的响应中打开文件
- python - 对迭代中具有重复元素的字符串进行分区
- scala - 如何在 Akka Typed 中从 ActorSystem 传递自我引用
- javascript - 如何在同一行中创建左对齐按钮、居中对齐文本和右对齐按钮(ReactJS)
- r - 对不同的正态分布进行积分得到 0 概率
- gnuplot - 带有 gnuplot 的 4D 绘图