MCPcopy Create free account
hub / github.com/AAA3A-AAA3A/AAA3A-cogs / get_join_method

Method get_join_method

security/modules/logging.py:1345–1400  ·  view source on GitHub ↗
(self, member: discord.Member)

Source from the content-addressed store, hash-verified

1343 for invite in invites
1344 }
1345
1346 async def get_join_method(self, member: discord.Member) -> str | None:
1347 view_audit_logs, manage_guild = (
1348 member.guild.me.guild_permissions.view_audit_log,
1349 member.guild.me.guild_permissions.manage_guild,
1350 )
1351 if member.bot:
1352 if view_audit_logs:
1353 async for entry in member.guild.audit_logs(
1354 limit=3,
1355 action=discord.AuditLogAction.bot_add,
1356 ):
1357 if entry.target.id == member.id:
1358 return _("- Added by {user.mention} (`{user}`) - `{user.id}`").format(
1359 user=entry.user,
1360 )
1361 return None
1362 if "VANITY_URL" in member.guild.features and member.guild.vanity_url is not None:
1363 possible_invite = _("- {vanity_url} (Vanity URL)").format(
1364 vanity_url=member.guild.vanity_url,
1365 )
1366 else:
1367 possible_invite = None
1368 if self.invites_cache[member.guild] and manage_guild:
1369 invites = self.invites_cache[member.guild].copy()
1370 guild_invites = await member.guild.invites()
1371 for invite in guild_invites:
1372 if invite.code in invites:
1373 if invite.uses is None or invites[invite.code]["uses"] is None:
1374 continue
1375 if invite.uses > invites[invite.code]["uses"]:
1376 possible_invite = _(
1377 "- https://discord.gg/{invite.code}\n- Invited by {inviter.mention} (`{inviter}`) - `{inviter.id}`",
1378 ).format(invite=invite, inviter=invite.inviter)
1379 break
1380 if possible_invite is None:
1381 for code, data in invites.items():
1382 try:
1383 invite = await self.cog.bot.fetch_invite(code)
1384 except discord.NotFound:
1385 if data["max_uses"] is not None and (data["max_uses"] - data["uses"]) == 1:
1386 possible_invite = _(
1387 "- https://discord.gg/{code}\n- Invited by {inviter.mention} (`{inviter}`) - `{inviter.id}`",
1388 ).format(code=code, inviter=data["inviter"])
1389 break
1390 await self.cache_invites() # Refresh cache.
1391 if possible_invite is None and view_audit_logs:
1392 async for entry in member.guild.audit_logs(
1393 limit=1,
1394 action=discord.AuditLogAction.invite_create,
1395 ):
1396 if entry.target.id == member.id:
1397 possible_invite = _(
1398 "- https://discord.gg/{entry.target.code}\n- Invited by {entry.user.mention} (`{entry.user}`) - `{entry.user.id}`",
1399 ).format(entry=entry)
1400 break
1401 return possible_invite
1402

Callers 1

on_member_joinMethod · 0.95

Calls 4

cache_invitesMethod · 0.95
copyMethod · 0.80
_Function · 0.50
itemsMethod · 0.45

Tested by

no test coverage detected