机器人重启后成员离开服务器时如何获取成员名称?

How to get member name when member leaves server after bot restarts?

下面给出的代码在以下情况下工作正常:

  1. 我启动机器人
  2. 用户加入服务器=>我得到用户名
  3. 用户离开服务器 => 我得到离开的成员的用户名

但是当我有这样的序列时:

  1. 我启动机器人
  2. 用户加入服务器=>我得到用户名
  3. 我重启bot:先关机再开机
  4. 用户离开服务器=> 我没有得到用户名

我有带用户名的数据库,所以在用户离开后我需要从数据库中删除他。例如,当我部署更新的机器人版本时,机器人会重新启动。这是我的代码:

import discord
from discord.ext import commands, tasks

intents = discord.Intents(messages=True, members=True)
bot = commands.Bot(command_prefix='!', intents=intents)


@bot.event
async def on_member_join(member):
    username = member.name
    await member.send('Hello')
    print(username)


@bot.event
async def on_member_remove(member):
    username = member.name
    print(username)

bot.run('TOKEN')

我正在使用 discord.py 1.5.0。我该如何解决这个问题?

我不知道为什么这段代码对我不起作用:

intents = discord.Intents(messages=True, members=True)
bot = commands.Bot(command_prefix='!', intents=intents)

但我试图在他的视频中以@AbdurJ 的身份声明意图:

intents = discord.Intents.default()
intents.members = True

bot = commands.Bot(command_prefix='!', intents=intents)

而且有效!