Есть ли способ запечатлеть реакцию команды. Я сделал команду, которая удаляет канал, но я хотел бы спросить пользователя, уверены ли они в использовании реакций. Я хотел бы предотвратить реакцию других на это сообщение (должен реагировать только автор контекста).
Пока что я обнаружил только использование on_reaction_add()
, но это не может обнаружить пользователя, который отправилкоманда. Я хотел бы обновить команду только в том случае, если автором сообщения является тот, кто отреагировал на сообщение, а кто-либо еще, игнорирует его.
Обновление : я обнаружил, что wait_for()
делает именно то, чтоЯ хочу, но проблема сейчас в том, как проверить, установлена ли неправильная реакция? (т.е. если я нажму вторую реакцию, удалите сообщение)
if is_admin:
msg = await ctx.send('Clear: Are you sure you would like to purge this entire channel?')
emoji1 = u"\u2705"
emoji2 = u"\u274E"
await msg.add_reaction(emoji=emoji1)
await msg.add_reaction(emoji=emoji2)
def check(reaction, user):
return user == ctx.message.author and reaction.emoji == u"\u2705"
try:
reaction, user = await self.client.wait_for('reaction_add', timeout=10.0, check=check)
except asyncio.TimeoutError:
return await msg.delete()
else:
channel = ctx.message.channel
new_channel = await channel.clone(name=channel.name, reason=f'Clear Channel ran by {ctx.message.author.name}')
await new_channel.edit(position=channel.position)
await channel.delete(reason=f'Clear Channel ran by {ctx.message.author.name}')
await new_channel.send('Clear: Channel has now been cleared.', delete_after=7)
else:
await ctx.send(f"Sorry, you do not have access to this command.", delete_after=5)