@egsehre

Почему мой дискорд бот не отвечает на команды?

Мой код не отвечает на команду !ban:

import discord
from discord.ext import commands

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

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print('Бот готов')

@bot.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, time: int, *, reason=None):
    guild = ctx.guild

    # Проверяем, имеет ли бот права на бан пользователей
    if not guild.me.guild_permissions.ban_members:
        return await ctx.send('У меня нет прав на бан пользователей!')

    # Забаниваем пользователя на указанное время
    await member.ban(reason=reason)

    # Отправляем сообщение об успешном бане
    await ctx.send(f'Пользователь {member.mention} успешно забанен на {time} час(ов) по причине: {reason or "Не указана"}')

    # Ожидаем указанное время и разбаниваем пользователя
    await discord.utils.sleep_until(ctx.message.created_at + discord.timedelta(hours=time))
    await member.unban(reason='Истекло время бана')
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@AlmazZzik
Приветствую!
Перво-наперво, если вы делаете команды, всегда нужен intent под название message_content, если вы используете discord.py версии 2.0 и выше.

Вот ваш исправленный код:
import discord
from discord.ext import commands

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

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print('Бот готов')

@bot.command()
@commands.has_permissions(ban_members=True)
async def ban(ctx, member: discord.Member, time: int, *, reason=None):
    guild = ctx.guild

    if not guild.me.guild_permissions.ban_members:
        return await ctx.send('У меня нет прав на бан пользователей!')

    await member.ban(reason=reason)

    await ctx.send(f'Пользователь {member.mention} успешно забанен на {time} час(ов) по причине: {reason or "Не указана"}')

    await discord.utils.sleep_until(ctx.message.created_at + discord.timedelta(hours=time))
    await member.unban(reason='Истекло время бана')

bot.run('ВАШ_ТОКЕН')
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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