Comments (6)
これは Cinch のバグと言っていいんじゃないかと思います。なんとか直して PR として送れれば…
from rgrb.
処理は https://github.com/cinchrb/cinch/blob/9b66b216ad74471e059974c3c5fc121e2c61d7c2/lib/cinch/target.rb#L46-L59 のあたりで行われているようです。
from rgrb.
もう一つ異常動作がありました。
16:16:45 (koi-chan) .rg asw00
16:16:45 (rgrb_cinch) rg[koi-chan]<asw00>: 殺人事件。主人公は被害者(またはその家族など)に同情し、事件の解決に乗り出す。被害者は信心深い庭師。加害者は一度死んだはずの。主人公と敵対している人物。殺害の動機はなんらかの野望(権力を握る、財産を得る)ために邪魔なため。ダークネスに命じて殺害。事件の真相を突き止め、犯人[CUT]
16:16:45 (rgrb_cinch) ... ですわ☆
IRCでは以下のような応答がありましたが、コンソールにIRCへ流す文字列を流すようにしたところ、以下のような出力をしていることが分かりました。
"rg[koi-chan]<asw00>: 殺人事件。主人公は被害者(またはその家族など)に同情し、事件の解決に乗り出す。被害者は信心深い庭師。加害者は一度死んだはずの。主人公と敵対している人物。殺害の動機はなんらかの野望(権力を握る、財産を得る)ために邪魔なため。ダークネスに命じて殺害。事件の真相を突き止め、犯人を捕らえれば解決。 ですわ☆"
上で提示されたcinchのコードから、空白の部分できるようになっていることが分かりますが、日本語の場合は単語の間に空白文字列が挟まれることは基本的にないため、空白文字列が現れる前の何文字かが失われたようです。
from rgrb.
日本語で空白が入らないことは関係がないようです。原因は
- https://github.com/cinchrb/cinch/blob/9b66b216ad74471e059974c3c5fc121e2c61d7c2/lib/cinch/target.rb#L49 (最大バイト数以下で最後にスペースがある場所を求める)
- https://github.com/cinchrb/cinch/blob/9b66b216ad74471e059974c3c5fc121e2c61d7c2/lib/cinch/target.rb#L51 (求めたバイト数で行を切断する)
の 2 つで、バイト数で計算すべきところを文字数で計算していることです(String#rindex、String#slice! とも文字のインデックスを指定する関数だから)。文字ごとに累積バイト数を求め、最大バイト数以下の最大値になるところで切ってあげれば、文字のバイト数に関係なく適切に分けることができます。
from rgrb.
Cinch に PR を送っています (cinchrb/cinch#189)。
from rgrb.
Dominik Honnef さん (@dominikh) に直していただき、無事マージされました。Cinch の次のバージョンから正常に切断されるようになると思います。
from rgrb.
Related Issues (20)
- bcdice: 対応しているゲームの一覧を出力する HOT 5
- bcdice: DiceBot が読み込まれない
- mailcatcher は Gemfile に記述することが非推奨とされている
- Jihou: 時報メッセージに任意の文章を指定できるようにする
- プラグインから設定IDを取得できるようにする HOT 2
- プラグイン構成要素別の、基底クラス的に使うモジュールを作成する HOT 2
- DiceRoll: テスト「出目に偏りがない」で失敗する確率を減らす
- Discord: DM でコマンドを送信されるとエラーが発生する
- Discord: プラグインからのログに、プラグインのクラス名が出力されない HOT 1
- ServerConnectionReport::Test: 送信したメールに、強制的にテストであることを追加する
- テストをパスさせるために、本体では無駄な行を追加した HOT 1
- 基底モジュールの名前空間・ファイルパスを変更する HOT 1
- Ctcp: 入力・出力をログに残す
- config/rgrb.yaml: Discordの設定のキーの誤り HOT 2
- rubocop によるコーディング規約に合致しているかを確認する HOT 4
- Bcdice: BCDice のバージョンを出力できるようにする HOT 4
- Trpg::Detatoko: 反応条件が .bcdice コマンドと競合している HOT 1
- PluginBase: テストコードのファイル名変更によりテストが自動的に実行されない HOT 2
- CI基盤をGitHub Actionsに移行する
- Ruby 2.6以下のサポートを落とす HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rgrb.