Почему я не могу создать команду в Discord.py ?

#python #discord.py

#питон #discord.py

Вопрос:

Как создать Discord.py командовать?

На самом деле, он вообще ничего не показывает в консоли, что мне делать?

Ошибки нет, ничего не выполняется.

 import discord
import time

from discord.ext import commands

client = commands.Bot(command_prefix='/')

# This detects when the bot started.

@client.event
async def on_ready():

    print(f'{client.user.name} is ready!')

# This detects when someone sends a message.

@client.event
async def on_message(message):

    if message.author == client.user:

        return

    if 'fuck' in message.content:

        await message.delete()

        async with message.channel.typing():

            time.sleep(1)

        await message.channel.send('You cannot swear in this discord server!')

    if 'shit' in message.content:

        await message.delete()

        async with message.channel.typing():

            time.sleep(1)

        await message.channel.send('You cannot swear in this discord server!')

    if 'bitch' in message.content:

        await message.delete()

        async with message.channel.typing():

            time.sleep(1)

        await message.channel.send('You cannot swear in this discord server!')

    if 'https://' in message.content:

        await message.delete()

        async with message.channel.typing():

            time.sleep(1)

        await message.channel.send('You cannot send links in this discord server!')

# This cteates a command.

@commands.command()
async def test(ctx, arg):

    async with message.channel.typing():

        time.sleep(1)

    await ctx.send(arg)

client.add_command(test)

client.run('TOKEN')
 

Ответ №1:

Вам нужно добавить client.process_commands в конце on_message события.

 async def on_message(message):
    # ...

    await client.process_commands(message)
 

Еще одна ошибка в вашем коде заключается в том, что вы не определяете message в test команде, вы можете исправить это с помощью Context.message атрибута

 async with ctx.message.typing():
    # ...

# Or
async with ctx.typing():
    # ...
 

Также вы можете просто использовать client.command декоратор вместо commands.command , чтобы вам не нужно было добавлять строку client.add_command

 @client.command()
async def test(ctx, arg):
    # ...
 

Ссылка:

Комментарии:

1. Не забудьте принять ответ, если он помог!