使用控制台输入在Discord.py Rewrite中添加/删除角色

2024-09-27 21:33:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个大项目的一部分,由于我是discord.py中的一个noob,我在添加和删除角色方面走到了死胡同

我有一个设置控制台输入,它要求用户ID、要添加/删除的角色,然后它应该执行一个命令。控制台只是一个批处理文件或pycharm/atom等的运行模式。。。。 该函数不在带有命令的Discord中使用,而是仅从输入中使用。 对不起,如果这是一个双重职位,但我一直在寻找这两天以来,现在和每一个结果给了我一个错误代码。该函数已被注释,应该让您知道问题的确切原因:

async def rolemanager():
   await client.wait_until_ready()
   function = input("Add/Remove> ")
        if function == 'add':
            person = input("User ID> ") # Uses non-changeable User ID
            personname = client.get_user(int(person)) # Converts to Name#0000
            roleadd = input("Role-Name> ") # Asks for exact role name to add
            confi = input("Are you sure? y/n > ") # Asks for confirm input
            if confi == "y": # If its confirmed:
                await client.add_roles(name=roleadd) # Error: AttributeError: 'Bot' object has no attribute 'add_roles'
                print(f"Role {roleadd} added to user {personname}") # Prints if successful, or crashes the program
            else:
                print("Role-Add canceled.") # If canceled, shows this
                pass # Passes to restart the loop
        elif function == 'remove': # Same stuff here, but remove . .
            person = input("User ID> ")
            personname = client.get_user(int(person))
            roleremove = input("Role-Name> ")
            confi = input("Are you sure? y/n > ")
            if confi == "y":
                await client.remove_roles(name=roleremove)
                print(f"Role {roleremove} removed from user {personname}")
            else:
                print("Role-Remove canceled.")
                pass
        else:
            print(f"Wrong input, use add/remove in lower-case)

完全错误: 从未检索到任务异常 future:exception=AttributeError(“Bot”对象没有“添加角色”属性)>; 回溯(最近一次呼叫最后一次): mainhandler中第42行的文件“bot2.py” 等待客户端添加角色(name=roleadd) AttributeError:“Bot”对象没有“添加角色”属性

提前谢谢


Tags: tonameclientaddid角色inputif
1条回答
网友
1楼 · 发布于 2024-09-27 21:33:09

您根本不应该使用input,因为这是一个阻塞操作。相反,作为命令调用的一部分,您应该从用户那里获得所有这些信息

您遇到的问题是add_rolesMember的一种方法,而不是Client

from discord.ext import commands
from discord import Member, Role

bot = commands.Bot("!")

@bot.command()
async def add(ctx, member: Member, role: Role):
    await member.add_roles(role)

@bot.command()
async def remove(ctx, member: Member, role: Role):
    await member.remove_roles(role)

bot.run("token")

相关问题 更多 >

    热门问题