mirror of
https://github.com/brandons209/Red-bot-Cogs.git
synced 2024-06-23 08:30:33 +12:00
add in optiont to kick new accounts
This commit is contained in:
parent
ef3868d231
commit
773548dbc2
|
@ -66,6 +66,7 @@ class MoreAdmin(commands.Cog):
|
||||||
"user_count_channel": None,
|
"user_count_channel": None,
|
||||||
"sus_user_channel": None,
|
"sus_user_channel": None,
|
||||||
"sus_user_threshold": None,
|
"sus_user_threshold": None,
|
||||||
|
"sus_user_kick_threshold": None,
|
||||||
"ignore_bot_commands": False,
|
"ignore_bot_commands": False,
|
||||||
"last_msg_num": 5,
|
"last_msg_num": 5,
|
||||||
"prefixes": [],
|
"prefixes": [],
|
||||||
|
@ -311,6 +312,20 @@ class MoreAdmin(commands.Cog):
|
||||||
await self.config.guild(ctx.guild).sus_user_threshold.set(int(threshold.total_seconds()))
|
await self.config.guild(ctx.guild).sus_user_threshold.set(int(threshold.total_seconds()))
|
||||||
await ctx.tick()
|
await ctx.tick()
|
||||||
|
|
||||||
|
@adminset.command(name="sus-kick")
|
||||||
|
@checks.bot_has_permissions(kick_members=True)
|
||||||
|
async def adminset_sus_kick(self, ctx, *, threshold: str):
|
||||||
|
"""
|
||||||
|
Set threshold for kicking new accounts with DM
|
||||||
|
"""
|
||||||
|
threshold = parse_timedelta(threshold)
|
||||||
|
if not threshold:
|
||||||
|
await ctx.send("Invalid threshold!")
|
||||||
|
return
|
||||||
|
|
||||||
|
await self.config.guild(ctx.guild).sus_user_kick_threshold.set(int(threshold.total_seconds()))
|
||||||
|
await ctx.tick()
|
||||||
|
|
||||||
@adminset.command(name="addable")
|
@adminset.command(name="addable")
|
||||||
async def adminset_addable(self, ctx, role: discord.Role, *, role_list: str = None):
|
async def adminset_addable(self, ctx, role: discord.Role, *, role_list: str = None):
|
||||||
"""
|
"""
|
||||||
|
@ -1142,36 +1157,103 @@ class MoreAdmin(commands.Cog):
|
||||||
|
|
||||||
@commands.Cog.listener()
|
@commands.Cog.listener()
|
||||||
async def on_member_join(self, member):
|
async def on_member_join(self, member):
|
||||||
if await self.bot.cog_disabled_in_guild(self, member.guild):
|
|
||||||
return
|
|
||||||
if await self.bot.cog_disabled_in_guild(self, member.guild):
|
if await self.bot.cog_disabled_in_guild(self, member.guild):
|
||||||
return
|
return
|
||||||
sus_threshold = await self.config.guild(member.guild).sus_user_threshold()
|
sus_threshold = await self.config.guild(member.guild).sus_user_threshold()
|
||||||
if not sus_threshold:
|
sus_kick_threshold = await self.config.guild(member.guild).sus_user_kick_threshold()
|
||||||
|
if not (sus_threshold or sus_kick_threshold):
|
||||||
return
|
return
|
||||||
|
|
||||||
channel = await self.config.guild(member.guild).sus_user_channel()
|
channel = await self.config.guild(member.guild).sus_user_channel()
|
||||||
channel = member.guild.get_channel(channel)
|
channel = member.guild.get_channel(channel)
|
||||||
if not channel:
|
if not (channel or sus_kick_threshold):
|
||||||
return
|
return
|
||||||
|
|
||||||
age = (datetime.utcnow() - member.created_at).total_seconds()
|
age = (datetime.utcnow() - member.created_at).total_seconds()
|
||||||
|
|
||||||
if age < sus_threshold:
|
if channel:
|
||||||
data = discord.Embed(title="NEW ACCOUNT DETECTED", colour=member.colour)
|
if sus_threshold and age < sus_threshold:
|
||||||
data.add_field(name="Account Age", value=parse_seconds(age))
|
if sus_kick_threshold and age < sus_kick_threshold:
|
||||||
data.add_field(name="Threshold", value=parse_seconds(sus_threshold))
|
data = discord.Embed(title="NEW ACCOUNT KICKED", colour=member.colour)
|
||||||
data.set_footer(text=f"User ID:{member.id}")
|
else:
|
||||||
|
data = discord.Embed(title="NEW ACCOUNT DETECTED", colour=member.colour)
|
||||||
|
|
||||||
name = str(member)
|
data.add_field(name="Account Age", value=parse_seconds(age))
|
||||||
name = " ~ ".join((name, member.nick)) if member.nick else name
|
data.add_field(name="Threshold", value=parse_seconds(sus_threshold))
|
||||||
|
|
||||||
if member.avatar_url:
|
data.set_footer(text=f"User ID:{member.id}")
|
||||||
data.set_author(name=name, url=member.avatar_url)
|
|
||||||
data.set_thumbnail(url=member.avatar_url)
|
|
||||||
else:
|
|
||||||
data.set_author(name=name)
|
|
||||||
|
|
||||||
await channel.send(embed=data)
|
name = str(member)
|
||||||
|
name = " ~ ".join((name, member.nick)) if member.nick else name
|
||||||
|
|
||||||
|
if member.avatar_url:
|
||||||
|
data.set_author(name=name, url=member.avatar_url)
|
||||||
|
data.set_thumbnail(url=member.avatar_url)
|
||||||
|
else:
|
||||||
|
data.set_author(name=name)
|
||||||
|
|
||||||
|
if sus_kick_threshold and age < sus_kick_threshold:
|
||||||
|
data.add_field(name="Kick Threshold", value=parse_seconds(sus_kick_threshold))
|
||||||
|
try:
|
||||||
|
await member.send(
|
||||||
|
f"Hello, you have been kicked from `{member.guild}` because your account is too new. Please try again later."
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
await member.guild.kick(
|
||||||
|
member, reason=f"Account age too new, threshold: {parse_seconds(sus_kick_threshold)}"
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
data.add_field(name="KICK FAILED!", value="Please check bot permissions!")
|
||||||
|
|
||||||
|
await channel.send(embed=data)
|
||||||
|
elif sus_kick_threshold and age < sus_kick_threshold:
|
||||||
|
|
||||||
|
data = discord.Embed(title="NEW ACCOUNT KICKED", colour=member.colour)
|
||||||
|
data.add_field(name="Account Age", value=parse_seconds(age))
|
||||||
|
data.add_field(name="Kick Threshold", value=parse_seconds(sus_kick_threshold))
|
||||||
|
data.set_footer(text=f"User ID:{member.id}")
|
||||||
|
|
||||||
|
name = str(member)
|
||||||
|
name = " ~ ".join((name, member.nick)) if member.nick else name
|
||||||
|
|
||||||
|
if member.avatar_url:
|
||||||
|
data.set_author(name=name, url=member.avatar_url)
|
||||||
|
data.set_thumbnail(url=member.avatar_url)
|
||||||
|
else:
|
||||||
|
data.set_author(name=name)
|
||||||
|
|
||||||
|
try:
|
||||||
|
await member.send(
|
||||||
|
f"Hello, you have been kicked from `{member.guild}` because your account is too new. Please try again later."
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
await member.guild.kick(
|
||||||
|
member, reason=f"Account age too new, threshold: {parse_seconds(sus_kick_threshold)}"
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
data.add_field(name="KICK FAILED!", value="Please check bot permissions!")
|
||||||
|
|
||||||
|
await channel.send(embed=data)
|
||||||
|
elif sus_kick_threshold and age < sus_kick_threshold:
|
||||||
|
try:
|
||||||
|
await member.send(
|
||||||
|
f"Hello, you have been kicked from `{member.guild}` because your account is too new. Please try again later."
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
await member.guild.kick(
|
||||||
|
member, reason=f"Account age too new, threshold: {parse_seconds(sus_kick_threshold)}"
|
||||||
|
)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
@commands.Cog.listener()
|
@commands.Cog.listener()
|
||||||
async def on_message(self, message):
|
async def on_message(self, message):
|
||||||
|
|
Loading…
Reference in a new issue