追記(2022/5/20):
この記事を放置していてすみません。その間に API の仕様変更が延期されたのと Discord.py が開発再開したので編集しました。ついでに私も申請したので体験談を書きました。 @gx1285JP さん編集リクエストありがとうございます!
この記事の要約
- Bot を 100 サーバー以上に所属させないなら関係ないよ
- 100 サーバー以上に所属しているなら
2022 年 4 月末までに2022 年 8 月末までにスラッシュコマンドに移行するか Discord に Message content intent の申請しないといけないよ - スラッシュコマンドで済むような機能では申請は通るか分からないよ
はじめに
Discord.py が開発を終了したのは記憶に新しいと思います。Danny 氏によるとその理由の一つに Discord は Bot 開発者に既存のメッセージコマンドからスラッシュコマンドをに移行することを強いるが、 Danny 氏はそれを気に入らないというものがありました。
Discord.py は開発を再開しました!詳しくはこちらをご覧ください。
これはどういうことかと言うと、2022 年 5 月 1 日2022 年 9 月 1 日から Message content(メッセージの本文など)が特権インテント(Privieged Intentscdになると言うことです。
認証 Bot とは
2020 年の 10 月から 100 サーバー以上に所属する Bot は認証しないといけなくなりました。これは API を用いてどのような情報を使うか、また何のために使うかなどを入力したり、身分証明書を提出したりというもので、75 サーバー以上所属した時点で申請できます。
特権インテント(Privieged Intents)とは
認証 Bot は申請しなければ特権インテントは使えません。2021 年 12 月現在特権インテントになっているのは Presence intent と Server members intent です。
Presence intent は Member.status
、Member.activity
などを受け取るのに必要で、Server members intent は on_member
で始まるイベントと、on_user_update
を受け取るのに必要です。インテントについて詳しく知りたい方はこちらの記事を参考にしてください。
そして今回、Message content intent が特権インテントになると言うわけです。Message content intent はメッセージオブジェクトの
content
embeds
attachments
-
components
を取得するのに必要です。ただし Bot 自身のメッセージは例外で常に取得できます。
つまりどういうこと?
100 サーバー以上所属している Bot が従来の message.content
を使ったコマンドを使うには申請が必要です!
申請って通るの?
分からないです!詳しくはポリシーを読んでほしいのですが、簡単に要約するとユニークで、その機能がある理由に説得力があり、変革的で、ユーザーのプライバシーと安全性が守られることが要求されるらしいです。もしかしたらスラッシュコマンドで済むような機能では申請は通らないかもしれないですね…
(追記)この前実際に申請した体験談
ガチでめんどくさかったです。まずユーザがデータの追跡からオプトアウトする機能をつけないといけなくて、さらにプライバシーポリシーも作らなければなりませんでした。しかも私が書いたプライバシーポリシーは一回ダメ出しされました(泣)まあそれだけ今までプライバシーに関して問題があったのでしょう。
参考にさせていただいたサイト
Message Content: Privileged Intent for Verified Bots
Message Content Intent Alternatives/Workarounds
Message Content Intent: Review Policy
The Future of discord.py
猿でもわかる!discord.pyのIntentsについて!
On Resuming discord.py Development
Discord APIのメッセージインテントについて
この記事のライセンス
この記事はCC BY 4.0(クリエイティブ・コモンズ 表示 4.0 国際 ライセンス)の元で公開します。