Discord бот не отвечает на command

Рейтинг: 0Ответов: 2Опубликовано: 10.08.2023

Я пишу бота для дискорда, я зарегистрировался на сайте для разработчиков, создал бота, все Privileged Gateway Intents сделал положительными, добавил бота на сервер (у бота есть настройки администратора), функции event работают, но функции command - нет (в url-генераторе я выбрал applications.commands). В чём может быть проблема?

Вот код (в коде, запускаемом мной token есть):

import random
import discord
from discord.ext import commands

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

config = {
    'token': '#',
    'prefix': '!',
}

bot = commands.Bot(config['prefix'], intents=intents)


@bot.command(name='random')
async def rand(ctx):
    if ctx.author != bot.user:
        await ctx.reply(str(random.randint(1, 100)))


@bot.command
async def ping(ctx):
    await ctx.send('pong')


bot.run(config['token'])

Ответы

▲ 0Принят

Во-первых, вы должны указывать имя команды, чтобы не получить такую ошибку:

discord.ext.commands.errors.CommandNotFound: Command "random" is not found

Так же замените intents.default() на intents.all(). Ниже исправленная версия всего вашего кода.

import random
import discord
from discord.ext import commands

intents = discord.Intents.all()


config = {
    'token': '#',
    'prefix': '!',
}

bot = commands.Bot(config['prefix'], intents=intents)


@bot.command(name='random')
async def rand(ctx):
    if ctx.author != bot.user:
        await ctx.reply(str(random.randint(1, 100)))


@bot.command(name = 'ping')
async def ping(ctx):
    await ctx.send('pong')


bot.run(config['token'])
▲ 0

Декоратор команд: В команде отсутствуют круглые скобки они должны присутствовать для определения команды с декоратором. Так должно быть:

@bot.command()