Java:从 Discord JDA 获取并返回邀请 url

Posted

技术标签:

【中文标题】Java:从 Discord JDA 获取并返回邀请 url【英文标题】:Java: get and return invite url from Discord JDA 【发布时间】:2020-10-17 19:48:06 【问题描述】:

我的 java spring boot 应用程序具有在 discord 上创建文本通道并将创建的通道数据保存在数据库中的功能。 虽然我无法弄清楚如何从函数中返回创建的邀请 url。

public void myFunction(String category, String channelName) 
    String inviteUrl = discordService.createTextChannel();
    MyData data = new MyData();
    data.setCategory(category);
    data.setChannelName(channelName);
    data.setInviteUrl(inviteUrl);
    myRepo.save(data);


@Service
@RequiredArgsConstructor
public class DiscordService 

    private final JDA jda;

    @Value("$discord.main.guild.id")
    private String mainGuildId;

    public String createTextChannel(String categoryName, String channelName) 
        jda.getGuildById(mainGuildId).createCategory(categoryName).queue(
                category ->  category.createTextChannel(channelName).queue(
                        textChannel -> textChannel.createInvite().queue(
                                invite -> System.out.println("The url is " + invite.getUrl()));
        );
        return "return the url";
    

【问题讨论】:

【参考方案1】:

你应该使用回调:

public void createTextChannel(String categoryName, String channelName, Consumer<Invite> callback) 
    jda.getGuildById(mainGuildId)
       .createCategory(categoryName)
       .flatMap(category -> category.createTextChannel(channelName))
       .flatMap(textChannel -> textChannel.createInvite())
       .queue(callback);


public void myFunction(String category, String channelName) 
    discordService.createTextChannel(category, channelName, (invite) -> 
        MyData data = new MyData();
        data.setCategory(category);
        data.setChannelName(channelName);
        data.setInviteUrl(invite.getUrl());
        myRepo.save(data);
    );

【讨论】:

以上是关于Java:从 Discord JDA 获取并返回邀请 url的主要内容,如果未能解决你的问题,请参考以下文章

获取 Embed-Discord API (JDA) 的提及用户

如何使用 JDA 在 Discord 中创建文本通道:Java Discord Api

如何使用 JDA 在 Discord 服务器(不是用户/机器人 DM)中创建私人频道:Java Discord API

JDA 在通过 id 获取公会时返回 null

试图理解 Java 中的时间戳(Discord JDA 和 Mongodb)

Java Discord Bot (JDA) 检查是不是固定