discord.py公式サーバに参加しようこの記事について対象読者これまでBotがちゃんと動いていたのに、2019年4月以降、動かなくなった。ネット上のチュートリアル記事がうまく動作せず、こまっている。具体的には、こんなエラーメッセージにお困りの方は、ぜひお読み下さい。botを作成するPythonライブラリ、discord.pyがメジャーアップデート(v0.16.12→v1.0.0)されました。このバージョンアップには多くの破壊的変更が含まれています。このことにより、1.0.0より前のバージョンを使用していたBotは動かない、または起動もできない状態になるおそれがあります。この記事では、このバージョンアップについての詳細と、ふたたびBotを動作させるためにやるべきことを紹介します。今回のアップデートの概要discord.pyがv1.0.0になりました今回リリースされたバージョンは、v1.0.0です。このバージョンは2017年末より開発が行われていたもので、大幅な設計の改善や機能の整理が行われています。2016年10月9日から過去2年8ヶ月。ストレス・血・汗、そして涙とともにあった、とても長い旅でした。APIリリース3周年と一致します。installでインストールできるのは、長らくバージョンv0.16.12でした。今回のアップデートにてバージョンv1.0.0がインストールされるようになりました。このことで、多くの既存Botに影響が出ることが予想されています。**という俗称(別名)がついています。余裕があれば覚えておいてください。asyncいわゆる「古い方」。v0.16.12以前のバージョンを指すrewrite「新しいほう」。v1.0.0以降のバージョンを指す対応方法Botを動かすためには、2通りの方法があります。discord.pyのバージョンをダウングレードする新しいバージョンに対応できるよう、Botのコードを修正する以下では、それぞれの方法の手順と、方法のえらびかたについてお話しします。upgradeによってrewrite版(v1.0.0)に上がってしまったバージョンを、async版(v0.16.12)に戻すやりかたです。こんな人・Botにおすすめすでに開発を終了しており、これまでどおり動けばいいだけのBotとにかくすぐにBotを一旦動かせる状態にしたい人rewrite版(v1.0.0)に対応するコード修正作業をすぐに行えないなどPython3.4以下のBotrewrite版(v1.0.0)ではPython3.4はサポート外になります手順インストール済のdiscordを一旦削除し、async版(v0.16.12)を指定してインストールします。discord.py==0.16.12Botの開発にボイスチャット機能を使っている方は、上記のかわりに以下を実行してください。discord.py\[voice\]==0.16.12Botがrewrite版(v1.0.0)で動作するよう、コードを修正する説明async版(v0.16.12)→rewrite版(v1.0.0)で実施された変更に対応して、コードを書き換える方法です。こんなBotにおすすめ開発作業が進行中のBotasync版(v0.16.12)よりrewrite版(v1.0.0)のほうが技術的サポートが受けやすいです今後、新機能の追加やバグ修正はrewrite版(v1.0.0~)のみで行われますボイスチャットを使用する機能があるBot自動再接続など、大幅に動作の品質が改善されていますPython3.5以上のBotPython3.4はサポート外になります手順discord.pyの公式ドキュメントに具体的な変更点や書き換え手順が示されているので、これに従って修正作業を行います。このような感じで1:1対応で丁寧に修正方法が記されています。日本語コミュニティ有志による日本語版もあります。まとめ2019年4月初旬、discord.pyのメジャーバージョンがアップデートされます。これは根本的な設計の変更や、APIの再設計が行われ、多くの破壊的変更を含むアップデートのため、既存のBotの動作に問題が発生する可能性があります。Botを動かすためには、ライブラリのバージョンをasync版(v0.16.12)に戻すか、rewrite(v1.0.0)に対応するようコードを修正するかの、いずれかの作業が必要です。今後の保守や機能追加の点からも、rewrite版(v1.0.0)に対応するようコードを書き換えるのがおすすめです。一刻も速く動かしたい場合やもうBotを触る予定がない場合は、とりあえずasync版(v0.16.12)に戻せばBotはすぐに動かせるようになります。わかりにくい点や困ったことがあればTwitterなどでお気軽にお声がけください。venvを使おうBotによって、Bot1はrewrite版(v1.0.0)を使って開発していきたいけど、もうひとつのBot2はasync版(v0.16.12)で動かしていきたい......という状況が発生するかもしれません。その場合、venvを使うと気軽に環境を切り替えることができます。使っていない方はぜひこれを機に導入しましょう。discord.py公式サーバに参加しようdiscord.py公式サーバは、discord.pyに関心のある方ならだれでも参加できるサーバです。今回のような大きなアップデートについてのニュースが受け取れるだけでなく、日本語話者用のテキストチャンネルも存在し、Bot開発の強い味方になってくれると思います。コメントをキャンセルメールアドレスが公開されることはありません。