File tree Expand file tree Collapse file tree
bot/exts/filtering/_filter_lists Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -70,13 +70,23 @@ async def actions_for(
7070 if not image_hashes :
7171 return None , [], {}
7272
73- triggers = await self [ListType .DENY ].filter_list_result (ctx .replace (content = image_hashes ))
73+ trigger_ctx = ctx .replace (content = image_hashes )
74+ triggers = await self [ListType .DENY ].filter_list_result (trigger_ctx )
7475 if not triggers :
7576 return None , [], {ListType .DENY : triggers }
7677
7778 actions = self [ListType .DENY ].merge_actions (triggers )
78- messages = [
79- f"{ filter_ .id } (`{ filter_ .content } `) - { filter_ .description or '*No description*' } "
80- for filter_ in triggers
81- ]
79+ messages = []
80+ for filter_ in triggers :
81+ distance = self ._closest_distance (filter_ , image_hashes )
82+ messages .append (
83+ f"{ filter_ .id } (`{ filter_ .content } ` distance `{ distance } `)"
84+ f" - { filter_ .description or '*No description*' } "
85+ )
8286 return actions , messages , {ListType .DENY : triggers }
87+
88+ @staticmethod
89+ def _closest_distance (filter_ : Filter , image_hashes : list [int ]) -> int :
90+ """Return the closest Hamming distance between a filter hash and any uploaded image hash."""
91+ candidate_hash = int (filter_ .content , 16 )
92+ return min (int .bit_count (image_hash ^ candidate_hash ) for image_hash in image_hashes )
You can’t perform that action at this time.
0 commit comments