discord py - 如果用户收到新排名,则发送消息 (on_member_update)
discord py - send message if user received a new rank (on_member_update)
如果用户获得了特定等级(例如升级),我想向他们发送私人消息,但我不知道该怎么做。
我尝试了什么:
@bot.event
async def on_member_update(before,after):
try:
role_id = 721847130238746636
member = bot.get_guild(before.guild.id).get_member(before.id)
if before.bot or after.bot:
return
else:
if role_id not in bool(before.member.roles):
if role_id in bool(after.member.roles):
print(f"{member.name} test dm message send")
await member.send('test dm message')
except AttributeError:
pass
试试这个,我稍微修改了你的代码。 role_id
不能在 bool
中并且没有 bool 它无论如何都不会触发,因为 role_id
是 id
并且 before.roles
和 after.roles
将 return 与角色名称进行比较的列表。所以我使用 get()
从公会获得角色并检查 role
是否在 before.roles
& after.roles
@bot.event
async def on_member_update(before, after):
try:
role = get(bot.get_guild(before.guild.id).roles, id=721847130238746636)
member = bot.get_guild(before.guild.id).get_member(before.id)
if role not in before.roles and role in after.roles:
print(f"{member.name} test dm message send")
await member.send('test dm message')
except AttributeError as e:
print(e)
代码在我进行更改后工作,如果您还没有,请确保您已启用 intents。
如果用户获得了特定等级(例如升级),我想向他们发送私人消息,但我不知道该怎么做。
我尝试了什么:
@bot.event
async def on_member_update(before,after):
try:
role_id = 721847130238746636
member = bot.get_guild(before.guild.id).get_member(before.id)
if before.bot or after.bot:
return
else:
if role_id not in bool(before.member.roles):
if role_id in bool(after.member.roles):
print(f"{member.name} test dm message send")
await member.send('test dm message')
except AttributeError:
pass
试试这个,我稍微修改了你的代码。 role_id
不能在 bool
中并且没有 bool 它无论如何都不会触发,因为 role_id
是 id
并且 before.roles
和 after.roles
将 return 与角色名称进行比较的列表。所以我使用 get()
从公会获得角色并检查 role
是否在 before.roles
& after.roles
@bot.event
async def on_member_update(before, after):
try:
role = get(bot.get_guild(before.guild.id).roles, id=721847130238746636)
member = bot.get_guild(before.guild.id).get_member(before.id)
if role not in before.roles and role in after.roles:
print(f"{member.name} test dm message send")
await member.send('test dm message')
except AttributeError as e:
print(e)
代码在我进行更改后工作,如果您还没有,请确保您已启用 intents。