Чрезвычайно новый для разногласий ботов.Я хочу ограничить команду очистки только для сообщений владельцу.Я также хотел бы вернуть простое сообщение «у вас нет прав для использования этой команды», если пользователь, вызывающий команду, не имеет разрешения.В настоящее время я написал следующее:
async def is_owner(ctx):
return ctx.author.id == *my userid*
@client.command(pass_context=True)
@commands.check(is_owner)
async def clear(ctx, amount=5):
channel = ctx.message.channel
messages = []
async for message in client.logs_from(channel, limit=int(amount)):
messages.append(message)
await client.delete_messages(messages)
await client.say('Messages deleted')
Хотя это работает, в настоящее время любой пользователь, который запускает его, может выполнить команду.Не уверен, что мне не хватает.Я ценю любые указания или советы по исправлению этой проблемы.
Ошибка после внесения исправления def is_owner (ctx) выглядит следующим образом:
Ignoring exception in on_message
Traceback (most recent call last):
File "F:\Python\lib\site-packages\discord\client.py", line 307, in _run_event
yield from getattr(self, event)(*args, **kwargs)
File "F:\Python\lib\site-packages\discord\ext\commands\bot.py", line 857, in on_message
yield from self.process_commands(message)
File "F:\Python\lib\site-packages\discord\ext\commands\bot.py", line 846, in process_commands
yield from command.invoke(ctx)
File "F:\Python\lib\site-packages\discord\ext\commands\core.py", line 367, in invoke
yield from self.prepare(ctx)
File "F:\Python\lib\site-packages\discord\ext\commands\core.py", line 344, in prepare
self._verify_checks(ctx)
File "F:\Python\lib\site-packages\discord\ext\commands\core.py", line 338, in _verify_checks
if not self.can_run(ctx):
File "F:\Python\lib\site-packages\discord\ext\commands\core.py", line 438, in can_run
return all(predicate(context) for predicate in predicates)
File "F:\Python\lib\site-packages\discord\ext\commands\core.py", line 438, in <genexpr>
return all(predicate(context) for predicate in predicates)
File "f:\Discord Bots\First\bot.py", line 19, in is_owner
return ctx.author.id == 'MY USERID'
AttributeError: 'Context' object has no attribute 'author'