繁体   English   中英

我的 discord.py 机器人命令不起作用

[英]My discord.py bot Commands aren't working

我的命令都不起作用。 唯一起作用的是响应机器人事件的 ping。 除此之外,没有其他任何工作。 这是代码。 请帮我。 我导入了重要的依赖项等等,但无法在此处包含它

#
@bot.event
async def on_ready():
    await bot.change_presence(status=discord.Status.online, activity=discord.Game("waiting for a ping"))
    print("Bot is ready!")

#
@bot.event
async def on_member_join(member):
    channel = bot.get_channel(956655371634753607)
    embedVar = discord.Embed(title="Ariza Bot", color= 1974050)
    embedVar.add_field(name="Welcome", value=f"{member} Thank you For joining our discord server!\nEnjoy!", inline=False)
    await channel.send(embed=embedVar)
    role = member.guild.get_role(956583850975297576)
    await member.add_roles(role)

#
@bot.command(name='kick')
@commands.has_role("Administrator")
async def kick(self, ctx, member : commands.MemberConverter, *, reason=None):
  await member.kick(reason=reason)
  await ctx.send(f"{member} has been kicked, reason: {reason}")
  
@kick.error
async def kick_error(self, ctx, error):
    if isinstance(error, MissingPermissions):
        await ctx.send("You don't have permission to kick members.")

#
@bot.event
async def on_command_error(ctx, error):
    if isinstance(error, commands.MissingPermissions):
        await ctx.send("You cant do that!")

#
@bot.command(name='clear')
@commands.has_permissions(manage_messages=True)
async def clear(ctx, amount: int):
    authors = {}
    async for message in ctx.channel.history(limit=amount + 1):
        if message.author not in authors:
            authors[message.author] = 1
        else:
            authors[message.author] += 1
        await message.delete()

#
@bot.command(name='warn')
@commands.has_role('Admin')
async def warn(ctx,member: discord.Member,reason: str):
    channel = await member.create_dm()
    embedVar = discord.Embed(title="Ariza Bot", color= 1974050)
    embedVar.add_field(name="Warning", value=f"Warned: You Were Warned by {ctx.author}\nTo: {member}\n Reason: {reason}\nSuggestion: Please Don't Do this Again.", inline=False)
    await channel.send(embed=embedVar)
    await ctx.channel.send(embed=embedVar)

我现在只谈论 kick 命令作为答案。 但该逻辑也适用于其他命令。

尝试删除错误处理程序中的 if 语句。 做这个:

@kick.error
async def kick_error(ctx, error):
   await ctx.send(error)

仅当commands.MissingPermissions被引发时才会发送响应。 如果出现其他错误,则什么也不会发生。 因此,删除 if 条件将帮助您了解命令中发生了什么错误。 我认为这是一个TypeError ,因为member的类型是discord.Member而不是commands.MemberConverter 还要提到reason是类型str ,因为它被声明为None可以引发TypeError

您需要在命令之前添加它,否则它不会读取它们

    await bot.process_commands(message)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM