discord.py のデバッグは少し難しい
discord.py という、discord BOT を作るためのパッケージがあります。
大変使いやすくて良いのですが、非同期であるがゆえにデバッグが難しく、起動にも時間がかかるため、ちょっとしたモデレーション目的でコードを実行するのも面倒で困っていました。
そこで、デバッグを簡単にするためのツール ddiscord を開発しました。
ddiscord はこう使う
コマンド ddiscord
を実行するとトークンを問われるので、自分のBOTのトークンを入力してください。
起動すると discord.Client
のインスタンス client
が使用可能な状態で REPL もどきが起動します。
$ ddiscord
- Debugger for discord.py -
Running on Python 3.7.2. Send EOF (Ctrl-D) to exit.
Logged in as YourBot#0000 (012345678901234567)
You can refer to your Client instance as `client` variable. i.e. client.guilds
>>> len(client.guilds)
1
>>> client.user.bot
True
>>> await client.guilds[0].create_text_channel('test')
<TextChannel id=012345678901234567 name='test' position=1>
>>>
見ての通り discord.py の簡単なデバッグや、またコマンドによるサーバーの管理を行うことができます。
インストール方法
PyPIに登録してありますので、pip install
できます。
$ python3 -m pip install ddiscord
Q and A
起動時に毎回トークンを入力するのがめんどくさい
カレントディレクトリに token
というテキストファイルがあれば、ddiscord はそのファイルの中身をトークンとして認識します。
また、環境変数 DISCORD_TOKEN
があれば、それをトークンとして認識します。
またトークンをコマンド引数として渡すこともできますので、複数のトークンを別々のエイリアスに登録しておくのも便利かと思います。
その他の起動方法は GitHub に書いてあります。
for文とか入力できないの?
今はまだ複数行の入力を受け付けません。方法を見つけたらそのうち対応したいですね……。
もし実現するためのアイデアをお持ちでしたらコメントやPRをいただけると助かります!
早速ですがアドバイスを頂いて、複数行に渡るコードをサポートしました!
Ctrl-C で終了しようとしたらなんかエラーめっちゃ出たんだけど
既知のバグです。EOF を送信すればエラーなしに正常終了してくれます。Windows では Ctrl-Z
、Linux では Ctrl-D
です。
原因が掴めず困っているので、こちらもアドバイスありましたらぜひおねがいします。