Closed smngs closed 1 year ago
# root/src/config.py
#
# 環境変数
#
import os
DISCORD_API_KEY = os.environ.get("DISCORD_API_KEY")
DISCORD_SERVER_KEY = os.environ.get("DISCORD_SERVER_KEY")
/module
で環境変数を読み込む処理が冗長で嫌なのでconfig.py
を定義してこれをimportしたい
同じディレクトリの場合(app.py
)
from config import DISCORD_API_KEY, DISCORD_SERVER_KEY
/module
直下の場合
from ..config import DISCORD_SERVER_KEY
データベースを作る前の段階では、これと同様な感じでやってあげると良いね。
# root/src/config.py # # 環境変数 # import os DISCORD_API_KEY = os.environ.get("DISCORD_API_KEY") DISCORD_SERVER_KEY = os.environ.get("DISCORD_SERVER_KEY")
ImportError
が発生するapp | Traceback (most recent call last):
app | File "/usr/local/lib/python3.10/site-packages/discord/ext/commands/bot.py", line 934, in _load_from_module_spec
app | spec.loader.exec_module(lib) # type: ignore
app | File "<frozen importlib._bootstrap_external>", line 883, in exec_module
app | File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
app | File "/root/src/modules/hello.py", line 6, in <module>
app | from ..config import DISCORD_SERVER_KEY
app | ImportError: attempted relative import beyond top-level package
https://github.com/smngs/da-bot/blob/d4c03463456c99ea6900a87686b100138b3c4dce/app.py#L25
./config.py
をルートディレクトリに置いたまま import できた
app.py
で await bot.load_extension(cogs)
した時点で,modules
直下のモジュール群はルートに存在することになるらしい?app.py, modules/*.py
両方において,以下で import 可能from config import DISCORD_SERVER_KEY
issue
変更の概要
app.py
にまとめていたsend_hoge
コマンドたちをmodule
直下にそれぞれ分割変更の理由(なぜこの変更をするのか)
global
変数を使わないようにするglobal
で持っていたqueue, voice_client...
といった変数を(適当に)クラス変数として定義し直したその他
既知の問題
on_message
でのNone
チェックを排除AttributeError
が発生している