我想让我的机器人在服务器通道说,无论用户dm它。
public class PrivateMessage extends ListenerAdapter
{
private TextChannel channel;
@Override
public void onReady(@NotNull ReadyEvent event)
{
channel = event.getJDA().getChannelById(TextChannel.class, 962688156942073887L);
}
@Override
public void onMessageReceived(@NotNull MessageReceivedEvent event)
{
if (event.isFromType(ChannelType.PRIVATE))
channel.sendMessage(MessageCreateData.fromMessage(event.getMessage())).queue();
}
}
一开始它工作正常,直到我把它做成了一个图像。
java.lang.IllegalStateException: Cannot build an empty message. You need at least one of content, embeds, components, or files
我该怎么补救呢?
1条答案
按热度按时间8hhllhi21#
1.通道声明不正确。它没有类型...在这种情况下,应使用
TextChannel channel = (whatever)
或Channel channel = (whatever)
1.您收到错误消息是因为channel**不在
onMessageReceived()
的作用域中。您需要了解作用域。onReady()
在这种情况下将没有用处。就像我之前提到的...因为作用域。下面是您的代码应该看起来像:
您需要使用公会的ID从公会获取文本通道。然后您可以使用**event.getMessage()获取发送到机器人的消息,并通过.getContentRaw()获取其内容,然后使用textChannel.sendMessage().queue()**发送该消息