Discord.py:`on_member_update()` 重复调用 [仅限 1 个公会]

Discord.py: `on_member_update()` called repeatedly [1 guild only]

我希望我的机器人根据昵称模式(基本上是公司 ID)更改用户角色。 当用户在昵称中输入自己的ID时,正常调用on_member_update()
在函数中,机器人添加角色并将昵称再次更改为特定模式。这会再次触发 on_member_update()
请注意,我只有 1 个公会的机器人。

我试图通过添加

来阻止它
if before.display_name == after.display_name:
  return

但是改昵称还是会进入函数。有没有办法避免函数再次触发自己?

代码:

@bot.event
async def on_member_update(before, after):
    if before.display_name == after.display_name:
        return
    id = re.findall(r'\d{6,7}', after.display_name)
    if not id:
        return
    else:
        # Business logic (changing nickname, adding roles etc...)

这不是一个完整的答案,但它会指导您朝着正确的方向前进。

您必须在数据库中或使用 JSON 文件记录更改用户的 ID。我称它为 users_changed 应该是一个列表。

注意: id 保留在 Python 你必须使用其他东西甚至 id_

users_changed = [11111,22222,33333] # get this from the db or file.

@bot.event
async def on_member_update(before, after):
    if before.id in users_changed:
        return

    # code here
    # then add before.id into the users_changed