[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
public DiscordSlashBot(String token) {
new DiscordApiBuilder().setToken(token).login().thenAccept(api -> {
Server server = api.getServerById("302452071993442307").get();
try {
logger.info("BotName: " + api.getYourself().getName());
logger.info("Owner: " + api.getOwner().get().getName());
logger.info("Server: " + server.getName());
} catch (Exception e) {
e.printStackTrace();
}
List<SlashCommandOption> dummy = new ArrayList<SlashCommandOption>();
SlashCommand.with("bcdice", "BCDice のダイスボットを利用します", Arrays.asList(
SlashCommandOption.createWithOptions(SlashCommandOptionType.SUB_COMMAND_GROUP, "admin", "ダイスボットを管理します", Arrays.asList(
SlashCommandOption.createWithOptions(SlashCommandOptionType.SUB_COMMAND, "setServer", "ダイスサーバを変更します", Arrays.asList(
SlashCommandOption.create(SlashCommandOptionType.STRING, "serverURL", "新しく利用するダイスサーバの URL です", true)
)),
SlashCommandOption.createWithOptions(SlashCommandOptionType.SUB_COMMAND, "removeServer", "ダイスサーバを削除します", Arrays.asList(
SlashCommandOption.create(SlashCommandOptionType.STRING, "serverURL", "削除するダイスサーバの URL です", true)
)),
SlashCommandOption.createWithOptions(SlashCommandOptionType.SUB_COMMAND, "listServer", "ダイスサーバを一覧します", dummy)
))
)).createForServer(server).join();
try {
List<SlashCommand> slachCommandsOnServer = api.getServerSlashCommands(server).get();
for(SlashCommand sc : slachCommandsOnServer) {
logger.info("Slash command: " + sc.getName());
}
} catch(Exception e) {
e.printStackTrace();
}
logger.info("Start App");
api.addSlashCommandCreateListener(event -> {
SlashCommandInteraction interaction = event.getSlashCommandInteraction();
logger.info(interaction.getCommandName());
List<SlashCommandInteractionOption> options = interaction.getOptions();
for(SlashCommandInteractionOption option : options) {
logger.info(option.getName()); // ※
}
interaction.createImmediateResponder().setContent("Hello!! Hello hello!").respond();
});
});
}
Javacord を使い Slash コマンドを使った bot を作ろうとしている。上述の書き方でコマンドのサジェストは出せたが打たれたコマンドの取得ができない。上述のコードの※の所でそのへんがうまくとれることを期待していたのだが。今一度チュートリアルやドキュメントを読み直してみるかぁって顔をしている。
ある程度以上の規模のボットはスラッシュコマンドを使わないと上手く動かなくなる日が近づいているのもあり、ちょっと困ったものである。
ただいまコメントを受けつけておりません。