はじめに
前回の記事に引き続き、備忘録も兼ねた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
としてあげれば、上手く処理できる。
あとがき
以上、暫定的に備忘録として記事を残した。
今後、実際のコードなどを追加して記事を充実させていきたい。
ご参考になればと思います。