discord py 我怎样才能给具有 id 的服务器成员用户一个角色
discord py how can i give a role to server member user with id
关于我的代码功能的解释:我的代码检查我服务器上的成员是否在她的 activity 中具有特定关键字“TEST”并给出排名它给用户。如果关键字从 activity 中删除,排名也会被删除。离线会员不受此影响。所以我不得不将成员保存在文件中。
现在我有一个问题:
await bot.guilds[0].get_member(int(member_id)).add_roles(role)
AttributeError: 'int' object has no attribute 'id'
这就是我的代码:
@tasks.loop(seconds=120)
async def check_activity():
role = 773634102149775390
file = open('role_members.txt', 'r')
member_list = [str(member.id) for member in bot.get_all_members() if not str(member.status) == 'offline' and 'TEST' in str(member.activity)]
for line in file.readlines():
if line[:-1] not in member_list:
member = await bot.guilds[0].get_member(int(line))
await member.remove_roles(role)
a_file = open('role_members.txt', 'a')
for member_id in member_list:
await bot.guilds[0].get_member(int(member_id)).add_roles(role)
a_file.write(member_id + '\n')
check_activity.start()
我该如何解决这个问题?
您可以在没有文件的情况下执行此操作,只需使用 id 获取公会即可。然后检查 guild.members
个活动。
@tasks.loop(seconds=120)
async def check_activity():
role_name = 'Test'
guild = bot.get_guild(123456798)
role = discord.utils.get(guild.roles, name=role_name)
for member in guild.members:
try: # if he is online.
status = member.activities[0].name
if role_name in status:
await member.add_roles(role)
else:
await member.remove_roles(role)
except: # he is offline
pass
关于我的代码功能的解释:我的代码检查我服务器上的成员是否在她的 activity 中具有特定关键字“TEST”并给出排名它给用户。如果关键字从 activity 中删除,排名也会被删除。离线会员不受此影响。所以我不得不将成员保存在文件中。
现在我有一个问题:
await bot.guilds[0].get_member(int(member_id)).add_roles(role)
AttributeError: 'int' object has no attribute 'id'
这就是我的代码:
@tasks.loop(seconds=120)
async def check_activity():
role = 773634102149775390
file = open('role_members.txt', 'r')
member_list = [str(member.id) for member in bot.get_all_members() if not str(member.status) == 'offline' and 'TEST' in str(member.activity)]
for line in file.readlines():
if line[:-1] not in member_list:
member = await bot.guilds[0].get_member(int(line))
await member.remove_roles(role)
a_file = open('role_members.txt', 'a')
for member_id in member_list:
await bot.guilds[0].get_member(int(member_id)).add_roles(role)
a_file.write(member_id + '\n')
check_activity.start()
我该如何解决这个问题?
您可以在没有文件的情况下执行此操作,只需使用 id 获取公会即可。然后检查 guild.members
个活动。
@tasks.loop(seconds=120)
async def check_activity():
role_name = 'Test'
guild = bot.get_guild(123456798)
role = discord.utils.get(guild.roles, name=role_name)
for member in guild.members:
try: # if he is online.
status = member.activities[0].name
if role_name in status:
await member.add_roles(role)
else:
await member.remove_roles(role)
except: # he is offline
pass