Skip to content

Commit 16c9c1c

Browse files
committed
Apply guild and account age into ticket checks
1 parent ec5e656 commit 16c9c1c

File tree

1 file changed

+30
-1
lines changed

1 file changed

+30
-1
lines changed

bot/libs/tickets/views.py

+30-1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,18 @@ async def delete_response(self, interaction: discord.Interaction):
165165

166166
self.stop()
167167

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+
168180
@discord.ui.button(
169181
label="Checklist",
170182
style=discord.ButtonStyle.primary,
@@ -231,14 +243,31 @@ async def confirm(
231243

232244
applied_tags = [k for k, v in tags.items() if v is True]
233245

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)
235248

236249
if not guild_settings:
237250
await interaction.response.send_message(
238251
"Unable to find guild settings", ephemeral=True
239252
)
240253
return
241254

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+
242271
if not status.title.is_set() or not status.tags.is_set():
243272
dict_status = {"title": status.title, "tags": status.tags}
244273
formatted_status = "\n".join(

0 commit comments

Comments
 (0)