@@ -129,6 +129,8 @@ def parse_message(self, message: MessageMixin,
129129 else :
130130 self .value = Entity (self .default , is_fallback_default = True )
131131
132+ self ._validate_prefixes_suffixes (message )
133+
132134 if self .value :
133135 entity = self .value
134136 if isinstance (entity .value , list ):
@@ -152,6 +154,35 @@ def parse_message(self, message: MessageMixin,
152154 else :
153155 self .reset ()
154156
157+ def _validate_message_with_affixes (self ,
158+ affixes : tuple [str ],
159+ message : MessageMixin ,
160+ comparator : callable ):
161+ entity = self .value
162+ if not (common_strings := set (affixes ).intersection (message .content )):
163+ entity .value = self .default
164+ return
165+ for string in common_strings :
166+ if not comparator (message .content .index (string ), entity .index_in_message ):
167+ entity .value = self .default
168+
169+ def _validate_prefixes_suffixes (self , message : MessageMixin ):
170+ """
171+ Check 'prefixes' and 'suffixes' for Entity values to make sure
172+ that they comply
173+ :return:
174+ """
175+ if self .prefixes :
176+ self ._validate_message_with_affixes (
177+ self .prefixes ,
178+ message ,
179+ lambda affix_index , value_index : affix_index < value_index )
180+ if self .suffixes :
181+ self ._validate_message_with_affixes (
182+ self .suffixes ,
183+ message ,
184+ lambda affix_index , value_index : affix_index > value_index )
185+
155186 def _identify_value (self , message : MessageMixin ,
156187 start_index : int = 0 ) -> Union [None , Entity ]:
157188 """
0 commit comments