当我在制作discord bot禁止用户和踢用户时,它不能正常工作,因为它可以被没有权限的用户踢
@bot.tree.command(name="kick", description="Kicking Other Users With My Hammer Tool")
@commands.has_permissions(kick_members=True)
async def kick(ctx, member: discord.Member, reason: str = None):
"""Kick a member from the server."""
if not reason:
reason = "No reason given."
try:
await member.kick(reason=reason)
embed = Embed(title="Kicking", color=discord.Color.red())
embed.add_field(name="Kick Users", value=f"This User: {member.mention} is kicked for: ``{reason}``", inline=False)
embed.set_footer(text="https://turpincheat.glitch.me -- İlyax.")
await ctx.response.send_message(embed=embed)
channel_id = 1038757871246127134
channel = bot.get_channel(channel_id)
await channel.send(embed=embed)
except discord.Forbidden:
await ctx.send("Üzgünüm, bu işlemi gerçekleştirmek için yeterli yetkiye sahip değilim.")
@bot.tree.command(name="ban", description="Banning Other Users With My Hammer Tool")
@commands.has_permissions(ban_members=True) # Ban komutunu sadece ban_members yetkisi olan kullanıcıların kullanabilmesini sağlar
async def ban(ctx, member: discord.Member, reason: str = None):
if ctx.author.guild_permissions.kick_members:
if not reason:
reason = "Not reason Given (İlyax's Turpin mod bot)"
await member.ban(reason=reason)
embed = Embed(title="Banning",
color=discord.Color.red()) # Embed'in rengi (isteğe
embed.add_field(
name="Ban Users",
value=f"This User : {member.mention} is banned for : ``{reason}``",
inline=False)
embed.set_footer(
text="https://turpincheat.glitch.me -- İlyax.") # Embed'in alt bilgisi
await ctx.response.send_message(embed=embed)
channel_id = 1038757871246127134
channel = bot.get_channel(channel_id)
await channel.send(embed=embed)`
我踢和班宁其他用户在不和谐
1条答案
按热度按时间vohkndzv1#
@commands.has_permissions()
仅适用于Bot. command。在这里,您使用的是app_commands.CommandTree.command(application / slash command),它使用不同的检查app_commands.checks.has_permissions。
另外,你不应该把discord.Interaction当作
ctx
来使用,因为discord.Interaction和discord.ext.commands.Context有很大的不同。ctx.author
变成了interaction.user
。只要你正确使用它,它仍然可以工作,但是正确命名变量是一个很好的习惯。