#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 всегда должно быть в НИЖНЕМ регистре