@client.command()
@commands.has_permissions(kick_members = True)
async def warn(self,ctx,member = discord.Member,*,reason = None):
await member.send("You were warned in {} for: {}".format(member.guild,reason))
embed = discord.Embed(":poop:***{} has been warned".format(member))
await ctx.send(embed=embed)
Traceback (most recent call last):
File "C:\Users\yomamahahaha\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped
ret = await coro(*args, **kwargs)
File "c:/Users/yomamahahaha/Desktop/poopshitter/bot.py", line 96, in warn
await member.send("You were warned in {} for: {}".format(member.guild,reason))
File "C:\Users\yomamahahaha\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\abc.py", line 864, in send
channel = await self._get_channel()
AttributeError: 'str' object has no attribute '_get_channel'
我在这段代码中没有get_channel,所以我想知道问题会是什么。
发布于 2020-12-04 19:26:04
我注意到两件事。
:
而不是=
。如果您使用:
,discord.py将尝试搜索具有该ID、提及等的用户。=
用于传递可选参数。这意味着您不必在运行该命令时指定原因。discord.Embed()
函数将不会像您在这里展示的那样工作。调用此函数的正确方法是embed = discord.Embed(description= f":poop:***{member} has been warned")
。这样,discord.py就知道嵌入应该是什么样子了。Embeds有相当多的可定制的东西。示例:标题、说明、颜色、图像和多个字段。以下是命令和我的建议。如果你对此有任何疑问,请告诉我。
@client.command()
@commands.has_permissions(kick_members = True)
async def warn(self, ctx, member: discord.Member, *, reason = "No reason provided"):
await member.send(f"You were warned in {member.guild}. Reason: {reason}")
embed = discord.Embed(description=f":poop:***{member} has been warned.")
await ctx.send(embed=embed)
https://stackoverflow.com/questions/65139117
复制相似问题