はじめに
前回の記事に引き続き、備忘録も兼ねたDiscord APIのChannelのposition関連の挙動についてまとめる。
本記事ではAPIラッパーライブラリとしてdiscord.jsを使用する。
Channelオブジェクトのpositionプロパティの値
DiscordのChannelオブジェクトのpositionの値は、0から始まる。
0はカテゴリ内のチャンネルであれば、そのカテゴリの先頭。
カテゴリ外のチャンネルであればサーバー内の先頭を指している。
チャンネル作成時のpositionの値
チャンネルを作成する際に、その位置にチャンネルを作成するか指定するのオプション値、positionパラメータについて。
チャンネル作成時のpositionパラメータの値は、プロパティと同じく0から始まる。
しかし、ここでの0は既存チャンネルの末尾にチャンネルを作成することを指す。
では先頭に作成したい場合はどうすればよいかと言えば、1を指定すればいよい。
要するに、Channelオブジェクトのpositionプロパティの値は先頭から0 1 2...とナンバリングされているが、チャンネル作成時のpositionパラメータの指定位置は先頭から1 2 3...とナンバリングされている訳である。
特定のチャンネルの下にチャンネルを作成する
少し困るのが特定のチャンネルの下にチャンネルを作成したいときである。
普通に下に追加するだけであれば特定のチャンネルのpositionプロパティの値に+2した値をpositionパラメータに渡せばよいだけだが、特定のチャンネルがカテゴリの末尾などにあると、これではエラーになるため0を指定しなければならない。
このとき役に立つのがカテゴリ内のチャンネル数である。
特定のチャンネルのpositionプロパティの値に+2した値が、このチャンネル数を超える場合0としてあげれば、上手く処理できる。
あとがき
以上、暫定的に備忘録として記事を残した。
今後、実際のコードなどを追加して記事を充実させていきたい。
ご参考になればと思います。