JDA-- 发送信息
JDA - send message
我有自己的基于 JDA 的 Discord BOT。我需要向特定频道发送短信。我知道如何将消息作为 onEvent 响应发送,但在我的情况下我没有这样的事件。
我有:作者(BOT)、Token 和频道号。
我的问题是:如何在没有事件的情况下向这个频道发送消息?
你只需要一件事就可以做到这一点,那就是 JDA
的一个实例。这可以从大多数实体(如 User/Guild/Channel 和每个 Event 实例)中检索。有了它,您可以使用 JDA.getTextChannelById
检索 TextChannel
实例以发送您的消息。
class MyClass {
private final JDA api;
private final long channelId;
private final String content;
public MyClass(JDA api) {
this.api = api;
}
public void doThing() {
TextChannel channel = api.getTextChannelById(this.channelId);
if (channel != null) {
channel.sendMessage(this.content).queue();
}
}
}
如果您没有 JDA 实例,则必须手动执行 HTTP 请求来发送消息,为此查找 discord documentation or jda source code。 JDA 源代码可能有点太复杂而不能作为示例,因为它更抽象以允许使用任何端点。
好的,我想我明白你的意思了。您无需通过事件来获取频道 ID 并发送消息。您唯一需要做的就是实例化 JDA,调用 awaitReady(),从实例中您可以获得所有通道(MessageChannels、TextChannels、VoiceChannels,或者通过调用
- 获取[Text]频道()
- 获取[Text]ChannelById(id=..)
- get[Text]ChannelsByName(名称,忽略大小写))
所以 1. 实例化 JDA
JDABuilder builder;
JDA jda = builder.build();
jda.awaitReady();
获取频道
List<TextChannel> channels = jda.getTextChannelsByName("general", true);
for(TextChannel ch : channels)
{
sendMessage(ch, "message");
}
发送消息
static void sendMessage(TextChannel ch, String msg)
{
ch.sendMessage(msg).queue();
}
希望对您有所帮助。
我有自己的基于 JDA 的 Discord BOT。我需要向特定频道发送短信。我知道如何将消息作为 onEvent 响应发送,但在我的情况下我没有这样的事件。
我有:作者(BOT)、Token 和频道号。
我的问题是:如何在没有事件的情况下向这个频道发送消息?
你只需要一件事就可以做到这一点,那就是 JDA
的一个实例。这可以从大多数实体(如 User/Guild/Channel 和每个 Event 实例)中检索。有了它,您可以使用 JDA.getTextChannelById
检索 TextChannel
实例以发送您的消息。
class MyClass {
private final JDA api;
private final long channelId;
private final String content;
public MyClass(JDA api) {
this.api = api;
}
public void doThing() {
TextChannel channel = api.getTextChannelById(this.channelId);
if (channel != null) {
channel.sendMessage(this.content).queue();
}
}
}
如果您没有 JDA 实例,则必须手动执行 HTTP 请求来发送消息,为此查找 discord documentation or jda source code。 JDA 源代码可能有点太复杂而不能作为示例,因为它更抽象以允许使用任何端点。
好的,我想我明白你的意思了。您无需通过事件来获取频道 ID 并发送消息。您唯一需要做的就是实例化 JDA,调用 awaitReady(),从实例中您可以获得所有通道(MessageChannels、TextChannels、VoiceChannels,或者通过调用
- 获取[Text]频道()
- 获取[Text]ChannelById(id=..)
- get[Text]ChannelsByName(名称,忽略大小写))
所以 1. 实例化 JDA
JDABuilder builder;
JDA jda = builder.build();
jda.awaitReady();
获取频道
List<TextChannel> channels = jda.getTextChannelsByName("general", true); for(TextChannel ch : channels) { sendMessage(ch, "message"); }
发送消息
static void sendMessage(TextChannel ch, String msg) { ch.sendMessage(msg).queue(); }
希望对您有所帮助。