Skip to content

NGルールで絵文字リアクションを拒否した場合、自分のサーバーのカスタム絵文字は常に拒否される #959

@kmycode

Description

@kmycode

バグの再現手順

  1. NGルールで絵文字リアクションの拒否を設定
  2. 絵文字リアクションを拒否するドメインに自分以外を設定
  3. 自分のサーバーのカスタム絵文字を使って絵文字リアクションする

期待する動作

絵文字リアクションが正常に受容される

実際の動作

常に拒否される

詳しい情報

def reaction_match?
recipient = @options[:recipient]
return false if @ng_rule.reaction_allow_follower && (recipient.id == @account.id || (!recipient.local? && !@account.local?) || recipient.following?(@account))
if @options[:reaction_type] == 'emoji_reaction'
enum_match?(:reaction_type, @options[:reaction_type], @ng_rule.reaction_type) &&
text_match?(:emoji_reaction_name, @options[:emoji_reaction_name], @ng_rule.emoji_reaction_name) &&
text_match?(:emoji_reaction_origin_domain, @options[:emoji_reaction_origin_domain], @ng_rule.emoji_reaction_origin_domain)
else
enum_match?(:reaction_type, @options[:reaction_type], @ng_rule.reaction_type)
end
end

ここからtext_match?が呼び出されるが、ここではカスタム絵文字のドメインがnilだった場合、常にtrueを返すようになっている

def text_match?(_reason, text, arr)
return true if arr.blank? || !text.is_a?(String)
detect_keyword?(text, arr)
end

account_match?でやっているような特別な条件分岐をいれるべきである

バグが発生したkmyblueサーバーのドメイン

mstdn.yuicho.net

バグが発生したkmyblueのバージョン

16.1

ブラウザの名前

No response

OS

No response

その他の詳細情報

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions