【问题标题】:how to make bot assign roles when given command给定命令时如何使机器人分配角色
【发布时间】:2021-04-16 16:51:18
【问题描述】:

我正在尝试让机器人扮演“商场”角色并删除“自习室”角色。但是,它一直返回错误

忽略 on_message 中的异常 回溯(最近一次通话最后): _run_event 中的文件“C:\Users\frost\AppData\Local\Programs\Python\Python38-32\lib\site-packages\discord\client.py”,第 333 行 等待 coro(*args, **kwargs) 文件“D:\GalaxyConflux Master\gcclient.py”,第 89 行,on_message 角色.id = 798193741403127818 AttributeError:“str”对象没有属性“id”

正在运行的代码是这样的

@client.event
async def on_message(message):
    if message.content.startswith(gccmd.cmd_prfx + 'mall'):
        role = 'Mall'
        role.id = 798193741403127818
        await message.author.add_roles(role.id)

我尝试了许多不同的方法,但每种方法都会导致类似的错误。 我只是让它脱离了角色 = 'Mall' 部分,但这也不起作用。

如何将角色 ID 转换为实际 ID?

非常感谢! ~微光

【问题讨论】:

    标签: discord.py


    【解决方案1】:

    这里有一个示例,向您展示如何添加和删除角色。

    @client.command()
    async def mall(ctx):
        # if prefix is '-' you'd type: -mall
        await user.remove_roles(@ROLE_ID)
        await user.add_roles(@ROLE_ID)
        await ctx.send("Mall role added!")
    
    @client.command()
    async def home(ctx):
        # if prefix is '-' you'd type: -home
        await user.remove_roles(@ROLE_ID)
        await user.add_roles(@ROLE_ID)
        await ctx.send("Home role added!") 
    

    如果你想删除多个角色,你只需要添加你想删除的所有角色,然后添加你想要的。

    例如,如果您从家前往商场,它会删除包括住宅角色在内的所有角色并添加商场角色。

    【讨论】:

    • 这需要discord.Memberdiscord.Role类型提示,否则同样的事情会发生。
    • 我想做它,这样用户就可以自己做,就像如果他们想要 mall 角色,他们可以输入类似的东西。 -goto mall 它应该像运动一样,他们移动到新频道并离开旧频道。这可能吗?
    • 我刚刚编辑了它。这是你要找的吗?如果没有,我认为你需要澄清一下你到底需要什么。
    猜你喜欢
    • 1970-01-01
    • 2021-05-22
    • 2021-04-12
    • 2019-07-03
    • 2021-03-14
    • 2018-10-02
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    相关资源
    最近更新 更多