discord.pyを1.3.4にしなきゃ動かなくなったってお話

2 min読了の目安(約1700字TECH技術記事

経緯

先日discord APIのアップデートが入り、バージョン1.3.4以前のdiscord.pyでは、以下のようなエラーが発生して動作しなくなってします。

TypeError:__new__() got an unexpected keyword argument 'deny_new'

(なんか1.2.5の時も似たようなのありましたね。KeyErrorでしたっけ?)

解決法

discord.pyのバージョンを1.3.4以上にしてあげてください(記事掲載時点での最新は1.3.4)。
ちなみに現在のバージョンを確認するには、コンソール上でPythonのインタプリタ(対話モード)を開き、以下のコマンドを実行してください。

>>> import discord
>>> print(discord.__version__)
1.3.4

この場合は記事執筆時点で最新の、1.3.4がインストールされています。
今この記事を見ている人の大半は1.3.4以前のものを使っていると思いますので、1.3.3など違う出力になっていると思います。
バージョンを上げることができれば何でも大丈夫ですが、以下にいくつか方法を提示しておきます。

Herokuの場合

Herokuの場合はrequirements.txtというファイルでライブラリを管理しているため、このファイルを編集して上げる必要があります。
以下が例です。

discord.py>=1.3.4

requirements.txtの書き方については、我らが味方note.nkmk.meが解説していますので、興味がある方は是非。
https://note.nkmk.me/python-pip-install-requirements/

また、Herokuの場合、requirements.txtに記述したライブラリが自動でアップデートされるわけではないため、1.3.4のリリース後にデプロイをしていない場合、gitでコミットを行いデプロイして上げる必要があります。
「何いってんのかよくわかんねぇよ!」って人は上の通りにrequirements.txtを更新するだけでも大丈夫です

Windowsの場合

Windowsの場合は、以下のコマンドをコマンドプロントで実行すればdiscord.pyを更新することが出来ます。
1.3.4が入らない場合はdiscord.pyの部分をdiscord.py==1.3.4に変更するなどしてみてください。

py -3 -m pip install -U discord.py
# voice関係のものを使っている場合
py -3 -m pip install -U discord.py[voice]

Linux or Macの場合

以下のコマンドをターミナルで実行してみてください。なお筆者はMacを持っていないためMacの仕様はよくわかってません。

python3 -m pip install -U discord.py
# Windowsの場合と同様にvoice関係の物を使っている場合
python3 -m pip install -U discord.py[voice]

終わりに

いかがでしたでしょうか。
「久しぶりにbotを起動したけど動かない!」みたいな方の手助けになったなら幸いです。
執筆が初めてなので、拙い箇所が多々あるかもしれませんがご容赦ください。

最後に、私がよく出没しているdiscordサーバのリンクを貼っておきます。
Discord Bot Portal JP
disocrd botについての質問などができるサーバですので、bot制作で躓いていたら参加してみると良いかもしれません。

Happy coding!