@Zef1rok

Как ответить на личное сообщение боту?

@bot.event
async def on_message(message):
    for message.author in guild.members:
        if message.channel.type == discord.DMChannel:
            user = await bot.fetch_user(user_id=message.author.id)
            await user.send("message")

Пытаюсь сделать так, чтобы при отправке боту в лс сообщение, бот писал что нибудь.
какие у меня ошибки(код вообще не робит :'( )
  • Вопрос задан
  • 48 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Если хотите писать сообщения в ЛС, то убирайте все упоминания серверов, зачем вы получаете список участников какого-то сервера, если общаетесь в приватном чате.

Удалить:
for message.author in guild.members

Тип стоит проверять по другому. Вместо
if message.channel.type == discord.DMChannel:
используйте
if isinstance(message.channel, discord.DMChannel):

Так же в начало функции стоит добавить проверку является ли автор сообщения ботом, чтобы он сам на себя не зацикливался. Плюс, можно не дергать каждый раз пользователя, он уже есть в message.author

Как-то так:
@bot.event
async def on_message(message):
    
    if message.author.bot:
        return
    
    if isinstance(message.channel, discord.DMChannel):
        await message.author.send("message")
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
yupiter7575
@yupiter7575
Python программист
Как ответить на личное сообщение боту?

Открываешь дискорд, тыкаешь на поле ввода, набираешь сообщение и тыкаешь ENTER
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы