JDA 获取所有渠道
Posted
技术标签:
【中文标题】JDA 获取所有渠道【英文标题】:JDA getting all channels 【发布时间】:2021-08-08 23:58:40 【问题描述】:我需要将我的机器人可以看到的所有频道放入一个字符串数组中,例如 #general,#memes。我该怎么做呢。我滚动浏览了 JDA 类方法,但一无所获。
【问题讨论】:
【参考方案1】:有很多方法可以做到这一点,没有任何代码很难帮助你。
首先,如果你有一个 JDA
实例,你可以这样做
jda.getGuildById("your_guild_id").getChannels();
其次,如果您有来自onMessageReceived
事件的event
,您可以这样做:event.getGuild().getChannels()
@Override
public void onMessageReceived(MessageReceivedEvent event)
System.out.println(String.join(",", event.getGuild().getChannels()));
第三,如果你有来自onReady
事件的event
,你可以这样做:event.getJDA()getGuildById("your_guild_id").getChannels()
@Override
public void onReady(ReadyEvent event)
System.out.println(String.join(",", event.getJDA().getGuildById("your_guild_id").getChannels()));
这是一个例子:
public class Main implements EventListener
public static void main(String[] args)
JDABuilder builder = JDABuilder.createDefault("YOUR_BOT_TOKEN");
builder.addEventListeners(new Main());
builder.build();
@Override
public void onReady(ReadyEvent event)
JDA jda = event.getJDA();
Guild guild = jda.getGuildById("YOUR_GUILD_ID");
System.out.println(String.join(",", guild.getChannels());
如果这没有帮助,请发布一些你所拥有的代码。
【讨论】:
不,这很有帮助。不过有一件事,我如何获得公会 ID? @SecretAgent guild.getGuildId()。 JDA 是用对象正确组织的。如果你想要 guildId,它只是 guild.getId()。如果您的 IDE 提供自动补全功能,那么当您在公会对象后添加一个点时,它应该会显示所有可用的操作。 @SecretAgent 要在 discord 中找到您的公会 ID,请查看此链接:support.discord.com/hc/en-us/articles/…以上是关于JDA 获取所有渠道的主要内容,如果未能解决你的问题,请参考以下文章
JDA 事件获取器返回 null 并让所有成员在一个角色中只返回机器人本身