@@ -91,9 +91,9 @@ async def new_chat(client: "Client", message: "types.Message"):
9191
9292 group_id = message .chat .id
9393 message_id = bot_message .id
94- # redis data structure: name: group_id,chat_id k-v: created:timestamp, message_id:id, captcha:chars
94+ # redis data structure: name: group_id,chat_id k-v: created:timestamp, message_id:id, captcha:chars, status:deleted
9595 name = f"{ group_id } ,{ from_user_id } "
96- mapping = {"created" : str (time .time ()), "message_id" : str (message_id ), "captcha" : chars }
96+ mapping = {"created" : str (time .time ()), "message_id" : str (message_id ), "captcha" : chars , "deleted" : "false" }
9797 await redis_client .hset (name , mapping = mapping )
9898 # deleting service message and ignoring error
9999 with contextlib .suppress (Exception ):
@@ -208,26 +208,28 @@ async def un_restrict_user(gid, uid):
208208
209209
210210async def invalid_queue (gid_uid ):
211- await redis_client .delete (gid_uid )
211+ # for debugging purpose, just set deleted to true
212+ # await redis_client.delete(gid_uid)
213+ await redis_client .hset (gid_uid , mapping = {"deleted" : "true" })
212214
213215
214216async def check_idle_verification ():
215217 items = await redis_client .keys ("*" )
216- logging .info ("items to be checked: %s" , items )
217218 value = None
218219 for gid_uid in items :
219220 try :
220221 value = await redis_client .hgetall (gid_uid )
222+ if value .get ("deleted" ) == "true" :
223+ continue
221224 group_id , from_user_id = [int (i ) for i in gid_uid .split ("," )]
222225 created_at = float (value .get ("created" , 0 ))
223226 message_id = int (value .get ("message_id" , 0 ))
224227 if time .time () - created_at > IDLE_SECONDS :
225- logging .info ("User %s in group %s verification timeout" , from_user_id , group_id )
228+ logging .info ("User %s group %s timeout, message id %s " , from_user_id , group_id , message_id )
226229 # delete captcha, ban user, and remove from redis
227230 await ban_user (group_id , from_user_id )
228231 await delete_captcha (group_id , message_id )
229232 await invalid_queue (gid_uid )
230- await redis_client .delete (gid_uid )
231233 else :
232234 logging .info ("User %s in group %s still in verification queue" , from_user_id , group_id )
233235 except Exception as e :
@@ -238,9 +240,9 @@ async def delete_captcha(group_id, message_id):
238240 try :
239241 msg = await app .get_messages (group_id , message_id )
240242 await msg .delete ()
241- logging .info ("Deleted captcha message %s" , msg )
243+ logging .info ("Deleted captcha message %s in group %s " , message_id , group_id )
242244 except Exception as e :
243- logging .error ("Failed to delete for message %s in chat %s: %s" , message_id , group_id , e )
245+ logging .error ("Failed to delete message %s in group %s: %s" , message_id , group_id , e )
244246
245247
246248def keyword_hit (keyword : str , message : str | None ) -> bool :
0 commit comments