Потому что
on_member_join
требует intent'а "members":
https://discordpy.readthedocs.io/en/stable/api.htm...
И аргумент intents передаётся не в listener, а в конструктор бота.
intents = discord.Intents.default()
intents.members = True
# либо «intents = discord.Intents.all()» если оба intents доступны
ds = commands.Bot(command_prefix='!', intents=intents)
@ds.event
async def on_member_join(member):
...
Перед включением intent в коде, убедитесь что он включен в панели приложения в Discord'е:
В противном случае вы получите исключение при запуске бота