Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

提出物の最終コメントが5日経過したことを知らせる通知のメンション部分が空になってしまうバグを修正 #8218

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

hagiya0121
Copy link
Contributor

@hagiya0121 hagiya0121 commented Nov 26, 2024

Issue

概要

提出物の担当をしてるメンターに送られる、提出物の最終コメントが5日経過したことを知らせる通知があります。
通知のメンション部分には担当しているメンターの名前が入るはずですが、それが空になってしまうバグを修正しました。
※issueだと3日経過なのですが、その変更のPRはまだマージされてないです。

原因

Discord上でメンションをするためにDiscordユーザーIDが必要なのですが、Usersテーブルのlogin_nameとDiscordのユーザー名が一致しない場合にDiscordのユーザーIDを取得できず、メンションが空になっていました。

対処

login_nameだとDiscord上の名前と必ずしも一致しないので使うのをやめてDiscordProfilsテーブルにあるaccount_nameを使うことにしました。

変更確認方法

事前準備

環境変数としてDiscordのサーバーIDウェブフックURLDiscord Botトークンが必要です。

  1. 自分のDiscordサーバーを準備
  2. 作ったサーバーのIDを取得
  3. Discordと連携するためにウェブフックURLを用意します
  4. Discord Botの作成とトークンの取得
    • Discordボットアプリケーションのトークンを取得する方法
    • 参考サイトには書いてないのですが、Botを作成した後にBotのServer Members Intentという項目をONにしてください。これをしないとDiscordrb::Errors::NoPermission in Scheduler::Daily::NotifyProductReviewNotCompletedController#showというエラーが出てしまいます。

717196dc603f82dbb3e934a5657595d29940779ec26806928d36acd28b380671

動作確認

  1. bug/discord-notification-empty-mentionをローカルに取り込む

    1. git fetch origin pull/8218/head:bug/discord-notification-empty-mention
    2. git checkout bug/discord-notification-empty-mention
  2. 環境変数を含めてローカルサーバーを立ち上げる
    DISCORD_GUILD_ID=<サーバーID> DISCORD_MENTOR_WEBHOOK_URL=<ウェブフックURL> DISCORD_BOT_TOKEN=<Discord Botトークン> TOKEN=token foreman start -f Procfile.dev

  3. komagata(メンター)でログイン

  4. 提出物のページにアクセスして担当するを押す

  5. kensyu(提出した人)でログイン

  6. 提出物のページにアクセスしてコメントする

  7. Discord 通知イベントを発生させるために下記を実行して DB を更新する

    1. rails c を実行
    2. 下記を実行する
    Comment.where(commentable_type: 'Product').find_each do |product_comment|
      product_comment.created_at = Time.now - 5.days
      product_comment.save
    end
  8. 自分のDiscordユーザー名を登録する

    1. rails c を実行
    2. 下記を実行する
    user = User.find_by(name: 'Komagata Masaki')
    user.discord_profile.account_name = '<自分のDiscordユーザー名>'
    user.save
  9. http://localhost:3000/scheduler/daily/notify_product_review_not_completed?token=token&webhook_url=<ウェブフックURL>にアクセスしてDiscordに自分がメンションされた通知が送られることを確認

Screenshot

変更前

image

変更後

image

@hagiya0121 hagiya0121 self-assigned this Nov 26, 2024
@hagiya0121
Copy link
Contributor Author

@Judeeeee
お疲れ様です。
こちらのPRのレビューをお願いしたいです🙏
ご都合が悪いときは遠慮なくおっしゃってください🙇

@hagiya0121 hagiya0121 requested a review from Judeeeee November 26, 2024 07:44
@hagiya0121 hagiya0121 marked this pull request as ready for review November 26, 2024 07:47
@hagiya0121 hagiya0121 changed the title 提出物の最終コメントが3日経過したことを知らせる通知のメンション部分が空になってしまうバグを修正 提出物の最終コメントが5日経過したことを知らせる通知のメンション部分が空になってしまうバグを修正 Nov 26, 2024
@Judeeeee
Copy link
Contributor

@hagiya0121

お疲れ様です!依頼いただきありがとうございます〜!
レビューの返信が遅くなってしまいそうなので、他の方に依頼いただけると幸いです🙇
折角の機械なので、引き受けたかったのですが申し訳ないです💦
お手数ですがよろしくお願いいたします〜

@hagiya0121
Copy link
Contributor Author

@Judeeeee
分かりました。お忙しいなかすみません🙏

@hagiya0121
Copy link
Contributor Author

@ai-24
お疲れ様です。
こちらのPRのレビューをお願いしたいです🙏
ご都合が悪いときは遠慮なくおっしゃってください🙇

@hagiya0121 hagiya0121 requested review from ai-24 and removed request for Judeeeee November 27, 2024 01:01
@ai-24
Copy link
Contributor

ai-24 commented Nov 27, 2024

@hagiya0121 さん
お疲れ様です!
レビュー依頼ありがとうございます😊
こちらお急ぎでしょうか?
12月に引越しを予定しているのと仕事もしている関係で、もしかすると1〜2週間ほどお時間いただいてしまうかもしれないです😵
もしhagiya0121さんがそれでも問題ないようでしたら、レビューさせていただきます!
私の方は問題ありませんので、お返事お待ちしております🙇‍♀️

@hagiya0121
Copy link
Contributor Author

@ai-24
急ぎではないのでいつでも大丈夫です。
ぜひお願いします🙇

Copy link
Contributor

@ai-24 ai-24 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hagiya0121 さん
お疲れ様です!
大変お待たせいたしました🙇‍♀️
変更確認方法、詳しく教えて頂きありがとうございました🙏
おかげでスムーズに見させていただけました!
しっかりメンションも飛んでいるので問題ないかと思います。
私からはApproveさせていただきます〜

@hagiya0121
Copy link
Contributor Author

@ai-24
お忙しいなかレビューありがとうございます🙇

@hagiya0121
Copy link
Contributor Author

@komagata
メンバーのレビュが完了したので確認お願いします🙇

@komagata
Copy link
Member

@okuramasafumi こちらレビューお願い致します〜

Copy link
Contributor

@okuramasafumi okuramasafumi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discord連携されていないケースで、product_checker_namenilになることがありそうです。

target_member = guild_members.select { |member| member['user']['username'] == member_name }

member_namenilでも問題はなさそうですが、念のため書いておきます(最初に問題ではと思ったけど、調べたら大丈夫そうだった、というお話)。

お疲れ様でした!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants