#python #discord.py #disco
Вопрос:
Это Мой код, очевидно, что-то не так… Я не знаю, куда бы я поместил аргумент гильдии при определении команды, но не похоже, что я поместил его в нужное место
async def unban(guild, ctx, *, member): banned_users = await ctx.guild.bans() member_name, member_discriminator = member.split('#') for ban_entry in banned_users: user = ban_entry.user if(user.name, user.discriminator) == (member_name, member_discriminator): await ctx.guild.unban(user) await ctx.send(f'Unbanned **{user}** !') await user.send(f"You have been unbanned from **{guild.name}") return```
Комментарии:
1. Почему вы хотите привести
guild
необходимый аргумент? Здесь это не имеет никакого смысла. Кроме того, вашаuser.send
часть не будет работать, так как пользователь и бот больше не используют общий сервер после запрета.
Ответ №1:
Таким образом, вы действительно можете убрать требование гильдии в этой части async def unban(guild, ctx, *, member):
и просто сделать это async def unban(ctx,*,member: discord.Member):
Вам нужно поставить участника: раздор.Член, а не просто член!
Затем поместите ctx перед {guild.name}
так, чтобы это выглядело как {ctx.guild.name}
Тогда во всем это должно выглядеть так!
@client.command() async def unban( ctx, *, member:discord.Member): banned_users = await ctx.guild.bans() member_name, member_discriminator = member.split('#') for ban_entry in banned_users: user = ban_entry.user if(user.name, user.discriminator) == (member_name, member_discriminator): await ctx.guild.unban(user) await ctx.send(f'Unbanned **{member}** !') await member.send(f"You have been unbanned from **{ctx.guild.name}") return
Комментарии:
1. Поскольку это команда unban, подойдет ли использование
discord.Member
в этом случае? Поскольку пользователь уже забанен и больше не делится гильдией, следовательноdiscord.Member
, экземпляра нет. Я предлагаю использоватьdiscord.Object
в этом случае, передав идентификатор пользователя, и вызватьguild.unban()
, передав его в качестве аргумента. Вы также можете обработать часть, чтобы проверить, заблокирован ли участник, так как она возникаетdiscord.NotFound
, если участник не найден/запрещен без использованияctx.guild.bans
2. о, вы совершенно правы, на самом деле вам не нужно вызывать аргумент участника, потому что пользователь на самом деле не находится на сервере.