我有这个代码
async def allroles(ctx):
output2 = ""
server = ctx.message.guild
role_id = server.roles[0]
for role in server.roles:
if role_id == 640586288029892618:
print("it´s everyone role")
else:
output2 +=f"{role.name} \n"
await ctx.send(output2)
哪里 640586288029892618 == @everyone 我想写除每个人之外的每个角色,但是当我尝试这个时,它只写了所有角色包括每个人,所以我想我尝试不写它是错误的(如果有选项可以代替每个人的 ID 使用 role_name 所以我不必须为每个@everyone 服务器角色更改它,但写入
if role.name == "@everyone":
Skip
else:
output2 +=f"{role.name} \n"
await ctx.send(output2)
那就太好了。谢谢你帮助我!
答案 0 :(得分:0)
所以基本上你在这里做错了
if role_id == 640586288029892618:
print("it´s everyone role")
role_id = server.roles[0]
在这里返回一些奇怪的数据(我不记得名字了)
所以尝试用 if role_id == 640586288029892618:
if role_id.id == 640586288029892618:
希望它能解决你的问题,否则就给我打电话
编辑:
因为你要求一种比每次都输入角色 ID 更简单的方法
好吧,对于大多数角色,它可能工作正常,但是当您将表情符号放入角色名称时,您可能会在代码中命名角色时遇到困难,当您可以通过简单地添加另一个参数(例如
)来完成硬编码时,为什么还要进行硬编码
确保你导入角色类
async def allroles(ctx, role_to_check:Role):
//some code here
for role in server.roles:
if role.id == role_to_check.id:
print("it´s everyone role")
希望这能解决你的答案:)