Magren

Magren

Idealist & Garbage maker 🛸
twitter
jike

Yuan-bot🤖について

oicqは、Node.js を使用して QQ(Android)プロトコルを実装し、QQ 内でよく使用される機能操作を提供します。
yuan-botは、oicqを基にして TS で書かれ、MongoDB をデータベースとして使用する QQ ボットです。現在、プロジェクトは創設されたばかりで、Q グループのエッセンスメッセージにのみ対応しており、今後の内容は徐々に充実していきます。

GitHub アドレス:yuan-bot

この記事は、このプロジェクトの非公式な開発日誌の経過記録です。

背景#

私の QQ には、私が高校や大学の時に剣三をプレイしていたゲームグループがあります。
メンバー全員が上手に遊び、話すことができます。それぞれの言葉を記憶するために、私たちは QQ のエッセンスメッセージ機能を活用し、すべての おしゃべり クラシックな名言をこのエッセンスメッセージリストに飾りました。
この時点で、エッセンスメッセージの内容はもはやエッセンスではなく、私たちは黙ってそれを「糟粕(ざお)」と呼んでいます
message.png

私たちがリストに飾ったメンバーは、苦情を言っています(もちろん、楽しんでいる人もいますが、私は言いません、みんながわかっています)。
しかし、道は高く、悪は高く、卑劣なグループ管理者はメンバーの苦情を無視し、さらには 8 周年記念日に糟粕の周辺商品を発売し、糟粕の数が最も多いメンバーにトロフィーを授与するなど、糟粕文化を推進しています。メンバーの心は乱れ、反対の声が次第に消え、みんなが笑い者になっています。

ここまで、糟粕文化はグループの設立以来のハイライトに達しました。
bag.jpg
medal.jpg

糟粕文化が広まるにつれ、糟粕の数も増え続け、グループ管理者はいくつかの問題に気付きました。

  • 糟粕の数が最大で 1000 に達し、追加するために一部の糟粕メッセージを削除する必要があります。これにより、一部のグループの歴史的な糟粕が失われます。
  • このような膨大な数の中で、QQ グループのエッセンスメッセージは統計や時間での表示などの機能がなく、毎回手動で統計する必要があります。
  • ......

Yuan-Bot は、上記の問題を解決するために生まれました。

起動#

git clone https://github.com/Magren0321/yuan-bot.git

pnpm install

pnpm run serve

過程#

フロントエンドエンジニアとして、技術の選択は自然と Node.js になりました。oicqというライブラリを見つけました。これは Node.js をベースにした Android QQ で、機能が比較的充実していると感じました。具体的な使用方法は、私の説明よりもApi referenceを参照してください。

エッセンスデータ#

oicq 自体がグループオブジェクトにエッセンスデータをカプセル化していないため(おそらくまだこの機能を実装していないオープンソースのライブラリがあるかもしれません)、自分で手を動かす必要がありました。
Fiddler で PC 版 QQ をキャプチャし、エッセンスデータの API をキャプチャしました。そして、oicq が提供するログイン API を使用して Cookie を取得し、リクエストヘッダーに追加してエッセンスメッセージのデータを取得しました。
ついでに oicq に PR を提出しました(また PR を水増ししました)

そして、さらに問題が発生しました。グループに新しいエッセンスメッセージが追加された場合、oicq ではグループの tips をリッスンできないことに気付きました。昨年 8 月にすでに誰かが問題を提起していますが、まだ解決されていないようです。
元々の計画は、エッセンスメッセージが追加された後、サーバーのデータベースにリアルタイムで新しいエッセンスメッセージを保存することでしたが、現在は別の方法に変更し、定期的なタイマーに変更しました。一定の時間ごとにデータをリクエストし、最新メッセージのタイムスタンプを記録し、古いコンテンツをフィルタリングするようにしました。
この方法は私にとっては愚かな方法だと思いますが、現状ではこの機能を実現する他の方法が思いつきません。

コマンド#

これは比較的簡単に解決できます。指定されたグループのメッセージをリッスンし、クラスをラップして、文字列をクラスのキーとし、対応するメソッドを値として、メッセージを受け取ったらキーを渡して対応するメソッドを実行するだけです。
image.jpg

大まかな実装はこんな感じで、特に目立つ点はありません🤡

最後(まだ最後ではないかもしれません?#

yuan-bot の機能は今後も充実し、改善される予定です(ただし、現在は仕事があるため、進捗は遅くなるかもしれません)
🙏oicqが提供するインターフェースとドキュメントに感謝します。
🛸Power by Magren and made with love

To Be Continued.

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。