Pythonで開発できるDiscordBotについて、「Nextcord」という新らしいフレームワークについて紹介、解説を行っていきます!
Nextcordとは?
Nextcordは、元々存在していたDiscord.pyというPythonで動くDiscordボットのフレームワークの後継として登場した新しいフレームワークです。(公式にはライブラリと記載されてます。)
Discord.pyが2021/08/28にサポート終了されました。[Discord.pyの開発サーバー]
これにより、Python最新バージョンでのDiscordボットの開発が難しくなりました。
そこでDiscordのBotをPythonで開発するためDiscord.pyのコードを元に次なるフレームワークとしてNextcordが誕生しました。
2025/01/07 時点ではバージョン3.0.1のリリース版が出されており、私も使用してみましたが問題なく動作します。
Nextcordのインストールとセットアップ
NextcordのGithubに詳しい方法は記載されていますが一応説明しておきます。
Nextcordはpipを使用してインストールすることが可能です。
2025/01/07 時点ではPython3.12での方法は記載されており、Python3.13は開発中のようです。
完全な音声サポートなしでのインストール
# Linux/macOS
python3 -m pip install -U nextcord
# Windows
py -3 -m pip install -U nextcord
それ以外の場合、音声サポートありのインストール
# Linux/macOS
python3 -m pip install -U "nextcord[voice]"
# Windows
py -3 -m pip install -U nextcord[voice]
その他インストールの種類がありますが基本的に使用されるのはこれらでしょう。
詳しくは公式のGitHubからおねがいします。
基本的な使い方
基本的には元になったDiscrod.pyと変わりません。使ってた人は楽かもね。
import nextcord # Nextcord本体のインポート
from nextcord.ext import commands # Nextcordのコマンド拡張機能のインポート
# Botのインスタンスを作成(commands.Botクラスを使用)
bot = commands.Bot()
# スラッシュコマンドを定義(/pingと入力すると反応)
@bot.slash_command(description="Replies with pong!") # コマンドの説明を追加
async def ping(interaction: nextcord.Interaction):
# ユーザーに「Pong!」と返信(ephemeral=Trueで他のユーザーには見えないメッセージ)
await interaction.send("Pong!", ephemeral=True)
# ボットを実行(トークンを使用してDiscordに接続)
bot.run("token")
上記が公式にも乗せてある簡単なコードですね。コメントは私がつけました。
Nextcordの機能
ここで記載するには多いので、調べたほうがいい単語などを記載しておきます。
(記事は書く予定だから書いてたらそっちを見てほしいな)
- 「event」ボットが起動した時や、誰かがサーバーに参加した時などの処理を行える。
- 「command」スラッシュコマンドと従来のテキストコマンドがあるから間違えないでね。
- 「cog」別のファイルに上記2つをまとめたりする時に便利かも。
- 「intents」ボットの扱える権限を指定してエラーを少なくできるよ。
- 「async」Pythonで非同期の処理を行うライブラリ。Nextcordが非同期処理を行うやつだから少し調べた法が良い。
今思いつくのはこのくらいなのであとは頑張ってね!
よくある問題と解決法
2025/01/07 | 3.0.1 : エラーが出てエラー文にawaitedみたいな文字があれば大体非同期処理のコードにawaitつけ忘れているからそこ見なさい。(私はよくある)
2025/01/07 | 3.0.1 : ボットに終了のコマンドbot.close()などを使用してもprogramが終了しない。
bot.start(“TOKEN”)だと自分で色々管理して終わらせないと正常に終わらない。
よくわからない人はbot.run(“TOKEN”)であればすべて自動でしてくれるからこっち使いな。
まとめ
Discord.py使ってた人は是非こっち使ってみて。Nextcordは普通に同じように使える。
新しく始める人も是非使ってね!(あと私の書いた記事もあったらみてね!!)
コメント