@@ -165,6 +165,18 @@ async def delete_response(self, interaction: discord.Interaction):
165
165
166
166
self .stop ()
167
167
168
+ async def get_or_fetch_member (self , member_id : int ) -> Optional [discord .Member ]:
169
+ member = self .guild .get_member (member_id )
170
+ if member is not None :
171
+ return member
172
+
173
+ members = await self .guild .query_members (
174
+ limit = 1 , user_ids = [member_id ], cache = True
175
+ )
176
+ if not members :
177
+ return None
178
+ return members [0 ]
179
+
168
180
@discord .ui .button (
169
181
label = "Checklist" ,
170
182
style = discord .ButtonStyle .primary ,
@@ -231,14 +243,31 @@ async def confirm(
231
243
232
244
applied_tags = [k for k , v in tags .items () if v is True ]
233
245
234
- guild_settings = await self .config_cog .get_partial_guild_settings (self .guild .id )
246
+ guild_settings = await self .config_cog .get_guild_settings (self .guild .id )
247
+ potential_member = await self .get_or_fetch_member (author .id )
235
248
236
249
if not guild_settings :
237
250
await interaction .response .send_message (
238
251
"Unable to find guild settings" , ephemeral = True
239
252
)
240
253
return
241
254
255
+ if (self .guild .created_at - interaction .created_at ) < guild_settings .guild_age :
256
+ await interaction .response .send_message (
257
+ "The guild is too young in order to utilize Rodhaj." , ephemeral = True
258
+ )
259
+ return
260
+ elif (
261
+ potential_member
262
+ ): # Since we are checking join times, if we don't have the proper member, we can only skip it.
263
+ joined_at = potential_member .joined_at or discord .utils .utcnow ()
264
+ if (joined_at - interaction .created_at ) < guild_settings .account_age :
265
+ await interaction .response .send_message (
266
+ "This account joined the server too soon in order to utilize Rodhaj." ,
267
+ ephemeral = True ,
268
+ )
269
+ return
270
+
242
271
if not status .title .is_set () or not status .tags .is_set ():
243
272
dict_status = {"title" : status .title , "tags" : status .tags }
244
273
formatted_status = "\n " .join (
0 commit comments