@hotree

Бот не пишет сообщение при входи участника (дискорд бот). В чём проблема?

я не могу заставить бота писать в лс участнику при входе.
Код
import discord
from discord.ext import commands
from discord.utils import get
 
TOKEN = "токен"
 
bot = commands.Bot(command_prefix=('!'))
bot.remove_command( 'help' )

@bot.event
async def on_member_join(member):
    member_id = member.id
    user = bot.get_user(member_id)
    await user.send('privet')
 
@bot.event
async def on_ready():
    print("Я запущен!")
 
@bot.command()
async def hello(ctx):
    embed = discord.Embed(
        title="Привет всем!",
    )
    await ctx.send(embed=embed)
 
bot.run(TOKEN)
  • Вопрос задан
  • 211 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
1. Права у бота точно есть? Участник может запретить приваты не от контактов, например.
2. Проверь интенты, запрашиваемые ботом, и разрешённые в настройках учетки бота. Бот вообще получает событие on_member_join?
Ответ написан
Комментировать
mohovoy
@mohovoy
Что-то там программирую, кто бы знал что именно?
В настройках бота в пункте Bot должны стоять галочки напротив PRESENCE INTENT и SERVER MEMBERS INTENT, после пере подключить бота к серверу (Удалить и заново добавить)
Также для теста бота во вкладке OAuth2 в разделе SCOPES выбрать bot, а после в BOT PERMISSIONS выбрать Administrator и по полученной ссылке пере подключить бота к серверу

Сам код для работы:
intents = discord.Intents.default()
intents.members = True
bot = commands.Bot(command_prefix=('!'), intents=intents)

@bot.event
async def on_member_join(member):
    await member.send('Добро пожаловать на сервер!')
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы