[解決済み] Discord.py 別のファイルからコードを実行するにはどうすればいいですか?
質問
私のDiscordボットのコードを少し整理したいのですが、1つの巨大なメインファイルを持つ代わりに、コマンドを異なるファイルに分割しています。他のファイルからコードを直接インポートできることは知っています。
import [file]
しかし、Discordのコードではうまくいきません。
もし私が次のようなことを試すなら。
test1.py
await ctx.send("successful")
main.py
@client.command()
asnyc def test(ctx):
import test1
いつもエラーが出ます
SyntaxError: 'await' outside function
. が原因なのは分かっているのですが
await
は非同期関数の外にあるのですが、どうすれば直るのかわかりません。もし私が
test1.py
を次のようなものに変更します。
print("successful")
を実行すると、コンソールに正しい応答が表示されます。すでに解決策を調べてみましたが、むしろますます混乱しています。
どのように解決するのですか?
Discordには"extensions"というシステムがあり、これは特にコマンドを異なるファイルに分割するために設計されています。関数の一部だけでなく、関数全体をファイルに入れるようにしてください。そうしないと Python はエラーを出します。以下は、ドキュメントから直接引用した例です。
メインファイルです。
...create bot etc...
bot.load_extension("test") # use name of python file here
...run bot etc...
その他のファイル(この例ではtest.pyと呼びます)。
from discord.ext import commands
@commands.command()
async def hello(ctx):
await ctx.send('Hello {0.display_name}.'.format(ctx.author))
def setup(bot):
bot.add_command(hello)
重要なポイントは (1) Pythonファイルを
setup
関数 (2) 拡張機能を読み込む。
詳しくはこちらをご覧ください。 https://discordpy.readthedocs.io/en/stable/ext/commands/extensions.html https://discordpy.readthedocs.io/en/stable/ext/commands/cogs.html
関連
-
ピロウズ画像色処理の具体的な活用方法
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み] データ型が理解できない
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] 列の値に基づいてDataFrameから行を選択するにはどうすればよいですか?
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] Pythonの辞書からキーを削除するにはどうしたらいいですか?
-
[解決済み] リストからランダムに項目を選択するにはどうすればよいですか?
-
[解決済み] ファイルへの追記はどのように行うのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python カメの描画コマンドとその例
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonショートビデオクローラーチュートリアル
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み] 'int'オブジェクトに'__getitem__'属性がない。
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み】ValueError: pickleプロトコルがサポートされていません。3、python2 pickleはpython3 pickleでダンプしたファイルを読み込むことができない?