【備忘録】discord.py v.2.0関係 その1
discord.py の開発停止→dislash.py へ移行→dislash.pyのサポート停止
→discord.pyの開発再開
と私自身非常に振り回されたところですが、discord.pyのv.2.0 にも慣れてきたところもあるので、記録に残していきます。
(有料記事設定ですが、投げ銭用の措置です。無料ですべての内容が読めます)
v.2.0のインストール
正式にリリースされているものの、最新バージョンは1.7.3になりますが、
開発再開後は、2.0.0 バージョンにて更新されています。
これを利用するには、Githubからダウンロードする必要があります。
pip install git+https://github.com/Rapptz/discord.py
追記 9/13
v.2.0 については、PyPIに公開されました。そのため、Githubからのみインストールするしかない状況ではなくなりました。
変更点
非常に多くの点で、変更があります。
Botの起動
Botの起動で新たなやり方が加わることです。
原理・仕組みに疎いので、事実だけ述べると、
bot.run(Your_Token)
をPython ファイルの一番下に記述して、Botを起動してしたところを、
bot = commands.Bot(・・・・・・)
async def main():
# do other async things
await my_async_function()
# start the client
async with bot:
await bot.start(Your_Token)
asyncio.run(main())
してもBot起動できます。
これについては、ドキュメントを読んで各自で判断してください。
あと、変更ということとは少し違いますが、
Github のdiscord.pyのサンプルやDiscord上の開発者たちの集まるサーバーなどでは、Cogを利用しているものがほとんどです。
私もこの移行で初めてCogを利用することになりますが、慣れれば便利なものです。
Cogとは
Cogは、Pythonにおけるクラスとほぼ同義です。
ほぼ同義というのは、コードの記述面で です。
ただ、クラスは関数を定義し、まとめた雛形としての側面が強いですが、
DiscordのBotにおいては、関数の定義がほぼほぼ、スラッシュコマンドの定義、メッセージコマンドの定義など、コマンドを増やすことになるので、コマンドをグルーピングするのに近いと思います。
Cogを利用していると、別ファイルに分けていくようになりますが、
Cogを読み込む側は、
COGS = [Cog記載のファイル]
for cog in COGS:
await bot.load_extension(cog)
を先ほど、main関数内に入れておくと、Bot起動時にCogを読み込んでくれます。
ただ、別ファイルに分けたはいいものの、分けた先のファイルの一番下にsetup関数を入れておかないと、load_extensionで読み込んでくれません。
Cogの話だと、散々注意書きされていますが、それほど忘れやすいので、こちらでも書いておきます。
async def setup(bot: commands.Bot):
await bot.add_cog(Cog_name(bot))
今回はここまでにして、次回以降はスラッシュコマンドに関する内容も載せていきます。
上で話した、Discord内のdiscord.pyのサーバーは英語メインですが、日本語でのテキストチャンネルもあり、質問やチャットもあります。
discord.pyのv.2.0.0については、インターネット上にあまり情報が多くありません。Discordサーバーが一番情報の最先端をいっています。
そのため、質問しなくてもサーバーの検索を利用して、調べようとしていることが過去に話題になっていないか見てみることを頻繁にしてます。実際、きっかけになることは多いです。
Shiftkeyについて
役に立ったという方は、投げ銭代わりの有料記事購入をお願いいたします。
感謝のコメントを有料記事部分に記載しておきます。
ここから先は
¥ 100
noteの内容に共感していただければ、ぜひともサポートを宜しくお願いします。今後の記事投稿の励みになります。