senspace-studio / card

https://joker-frame.vercel.app
1 stars 0 forks source link

botからのメンション(username)修正 #122

Closed kunroku closed 4 months ago

vercel[bot] commented 5 months ago

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
card ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jul 1, 2024 1:28am
joker-frame ✅ Ready (Inspect) Visit Preview 💬 Add feedback Jul 1, 2024 1:28am
Apollo716 commented 5 months ago

@yu23ki14 実装の背景はこちら

yu23ki14 commented 4 months ago

@kunroku ???ではメンションがつかず、当初の目的を達成していないのでメンションがつく方法で実装いただけますか?

kunroku commented 4 months ago

@yu23ki14 アドレスに紐付くアカウントリストを取得した後、usernameがstring型で存在していてかつ"!"で開始しないものがなければという条件、つまりリプライ可能なアカウントがない場合に???となります。("!"で開始していれば無効というのは@Apollo716 さんより指摘していただきました。) 言い換えるとアドレスに紐付くようなリプライ可能なアカウントが存在していれば???にならないので問題ないと考えています。 プログラムが上記の考え通り動いていなければご指摘ください! あと、もしも???がという表示をしない場合、アカウントに紐付かないアドレスからのリクエストはどう示せばよいでしょうか?

yu23ki14 commented 4 months ago

@kunroku

現在の実装が同様array[0]を取ってるということは、配列は[!21555, current_username]みたいになってるということだと思うので、取得したusernameがundefinedの値はスキップして次の値を取得するという実装で良いかと思いました!

これってアカウント名がはいってるユーザー情報が次にあるという可能性があるってことですね。 以下Undefinedになる場合のNeynarからの返却値です。配列にはいってる二つ目のオブジェクトには問題なくusernameがあるのでこちらを取ってもらえると このあたり軽く調査したらわかることなので、丁寧に見ていただけると助かります。

{
  "0xbb1c043ceb7745b286987b4cc8359c5b508f0307": [
    {
      "object": "user",
      "fid": 21555,
      "custody_address": "0xbb1c043ceb7745b286987b4cc8359c5b508f0307",
      "username": "!21555",
      "display_name": "Windy|₿Ξ∞🎩📚🔥",
      "pfp_url": "https://i.imgur.com/ujgbUDr.jpeg",
      "profile": {
        "bio": {
          "text": "Collector 🩸 | Degentlemen #8682"
        }
      },
      "follower_count": 0,
      "following_count": 0,
      "verifications": [],
      "verified_addresses": {
        "eth_addresses": [],
        "sol_addresses": []
      },
      "active_status": "inactive",
      "power_badge": false,
      "viewer_context": {
        "following": false,
        "followed_by": false
      }
    },
    {
      "object": "user",
      "fid": 212556,
      "custody_address": "0x8cf6d2b8af28549a2625a6a52bd012f8f2e95b23",
      "username": "nhagio.eth",
      "display_name": "Windy|₿Ξ∞🎩.⌐◨-◨",
      "pfp_url": "https://imagedelivery.net/BXluQx4ige9GuW0Ia56BHw/d9491cf9-5a98-499e-233e-8b3e130f2b00/original",
      "profile": {
        "bio": {
          "text": "Collector 🩸 | Degentlemen #8682"
        }
      },
      "follower_count": 3369,
      "following_count": 777,
      "verifications": [
        "0xbb1c043ceb7745b286987b4cc8359c5b508f0307",
        "0xfa1dd83c9cda5bf2f626c68177ced85532136789"
      ],
      "verified_addresses": {
        "eth_addresses": [
          "0xbb1c043ceb7745b286987b4cc8359c5b508f0307",
          "0xfa1dd83c9cda5bf2f626c68177ced85532136789"
        ],
        "sol_addresses": [
          "8esC41Pwnxtopjh8QdkaY89J8Dh17T3No653fNgAqtwv"
        ]
      },
      "active_status": "inactive",
      "power_badge": true,
      "viewer_context": {
        "following": false,
        "followed_by": true
      }
    }
  ]
}
kunroku commented 4 months ago

@yu23ki14 コミット内容的には array[0] 決め打ちからの修正をしているつもりなので、ご指摘の点は解消済と認識ております... 申し訳ありませんが、間違いあればご指摘ください。

 -      const account = (await this.neynarService.getUserInfo(address))[0];
 +      const accounts = await this.neynarService.getUserInfo(address);
 +      const account = accounts.find(
 +         (e) => typeof e.username === 'string' && !e.username.startsWith('!'),
 +      );
yu23ki14 commented 4 months ago

そういうことですね、ごめんなさい勘違いでした! あざます