#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()
inon_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. упс, моя ошибка, я не перепроверил свой ответ, спасибо, что указали на это:>