team-i2021 / nira_bot

にらBOT
MIT License
1 stars 0 forks source link

AutoSSでチャンネルが存在しなかった場合の動作 #45

Closed nattyan-tv closed 1 year ago

nattyan-tv commented 1 year ago

メッセージ(チャンネル)を取得しようとしたところでMissing Acccessが発生する。

  1. 何故Missing Accessになるかがわからない。
  2. メッセージが存在しなかったりした場合に、設定を削除する又はオフにする又はスキップする動作が必要

何故Missing Accessになるかがわからない。

ファイルがまだPull前だから一部ログの行がおかしいところがあるが、結局は「AutoSSでメッセージ取得時にエラーが発生する」→「メッセージが取得できていないのにeditしようとするからUnboundが発生する」と言う流れ。(2へ) メッセージおよびチャンネルは目視で確認できていて、onamiを使用してデータベース上にあるチャンネルIDおよびメッセージIDから手動でメッセージを取得したが、普通に取得・編集が行えた。(サーバーでの権限設定の問題ではない) 付属のインタラクションボタン押下時は通常動作する。(そんな気はしてた) しかし、なぜかこのtasks.loop内ではメッセージ取得(チャンネル取得)が行えない。 →そのうちどうせ原因が思い浮かぶ(そしてそれは大抵が初歩的なミス)だろうからそれまで色々調べる

メッセージが存在しなかったりした場合に、設定を削除する又はオフにする又はスキップする動作が必要

これに限らず、データベース関わる系は大半がそうだというのは言うまでもないだろう。 とりあえず、本番環境ではメッセージ取得エラー時はエラー表示するのをスキップするようにした。

現状

本番環境では、このエラーに気づけなかったせいで、同一エラーによるログでログファイルが秒で肥大化するので、そこだけログをなくした。 それ以外は特になし。

参考にならなそうなログ

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
nattyan-tv commented 1 year ago

なきしもあらずな進展

  1. もしやと思ったらもしやだった。これでログ圧迫がされなくなる...(小声)(ねぇ前もこんなことあった)

  2. 2だけをやれば解決(ryした。

nattyan-tv commented 1 year ago

暫定的完了 他のCogでもこんなのたくさんあるだろうけど、とりあえずこのIssueの目的は果たされた...ので消臭