UnboundLocalError: local variable 'message' referenced before assignment
2022-12-21 22:32:52,232$server_status.py$924$status_loop_error$ERROR:local variable 'message' referenced before assignment
Traceback (most recent call last):
File "(NIRA_PATH)/cogs/server_status.py", line 902, in check_status_pin_loop
channel = await self.bot.fetch_channel(CHANNEL)
File "(HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/client.py", line 1726, in fetch_channel
data = await self.http.get_channel(channel_id)
File "(HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/http.py", line 368, in request
raise Forbidden(response, data)
nextcord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "(HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/ext/tasks/__init__.py", line 156, in _loop
await self.coro(*args, **kwargs)
File "(NIRA_PATH)/cogs/server_status.py", line 919, in check_status_pin_loop
except Exception as err:
UnboundLocalError: local variable 'message' referenced before assignment
2022-12-21 22:32:52,239$base_events.py$1729$default_exception_handler$ERROR:Task exception was never retrieved
future: <Task cancelling name='Task-3872216' coro=<Loop._loop() done, defined at (HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/ext/tasks/__init__.py:139> exception=UnboundLocalError("local variable 'message' referenced before assignment")>
Traceback (most recent call last):
File "(NIRA_PATH)/cogs/server_status.py", line 902, in check_status_pin_loop
channel = await self.bot.fetch_channel(CHANNEL)
File "(HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/client.py", line 1726, in fetch_channel
data = await self.http.get_channel(channel_id)
File "(HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/http.py", line 368, in request
raise Forbidden(response, data)
nextcord.errors.Forbidden: 403 Forbidden (error code: 50001): Missing Access
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "(HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/ext/tasks/__init__.py", line 185, in _loop
raise exc
File "(HOME_PATH)/.local/lib/python3.10/site-packages/nextcord/ext/tasks/__init__.py", line 156, in _loop
await self.coro(*args, **kwargs)
File "(NIRA_PATH)/cogs/server_status.py", line 919, in check_status_pin_loop
except Exception as err:
UnboundLocalError: local variable 'message' referenced before assignment
メッセージ(チャンネル)を取得しようとしたところで
Missing Acccess
が発生する。何故Missing Accessになるかがわからない。
ファイルがまだPull前だから一部ログの行がおかしいところがあるが、結局は「AutoSSでメッセージ取得時にエラーが発生する」→「メッセージが取得できていないのにeditしようとするからUnboundが発生する」と言う流れ。(2へ) メッセージおよびチャンネルは目視で確認できていて、
onami
を使用してデータベース上にあるチャンネルIDおよびメッセージIDから手動でメッセージを取得したが、普通に取得・編集が行えた。(サーバーでの権限設定の問題ではない) 付属のインタラクションボタン押下時は通常動作する。(そんな気はしてた) しかし、なぜかこのtasks.loop内ではメッセージ取得(チャンネル取得)が行えない。 →そのうちどうせ原因が思い浮かぶ(そしてそれは大抵が初歩的なミス)だろうからそれまで色々調べるメッセージが存在しなかったりした場合に、設定を削除する又はオフにする又はスキップする動作が必要
これに限らず、データベース関わる系は大半がそうだというのは言うまでもないだろう。 とりあえず、本番環境ではメッセージ取得エラー時はエラー表示するのをスキップするようにした。
現状
本番環境では、このエラーに気づけなかったせいで、同一エラーによるログでログファイルが秒で肥大化するので、そこだけログをなくした。 それ以外は特になし。
参考にならなそうなログ