我有自己的基于JDA的Discord BOT。我需要向特定频道发送短信。我知道如何将消息作为onEvent响应发送,但是在我的情况下,我没有此类事件。
我有:作者(BOT),令牌和频道号。
我的问题是:如何在没有事件的情况下将消息发送到该频道 ?
答案 0 :(得分:2)
好吧,我想我知道你的意思。您无需进行任何事件即可获取频道ID和发送消息。您唯一需要做的就是实例化JDA,调用awaitReady(),从实例中可以获取所有通道(MessageChannels,TextChannels,VoiceChannels,可以通过调用
所以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();
}
希望有帮助。
答案 1 :(得分:1)
您只需要做一件事,即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或jda source code。 JDA源代码可能有点太复杂,以至于无法作为示例,因为它的抽象性允许使用任何端点。