mirror of
https://github.com/brandons209/Red-bot-Cogs.git
synced 2024-05-10 15:34:08 +12:00
add in option to opt out users, and refund if name change failed
This commit is contained in:
parent
c18bd6efc6
commit
794fb786c4
|
@ -52,6 +52,7 @@ class NameChange(commands.Cog):
|
|||
default_guild = {
|
||||
"allowed_roles": [],
|
||||
"allowed_users": [],
|
||||
"disallowed_users": [],
|
||||
"cost_per_minute": 0,
|
||||
"current_changes": {},
|
||||
}
|
||||
|
@ -102,6 +103,10 @@ class NameChange(commands.Cog):
|
|||
async def check_can_change(self, member: discord.Member):
|
||||
roles = await self.config.guild(member.guild).allowed_roles()
|
||||
members = await self.config.guild(member.guild).allowed_users()
|
||||
disallow_members = await self.config.guild(member.guild).disallowed_users()
|
||||
|
||||
if member.id in disallow_members:
|
||||
return False
|
||||
|
||||
for role in member.roles:
|
||||
if role.id in roles:
|
||||
|
@ -208,7 +213,18 @@ class NameChange(commands.Cog):
|
|||
async with self.config.guild(ctx.guild).current_changes() as current_changes:
|
||||
current_changes[str(member.id)] = data
|
||||
|
||||
await self.change_nickname(member, new_name)
|
||||
result = await self.change_nickname(member, new_name)
|
||||
if not result:
|
||||
await ctx.send(
|
||||
error(
|
||||
f"It seem's I couldn't change {member}'s nickname, please contact a staff member to check my role hierarchy.\n\nYou have not been charged."
|
||||
),
|
||||
delete_after=30,
|
||||
)
|
||||
# refund them
|
||||
await bank.deposit_credits(ctx.author, total_cost)
|
||||
return
|
||||
|
||||
await ctx.send(f"{member}'s nickname changed to {new_name} until <t:{data['end_time']}>.")
|
||||
|
||||
try:
|
||||
|
@ -331,6 +347,51 @@ class NameChange(commands.Cog):
|
|||
for page in pagify(msg, page_length=1800, shorten_by=22):
|
||||
await ctx.send(page)
|
||||
|
||||
@namechange_user.group(name="optout")
|
||||
async def namechange_user_optout(self, ctx):
|
||||
"""
|
||||
Opt specific users out from changing their name
|
||||
"""
|
||||
pass
|
||||
|
||||
@namechange_user_optout.command(name="add")
|
||||
async def namechange_user_optout_add(self, ctx, *, member: discord.Member):
|
||||
"""
|
||||
Add a member to disallow name changing
|
||||
"""
|
||||
async with self.config.guild(ctx.guild).disallowed_users() as disallowed_users:
|
||||
if member.id not in disallowed_users:
|
||||
disallowed_users.append(member.id)
|
||||
await ctx.tick()
|
||||
else:
|
||||
await ctx.send(error(f"`{member}` is already added!"), delete_after=30)
|
||||
|
||||
@namechange_user_optout.command(name="del")
|
||||
async def namechange_user_optout_del(self, ctx, *, member: discord.Member):
|
||||
"""
|
||||
Remove a member from opting out
|
||||
"""
|
||||
async with self.config.guild(ctx.guild).disallowed_users() as disallowed_users:
|
||||
if member.id in disallowed_users:
|
||||
disallowed_users.remove(member.id)
|
||||
await ctx.tick()
|
||||
else:
|
||||
await ctx.send(error(f"`{member}` is not in the disallow list!"), delete_after=30)
|
||||
|
||||
@namechange_user_optout.command(name="list")
|
||||
async def namechange_user_optout_list(self, ctx):
|
||||
"""
|
||||
View all members that allow name changing.
|
||||
"""
|
||||
members = await self.config.guild(ctx.guild).disallowed_users()
|
||||
members = [ctx.guild.get_member(m) for m in members]
|
||||
|
||||
msg = [f"{m.mention}\n" for m in members if m is not None]
|
||||
msg = "Current members:\n" + "".join(msg)
|
||||
|
||||
for page in pagify(msg, page_length=1800, shorten_by=22):
|
||||
await ctx.send(page)
|
||||
|
||||
@namechange.command(name="cost")
|
||||
async def namechange_cost(self, ctx):
|
||||
"""
|
||||
|
|
Loading…
Reference in a new issue