[英]Give roles in discord.py
我正在尝试制作一个创建频道并在您输入命令时为您提供角色的机器人,我一直试图让角色部分工作很长一段时间,但我总是在错误后出现错误 - 这是我当前的代码-
@bot.command(name= 'playfata')
async def playfata(ctx):
member = ctx.author
role = discord.utils.get(member.guild.roles, name="Currently Playing")
if role in member.roles:
await ctx.send("You already have that role")
else:
await member.add_roles(role)
这是我最终收到的错误 -
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'NoneType' object has no attribute 'id'
我尝试了几乎所有可以在互联网上找到的东西,但似乎没有任何帮助。
member
已被声明为ctx.author
ctx.author.guild.roles
和ctx.guild.roles
会得到相同的角色列表,这与这个问题无关。
编辑:实际上,当您的role
变量返回为 None 时,通常会引发该错误,名称case sensitive
因此请确保名称与您输入的完全相同,即使一个字母不同也会使您的角色为None
这里没有太大问题。 只需要对语句稍作改动。
您正在使用此语句来获取该行。
role = discord.utils.get(member.guild.roles, name="Currently Playing")
Discord.py 不适member.guild.roles
。 至少现在不会了。 您需要将其更改为ctx.guild.roles
并且在您需要使用它的任何地方都可以在命令中的任何地方使用上下文。
role = discord.utils.get(ctx.guild.roles, name="Currently Playing")
这将解决您的问题。
提示:为什么不改用ctx.reply
呢? 我的意思是它会创建一条带有回复的消息。 无论你在哪里做ctx.send
或ctx.channel.send
只需将其更改为ctx.reply
。 没有太大的优势,但看起来很酷。 :)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.