← Все вопросы
Как сделать приветствие новичка в Discord (on_member_join)?
8
Хочу, чтобы когда на сервер заходит новый человек, бот писал ему приветствие в специальный канал. Какое событие за это отвечает и почему у меня оно вообще не срабатывает?
2 ответа
13
✓ Принятый ответ — помог автору
Событие называется on_member_join. Но чтобы оно работало, обязательно нужен Server Members Intent:
intents = discord.Intents.default()
intents.members = True # без этого on_member_join молчит
bot = commands.Bot(command_prefix='!', intents=intents)
@bot.event
async def on_member_join(member):
channel = discord.utils.get(member.guild.text_channels, name='привет')
if channel:
await channel.send(f'Добро пожаловать, {member.mention}! 🎉')
Если событие «не срабатывает» — на 99% это выключенный Server Members Intent. Включи его и в коде (intents.members = True), и в Developer Portal → Bot → Privileged Gateway Intents.
4
member.mention сделает кликабельное упоминание (пинг). Если не хочешь пинговать — пиши просто member.name. И проверь, что канал с именем привет реально существует, иначе get вернёт None.
Ваш ответ
Войдите, чтобы ответить на вопрос.