#python #discord #discord.py
#python #Discord #discord.py
Вопрос:
Я пытаюсь сделать что-то вроде команды ‘tempmute’, но продолжает появляться ошибка :
Traceback (most recent call last):
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/bot.py", line 939, in invoke
await ctx.command.invoke(ctx)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 863, in invoke
await injected(*ctx.args, **ctx.kwargs)
File "/opt/virtualenvs/python3/lib/python3.8/site-packages/discord/ext/commands/core.py", line 94, in wrapped
raise CommandInvokeError(exc) from exc
discord.ext.commands.errors.CommandInvokeError: Command raised an exception: NotFound: 404 Not Found (error code: 10011): Unknown Role
И вот код команды
@commands.command()
@commands.has_permissions(ban_members=True)
async def tempmute(self, ctx, member: discord.Member = None, * time):
if not member:
await ctx.send(embed=discord.Embed(title='Вы должны указать участника!', color=random.choice(colors)))
else:
LMUTED = discord.utils.get(ctx.message.guild.roles, name='LMUTED')
if not LMUTED:
perms=discord.Permissions(send_messages=False)
await ctx.guild.create_role(name='LMUTED',
colour=discord.Colour(0x0000FF),
permissions = perms)
await ctx.send(f'Я создал роль `{LMUTED}`!')
await member.add_roles(member, LMUTED)
await ctx.send(f'Я замьютил {member} на {time}!')
await s(time * 60)
await ctx.remove_roles(member, LMUTED)
Ответ №1:
Убедитесь, что вы знаете, как читать ошибки python.
Но основная проблема здесь в том, что вы не присваиваете LMUTED
значение после создания новой роли, поэтому оно остается None
неизменным и, таким образом discord.py не удается добавить роль.
Кроме того, имейте в виду, что когда вы выполняете действия, срок действия которых истекает со временем, просто спящий режим / ожидание в методе не является хорошим способом справиться с этим, поскольку поток может быть заблокирован. Вместо этого вы должны использовать какой-то планировщик. В основном вещь, которая ожидает определенное количество времени перед запуском некоторого кода.