chid、dchangeコマンドがスレ立て時に反映されない #1

Open
opened 2023-10-02 10:33:06 +09:00 by stat1 · 1 comment
Collaborator

三男でもあったバグ

三男でもあったバグ
stat1 added the
bug
label 2023-10-02 10:33:06 +09:00
stat1 added this to the delight-v2 project 2023-10-02 10:33:06 +09:00
Contributor

!noid及び!idchangeコマンドをスレ立て時に反映させる修正案を作成しました。

概要

数カ所の修正が必要だったので段階ごとに説明していきます。
大きく分けて、スレ主判別キーの修正、!addコマンドの修正、!noid及び!idchangeのスレ立て時での有効化、となります。
変更差分は
f9af889962 からご確認ください。
各修正に書いてあるファイル名と行数は上記の差分に対応します。L◯◯というのは修正後コードの行数です。
完成版のコードは
f9af889962/test/bbs-main.php
f9af889962/test/extend/commands.php
となります。

コードの令和最新版はこちらのプルリクエストからどうぞ。#24

スレ主判別キーの修正

設計ではおそらくスレ主のフィンガープリントから生成されたスレ主判別キーによってコマンド発火の判定をするようなのですが、これが機能していません。
スレ立て時のスレ主判別キーはdatファイルの名前欄に挿入されているにも関わらず、>>2以降のレスでの判定では>>1のメール欄を参照しているからです。
従ってスレ主判別キーをメール欄に入れるように変更します。また、スレ主判別キーやらワッチョイやら主表示が同じ変数で結合されているのでスレ主判別キーだけを別変数で定義します。

$supervisorIDに初期値として空文字列を代入します。
bbs-main.php L26

$Mではなく$supervisorIDにスレ主判別キーを代入します。また、ついでに桁数を5桁から8桁に変更して主被りの確率を下げます。
※$Mはワッチョイ等の回線情報を扱う変数です。
bbs-main.php L307
bbs-main.php L313

>>1のdatのメール欄にスレ主判別キーを代入します。
bbs-main.php L860-L861
bbs-main.php L962

以降は補足の変更点です。

ID非表示スレでは主表示が出ないように修正します。
bbs-main.php L830

ワッチョイ等の回線情報を名前欄に表示させます。また、本文末尾に追加されていた分は削除します。
bbs-main.php L841-L851
bbs-main.php L874

メール欄にエポック秒が表示されていたのを削除。鍵漏れ等の対策として空欄にします。
TL用には個別にエポック秒を追加します。
bbs-main.php L853-L856
bbs-main.php L985

!addコマンドの修正

!addコマンドにマッチする正規表現の誤りを修正。
commands.php L51

!addコマンドでの>>1変更がブラウザ用datにしか反映されていなかったので専ブラ用datにも変更を反映させます。
それに伴い、過去ログ判定を上部に移動します。
bbs-main.php L326-L344

!noid及び!idchangeのスレ立て時での有効化

delighty v2では基本的にスレ主コマンドは>>1でコマンドがあるかどうかで判定されているようです。なので!addで追加する形をとります。
したがってスレ立て時には>>1が存在しないので発火しない、という挙動になってしまいます。
スレ立て時にも発火するようにする修正は以下のとおりです。
commands.php L60-L68

終わりに

変更箇所が多いので新たなバグの発生の可能性があります。
良かったらテスト環境で試してみてください。また、修正点などがあればご指摘いただきたいです。

!noid及び!idchangeコマンドをスレ立て時に反映させる修正案を作成しました。 ### 概要 数カ所の修正が必要だったので段階ごとに説明していきます。 大きく分けて、スレ主判別キーの修正、!addコマンドの修正、!noid及び!idchangeのスレ立て時での有効化、となります。 変更差分は https://git.3chan.cc/konkon-fox/delightly-v2fork/commit/f9af889962b092c86f9277e92ecb9c4cf6db4692 からご確認ください。 各修正に書いてあるファイル名と行数は上記の差分に対応します。L◯◯というのは修正後コードの行数です。 ~~完成版のコードは https://git.3chan.cc/konkon-fox/delightly-v2fork/src/commit/f9af889962b092c86f9277e92ecb9c4cf6db4692/test/bbs-main.php https://git.3chan.cc/konkon-fox/delightly-v2fork/src/commit/f9af889962b092c86f9277e92ecb9c4cf6db4692/test/extend/commands.php となります。~~ コードの令和最新版はこちらのプルリクエストからどうぞ。https://git.3chan.cc/stat2/delightly-v2fork/pulls/24 ### スレ主判別キーの修正 設計ではおそらくスレ主のフィンガープリントから生成されたスレ主判別キーによってコマンド発火の判定をするようなのですが、これが機能していません。 スレ立て時のスレ主判別キーはdatファイルの名前欄に挿入されているにも関わらず、\>\>2以降のレスでの判定では\>\>1のメール欄を参照しているからです。 従ってスレ主判別キーをメール欄に入れるように変更します。また、スレ主判別キーやらワッチョイやら主表示が同じ変数で結合されているのでスレ主判別キーだけを別変数で定義します。 $supervisorIDに初期値として空文字列を代入します。 bbs-main.php L26 $Mではなく$supervisorIDにスレ主判別キーを代入します。また、ついでに桁数を5桁から8桁に変更して主被りの確率を下げます。 ※$Mはワッチョイ等の回線情報を扱う変数です。 bbs-main.php L307 bbs-main.php L313 \>\>1のdatのメール欄にスレ主判別キーを代入します。 bbs-main.php L860-L861 bbs-main.php L962 以降は補足の変更点です。 ID非表示スレでは主表示が出ないように修正します。 bbs-main.php L830 ワッチョイ等の回線情報を名前欄に表示させます。また、本文末尾に追加されていた分は削除します。 bbs-main.php L841-L851 bbs-main.php L874 メール欄にエポック秒が表示されていたのを削除。鍵漏れ等の対策として空欄にします。 TL用には個別にエポック秒を追加します。 bbs-main.php L853-L856 bbs-main.php L985 ### !addコマンドの修正 !addコマンドにマッチする正規表現の誤りを修正。 commands.php L51 !addコマンドでの\>\>1変更がブラウザ用datにしか反映されていなかったので専ブラ用datにも変更を反映させます。 それに伴い、過去ログ判定を上部に移動します。 bbs-main.php L326-L344 ### !noid及び!idchangeのスレ立て時での有効化 delighty v2では基本的にスレ主コマンドは\>\>1でコマンドがあるかどうかで判定されているようです。なので!addで追加する形をとります。 したがってスレ立て時には\>\>1が存在しないので発火しない、という挙動になってしまいます。 スレ立て時にも発火するようにする修正は以下のとおりです。 commands.php L60-L68 ### 終わりに 変更箇所が多いので新たなバグの発生の可能性があります。 良かったらテスト環境で試してみてください。また、修正点などがあればご指摘いただきたいです。
Sign in to join this conversation.
No description provided.