我正在制作一个命令,以启用/禁用每个通道的机器人命令。尽管在数据库中找到命令时无法取消命令。
$(document).ready(function() {
event.preventDefault();
$('#calendar').fullCalendar({
defaultDate: '2019-05-31',
editable: true,
eventLimit: true,
events: [
{% for i in sales_events %} // gives error
{ title: "i.title", }
{% endfor %}
]
});
});
该代码有效,它检查命令是否在数据库中,如果是,则机器人说“该命令在该通道中被禁用”。但是,继续执行实际命令。
我希望它不再继续执行实际命令,而只说“该命令在该通道中被禁用”。如果在数据库中找到了该命令。
答案 0 :(得分:1)
您可以编写引发自定义异常的检查,然后在所有命令中的自定义异常处理程序中处理该异常。下面的代码仅要求您编写一些command_is_disabled
函数来实际确定该命令是否被禁用。
from discord.ext.commands import DisabledCommand, check, Bot
bot = Bot("!")
class DisabledInChannel(DisabledCommand):
pass
def check_disabled():
def predicate(ctx):
if command_is_disabled(ctx.command.name, ctx.channel.id):
raise DisabledInChannel(f"{ctx.command.name} is disabled in {ctx.channel.name}")
return True
return check(predicate)
@bot.command()
@check_disabled()
async def some_command(ctx):
...
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, DisabledInChannel):
await ctx.send(error.message)
else:
raise error