#python #python-3.x #asynchronous #discord #discord.py
Вопрос:
я добавляю функцию в своего бота discord, которая позволит вам отключить команду в определенном канале. Все работает идеально, кроме фактического отключения командной части.
@bot.event
async def on_command(ctx):
try:
with open('serverdata.json', 'r') as f:
data = json.load(f)
await update_server_data(data, ctx.channel.guild)
storage = data[f'{ctx.channel.guild.id}']["channels"][f'{ctx.channel.id}']["disabled_commands"]
if str(ctx.command) in storage:
await ctx.channel.send(f'{ctx.command} is disabled in this channel!')
# somehow stop command from working
except:
pass
Есть ли для этого какая-то встроенная функция или мне придется использовать другой метод? Я бы предпочел не добавлять новый код к каждой отдельной команде. Мы ценим любую помощь
Ответ №1:
Вы можете отключить команду, написав оператор if в самом определении команды, оператор if может написать сообщение пользователю и завершит функцию возвращением. Пример:
@bot.command()
async def an_example_comand(ctx, *, some_parameters):
if not command_allowed():
await ctx.send("This command is not allowed in this channel.")
return
# Here should be the code to be executed if the command is allowed.
# The command_allowed() function should return a boolean.
# If it returns False then the command won't run.
Комментарии:
1. Есть ли способ отменить команды внутри события on_command? Или это единственный способ