Почему пользователю не приходит сообщение в личные сообщения?

Рейтинг: -1Ответов: 1Опубликовано: 16.04.2023

Сначала пишет "Участник username был разбанен." ,а потом "Неправильный формат команды. Используйте: $unban <ID участника>", плюс не приходит сообщение о разбане.

import discord

intents = discord.Intents.default()
intents.message_content = True

client = discord.Client(intents=intents)

@client.event
async def on_ready():
    print(f'We have logged in as {client.user}')

@client.event
async def on_message(message):
    if message.author == client.user:
        return
    if message.content.startswith('$clear'):
        if any(role.name in ["Admin", "Moderator"] for role in message.author.roles):
            await message.channel.purge(limit=None)
            await message.channel.send('Сообщения удалены!')
        else:
            await message.channel.send('Вы не можете использовать эту команду.')
    if message.content.startswith('$ban'):
        if any(role.name in ["Owner", "Admin"] for role in message.author.roles):
            try:
                args = message.content.split()
                member_id = int(args[1])
                member = await message.guild.fetch_member(member_id)
                reason = " ".join(args[2:]) or "No reason provided."
                await member.send(f'Вы были забанены на сервере {message.guild.name}. Причина: {reason}')
                await member.send("Поддержка: westeyeswie#6607 ") 
                await member.ban()
                await message.channel.send(f'Участник {member.display_name} был забанен. Причина: {reason}')
            except:
                await message.channel.send('Неправильный формат команды. Используйте: $ban <ID участника> <причина>')
        else:
            await message.channel.send('Вы не можете использовать эту команду.')
    if message.content.startswith('$unban'):
        if any(role.name in ["Owner", "Admin"] for role in message.author.roles):
            try:
                args = message.content.split()
                member_id = int(args[1])
                member = await client.fetch_user(member_id)
                await message.guild.unban(member)
                await message.channel.send(f'Участник {member.display_name} был разбанен.')
                user = client.get_user(member_id)
                await user.send('Вы были разбанены на сервере ChatGPT Bot')
            except:
                await message.channel.send('Неправильный формат команды. Используйте: $unban <ID участника>')
        else:
            await message.channel.send('Вы не можете использовать эту команду.')

Ответы

▲ 0Принят

Всё очень просто. Сообщение, что неправильное использование команды, приходит потому, что в блоке try возникает ошибка, но не та, о которой вы думаете. Для этого в except нужно указывать конкретный тип ошибки, к примеру: except ZeroDivisionError. А ошибка как раз-таки в том, что бот не может отправить сообщение тому, кто не находится на сервере.