虽然授予了机器人管理员权限,但仍然要求授予踢出成员权限,这可能是由于机器人的权限不足造成的。要解决此问题,我们可以使用以下代码,首先检查机器人是否有管理权限,然后再请求踢出成员的权限:
import discord
from discord.ext import commands
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.check
async def check_admin(ctx):
if not ctx.author.guild_permissions.administrator:
await ctx.send("你没有管理员权限!")
return False
else:
return True
@bot.command()
async def kick(ctx, member: discord.Member):
if not ctx.guild.me.guild_permissions.kick_members:
await ctx.send("我没有踢出成员的权限!")
return
await member.kick(reason="违反了规定")
await ctx.send(f"{member} 已被踢出!")
bot.run('YOUR_TOKEN')
在这个示例中,check_admin
装饰器检查命令调用者是否有管理员权限,以避免非管理员使用踢出成员命令。
然后,在踢出成员命令中,我们使用guild_permissions
检查机器人是否具有足够的权限来执行该操作。如果没有权限,机器人将发送一条消息指出。如果有权限,机器人将踢出目标成员。
这个解决方案将确保机器人具有足够的权限来执行踢出成员操作,并且操作者必须是管理员。