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