Java:从 Discord JDA 获取并 return 邀请 url

Java: get and return invite url from Discord JDA

我的java spring启动应用程序有一个功能可以在discord上创建一个文本频道并将创建的频道数据保存在数据库中。
虽然我无法弄清楚如何从函数 return 创建的邀请 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";
    }
}

您应该使用回调:

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);
    });
}