我已经发出命令设置某人的角色,但是,这会引发错误。
Command raised an exception: AttributeError: 'str' object has no attribute 'add_roles'
我做错了什么吗?我正在使用最新的不和谐py版本。
@bot.command()
async def set_role(ctx,member = None,val: int = None):
ab = member
ab = ab.replace("<","")
ab = ab.replace(">","")
ab = ab.replace("@","")
ab = ab.replace("!","")
user = bot.get_user(int(ab))
if val == 1:
role = discord.utils.get(ctx.guild.roles, name="Test")
await user.add_roles(role)
await ctx.send('Updated')
答案 0 :(得分:2)
user = bot.get_user(int(ab))
这将创建一个用户对象。它不隶属于行会/不和谐服务器。根据设计,您无法执行add_roles
。
成为您的漫游器可能不与此用户共享行会的原因。否则您的漫游器可能与此用户共享多个行会。但是,它怎么知道您实际上在处理哪个行会呢?
您需要创建一个成员对象。这可以通过以下方式完成:
member = ctx.guild.get_member(int(ab))
现在有了成员对象,可以等待add_roles。
await member.add_roles(role)
https://discordpy.readthedocs.io/en/latest/api.html#discord.Member.add_roles
答案 1 :(得分:0)
要为成员提供角色,您需要提供成员和角色名称作为输入。 例如:
" ?set_role @clay#9871 示例"
机器人将从公会角色中搜索角色名称“example” 如果机器人没有找到角色,它将发送“找不到角色”,这就是“尝试”和“除外”
@bot.command()
async def set_role(ctx,member :discord.Member,role):
try:
add_role= discord.utils.get(ctx.guild.roles, name=role)
await member.add_roles(add_role)
await ctx.send('Updated')
except:
await ctx.send("role not found!")