vinaydawani /
ISA-bot
| 1 | import discord |
||
| 2 | from discord.ext import commands |
||
| 3 | |||
| 4 | |||
| 5 | class BannedMember(commands.Converter): |
||
| 6 | async def convert(self, ctx, argument): |
||
| 7 | ban_list = await ctx.guild.bans() |
||
| 8 | try: |
||
| 9 | member_id = int(argument, base=10) |
||
| 10 | entity = discord.utils.find(lambda u: u.user.id == member_id, ban_list) |
||
| 11 | except ValueError: |
||
| 12 | entity = discord.utils.find(lambda u: str(u.user) == argument, ban_list) |
||
| 13 | |||
| 14 | if entity is None: |
||
| 15 | raise commands.BadArgument("Not a valid previously-banned member.") |
||
| 16 | return entity |
||
| 17 | |||
| 18 | |||
| 19 | def can_execute_action(ctx, user, target): |
||
| 20 | return user.id == ctx.bot.owner_id or user == ctx.guild.owner or user.top_role > target.top_role |
||
| 21 | |||
| 22 | |||
| 23 | class MemberID(commands.Converter): |
||
| 24 | async def convert(self, ctx, argument): |
||
| 25 | try: |
||
| 26 | m = await commands.MemberConverter().convert(ctx, argument) |
||
| 27 | except commands.BadArgument: |
||
| 28 | try: |
||
| 29 | member_id = int(argument, base=10) |
||
| 30 | m = await resolve_member(ctx.guild, member_id) |
||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
Loading history...
|
|||
| 31 | except ValueError: |
||
| 32 | raise commands.BadArgument(f"{argument} is not a valid member or member ID.") from None |
||
| 33 | except MemberNotFound: |
||
|
0 ignored issues
–
show
Comprehensibility
Best Practice
introduced
by
|
|||
| 34 | # hackban case |
||
| 35 | return type("_Hackban", (), {"id": member_id, "__str__": lambda s: f"Member ID {s.id}"},)() |
||
| 36 | |||
| 37 | if not can_execute_action(ctx, ctx.author, m): |
||
| 38 | raise commands.BadArgument("You cannot do this action on this user due to role hierarchy.") |
||
| 39 | return m |
||
| 40 |