[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
今月後半はダイスボットの実装等他のことに注力していたのもあり進捗が芳しくない。
(雛´-`).。oO(うーん……何かが上手く行ってない感じがする) pic.twitter.com/W6jn3Fgzca
— しゅんしゅんひよこ (@Shunshun94) January 17, 2022
先月、一定ほしかったものに到達したものの、顔を上手く描けていないのがネックだった。そのため、その解決を図るために絵の模写を継続することとしている。とりあえず模写をできてきたら次は角度のついた顔の描き方のコツ!アオリもフカンも自由自在にを参考に試行錯誤したい。
Inkscape について重要な機能に気づけたのが最大成果か。
タイトルまんま。だいぶ前に導入されたが一部のマニアックな用途にしか使えなかったゆとシートの json 出力がバックアップ・リカバリのために利用できるようになった。
json 出力はここから取得ができる。
画面上部のコンバートから json ファイルをアップロードすることでリストアが可能。
ゆとシートが障害で停止した場合等にこれを用いてセッションを継続できるのは覚えておいてもいいかもしれない。
末尾に以下を挿入する。
del %0
delはその名の通りファイルを削除するコマンド。ちなみにこのコマンドだとフォルダは消せない。フォルダを消したければ rd コマンドを使う。Remove Directory の略か。
%0は自身を指すファイル名となる。バッチスクリプトに渡される n 番目の引数は %n となるが、0番目の引数は実行されているバッチスクリプトそのものを指す。
実行されるファイルの前後にスペースがある場合などはダブルクォートで囲むなど工夫しましょう。
一覧にイベントバインドするの方法を使うことで増減する要素についてもまとめてイベントバインド(したような挙動にすることが)できる。だが、どうも focus イベントや blur イベントについてはこれが効かないようだ。どうしたものかな、と悩んでいる……
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 を作ろうとしている。上述の書き方でコマンドのサジェストは出せたが打たれたコマンドの取得ができない。上述のコードの※の所でそのへんがうまくとれることを期待していたのだが。今一度チュートリアルやドキュメントを読み直してみるかぁって顔をしている。
ある程度以上の規模のボットはスラッシュコマンドを使わないと上手く動かなくなる日が近づいているのもあり、ちょっと困ったものである。