discord.py Почему @client.command не работает?

#python #python-3.x #discord.py #bots

#python #python-3.x #discord.py #боты

Вопрос:

Ничего не происходит, когда я запускаю команду register . Я уже все перепробовал, но ничего не помогает (импорт discord импорт env из discord.ext импорт команд

 intents = discord.Intents.all()
client = commands.Bot(command_prefix='!', intents=discord.Intents.all())

TOKEN = env.discord_token("DISCORD_TOKEN")


@client.event
async def on_ready():
    print("Im ready to go : {0.user}".format(client))

@client.event
async def on_message(message):

    if message.author == client.user:
        return
    if message.content.startswith("!instagram"):
        await message.channel.send('https://www.instagram.com')
    if message.content.startswith("!youtube"):
        await message.channel.send("https://www.youtube.com/channel/fsaf!212faf")

#Dont work
@client.command
async def register(ctx, arg1, arg2):
    await ctx.send(arg2, arg1)



@client.event
async def on_member_join(member):
    role_1 = member.guild.get_role(807733964214321878)
    await member.add_roles(role_1)

client.run(TOKEN)
 

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

1. Как вы «запускаете» команду? Как вы думаете, что должно произойти, когда вы это сделаете?

2. Я пишу боту в личных сообщениях «!reg» и аргумент, он должен вернуть мне этот аргумент, но он ничего не делает

Ответ №1:

На самом деле, это не

 @client.command
 

Правильный способ его использования..

 @client.command(name="Command name", description="Command Description")
 

Аргументы ‘name’ и ‘description’ являются необязательными..

Еще одна вещь… Поскольку вы используете событие ‘on_message’.. Сделайте это…

 async def on_message(message):

    if message.author == client.user:
    return
    if message.content.startswith("!instagram"):
        await message.channel.send('https://www.instagram.com')
    if message.content.startswith("!youtube"):
        await message.channel.send("https://www.youtube.com/channel/fsaf!212faf")

    else:
        await client.process_commands(message)
 

Весь ваш код, по моему мнению:

 import discord 
import env 
from discord.ext import commands

intents = discord.Intents.all()
client = commands.Bot(command_prefix='!', intents=discord.Intents.all())

TOKEN = env.discord_token("DISCORD_TOKEN")


@client.event
async def on_ready():
    print("Im ready to go : {0.user}".format(client))

@client.event
async def on_message(message):
    if message.author == client.user:
       return
    if message.content.startswith("!instagram"):
        await message.channel.send('https://www.instagram.com')
    elif message.content.startswith("!youtube"):
        await message.channel.send("https://www.youtube.com/channel/fsaf!212faf")
    else:
        await client.process_commands(message)


@client.command(name='reg')
async def register(ctx, arg1, arg2):
    await ctx.send(arg2, arg1)



@client.event
async def on_member_join(member):
    role_1 = member.guild.get_role(807733964214321878)
    await member.add_roles(role_1)

client.run(TOKEN)
 

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

1. Проверьте ответ еще раз… Я отредактировал его

2. Насколько я правильно понимаю, это необходимо добавить в конец сообщения def on, после чего выводится следующее: Игнорирование исключения в команде None: discord.ext.commands.errors. CommandNotFound: команда «reg» не найдена

3. Вы указали имя своей команды?? Я упростил ответ.

4. Да, я пытался это сделать: бот. add_command(reg), но ничего не меняется. Не могли бы вы исправить мой код своими собственными разработками? мне кажется, что я слишком глуп в этой теме

5. В вашем текстовом канале Discord… введите «!reg arg1 arg2»

Ответ №2:

Я почти уверен, что знаю ответ. Вы используете:

 @Client.command
 

Вот ошибка:

Предполагается, что вы должны использовать скобки после command , т. Е. Вы должны использовать:

 @Client.command()
 

Я думаю, это сработало бы. Если это не сработает, скажите мне, чтобы я проверил это снова.

Спасибо!

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

1. Спасибо за ответ, но это не помогло (

Ответ №3:

Приведенный выше ответ неверен — да, рассуждения верны, НО помните: Python ЧУВСТВИТЕЛЕН К ЗАГЛАВНЫМ БУКВАМ.

Ошибка, которую вы допустили, очень проста, я даже не мог ее заметить.

Что вам нужно сделать, это:

 @client.command()
 

Теперь вы можете сказать, что нет никакой разницы между ответом выше и ответом, который я написал здесь, НО если вы внимательно посмотрите, в ответе выше меня была заглавная буква C.

Быть. Осторожно. On. Capital. Письма.

Кроме того, имя и описание являются необязательными внутри круглых скобок.

Если вам нужна дополнительная помощь, пожалуйста, напишите мне (офицер grr # 6609)

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

1. Что с большой буквы, что с маленькой. Это не работает без имени

2. @client.command всегда должно быть в НИЖНЕМ регистре