@@ -155,52 +155,69 @@ async def message_handler(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
155155 "spam_check_passed" : True ,
156156 })
157157 else :
158- await context .bot .restrict_chat_member (
159- chat_id = update .message .chat .id ,
160- user_id = new_member .id ,
161- permissions = ChatPermissions (
162- can_send_messages = False ,
163- can_send_media_messages = False ,
164- can_send_polls = False ,
165- can_send_other_messages = False ,
166- can_add_web_page_previews = False ,
167- can_change_info = False ,
168- can_invite_users = False ,
169- can_pin_messages = False ,
170- ),
171- )
172-
173- random .shuffle (captcha_symbols )
174- i = random .randint (1 , len (captcha_symbols )) - 1
175- keyboard_row = []
176- for k in range (len (captcha_symbols )):
177- d = '0'
178- if k == i :
179- d = '1'
180- keyboard_row .append (InlineKeyboardButton (captcha_symbols [k ], callback_data = d ))
181- reply_markup = InlineKeyboardMarkup ([keyboard_row ])
182- result = await update .message .reply_text (
183- "Hello " + new_member .name + "\n Please select " + captcha_symbols [i ] + " in 60 seconds" ,
184- reply_markup = reply_markup )
185-
186- context .job_queue .run_once (
187- captcha_timeout ,
188- 60 ,
189- data = result .id ,
190- name = str (update .message .chat .id ) + '_' + str (new_member .id ),
191- chat_id = update .message .chat .id ,
192- user_id = new_member .id ,
193- )
194-
195- mongodb_collection .insert_one ({
196- "chat_id" : update .message .chat .id ,
197- "chat_name" : update .message .chat .title ,
158+ if mongodb_collection .find_one ({
198159 "user_id" : new_member .id ,
199- "user_name" : new_member .name ,
200- "premium" : new_member .is_premium ,
201- "welcome_message_id" : update .message .id ,
202- "joined_time" : update .message .date ,
203- })
160+ "$or" : [
161+ {
162+ "bot_check_passed" : False ,
163+ },
164+ {
165+ "spam_check_passed" : False ,
166+ },
167+ ],
168+ }):
169+ await update .message .chat .ban_member (
170+ user_id = update .message .from_user .id ,
171+ revoke_messages = True ,
172+ )
173+ await update .message .delete ()
174+ else :
175+ await context .bot .restrict_chat_member (
176+ chat_id = update .message .chat .id ,
177+ user_id = new_member .id ,
178+ permissions = ChatPermissions (
179+ can_send_messages = False ,
180+ can_send_media_messages = False ,
181+ can_send_polls = False ,
182+ can_send_other_messages = False ,
183+ can_add_web_page_previews = False ,
184+ can_change_info = False ,
185+ can_invite_users = False ,
186+ can_pin_messages = False ,
187+ ),
188+ )
189+
190+ random .shuffle (captcha_symbols )
191+ i = random .randint (1 , len (captcha_symbols )) - 1
192+ keyboard_row = []
193+ for k in range (len (captcha_symbols )):
194+ d = '0'
195+ if k == i :
196+ d = '1'
197+ keyboard_row .append (InlineKeyboardButton (captcha_symbols [k ], callback_data = d ))
198+ reply_markup = InlineKeyboardMarkup ([keyboard_row ])
199+ result = await update .message .reply_text (
200+ "Hello " + new_member .name + "\n Please select " + captcha_symbols [i ] + " in 60 seconds" ,
201+ reply_markup = reply_markup )
202+
203+ context .job_queue .run_once (
204+ captcha_timeout ,
205+ 60 ,
206+ data = result .id ,
207+ name = str (update .message .chat .id ) + '_' + str (new_member .id ),
208+ chat_id = update .message .chat .id ,
209+ user_id = new_member .id ,
210+ )
211+
212+ mongodb_collection .insert_one ({
213+ "chat_id" : update .message .chat .id ,
214+ "chat_name" : update .message .chat .title ,
215+ "user_id" : new_member .id ,
216+ "user_name" : new_member .name ,
217+ "premium" : new_member .is_premium ,
218+ "welcome_message_id" : update .message .id ,
219+ "joined_time" : update .message .date ,
220+ })
204221 elif update .message .left_chat_member :
205222 if update .message .left_chat_member .id == context .bot .id :
206223 mongodb_database ["group" ].update_one ({
0 commit comments