[英]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.