БОТ Discord — DM кто-то, кто покидает сервер

#python #discord #discord.py

#python #Discord #discord.py

Вопрос:

Я знаю, что можно DM кого-то с ботом, если у вас есть его ID, но как я могу получить идентификаторы пользователей, когда они заходят на сервер?

Я думал:

 @client.event
async def on_member_leave(member):
or
async def on_guild_remove(guild):
   user = await client.fetch_user(**the id**) 
   await user.send("Your message")
  

Комментарии:

1. как насчет memeber.send() in on_member_leave() ?

2. discord.ошибки. Запрещено: 403 Запрещено (код ошибки: 50007): не удается отправлять сообщения этому пользователю

3. Я сделал async def on_member_remove(member): user = await client.fetch_user(member.id) print(member.id) print(user) await user.send( f'We hope that you had fun!' ) и даже это выдает ту же ошибку, хотя member.id и пользователь прав!

4. что касается меня, если кто-то покидает сервер, то может быть слишком поздно отправлять что-либо — оно может быть уже отключено, когда вы получаете событие, и вы не можете получить доступ к этому пользователю.

5. Боту нужно поделиться гильдией, чтобы отправлять DM пользователю, как сказал @furas.

Ответ №1:

Нет необходимости использовать fetch_user , вы можете просто использовать message.send

 @client.event
async def on_member_leave(member):
   await member.send("Your message")
  

Кроме того, если у участника нет общего сервера с клиентом или если участник отключил прямые сообщения, сообщение не будет отправлено.

Комментарии:

1. будьте осторожны, пользователь не определен. Это должен быть участник.

2. упс, моя ошибка, я не перепроверил свой ответ, спасибо, что указали на это:>