LoginSignup
8
4

More than 3 years have passed since last update.

discord.py のデバッガー ddiscord が便利

Last updated at Posted at 2019-07-14

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 です。
原因が掴めず困っているので、こちらもアドバイスありましたらぜひおねがいします。

8
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
4