簡體   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