[英]Cancel command with before_invoke without printing error message (discord.py)
我有一个不和谐的机器人,除非填充某个参数,否则我想阻止它运行。
这是机器人的当前代码:
@bot.before_invoke
async def checkguild(message):
command = message.command
if command != 'settings':
if not message.guild.id in globaldb.servers_setup.val:
for required_setting in REQUIRED_SETTINGS: # Iterates through the required settings to make sure they're all defined.
if not get_guild_db(message.guild).settings.has(required_setting):
# Prevent command from running, and call the on_command_error function instead of just throwing an error.
globaldb.set('servers_setup', globaldb.servers_setup.val + [message.guild.id])
globaldb.save() # Otherwise add the server to the database as set up.
我想按照中间的评论说,
# Prevent command from running, and call the on_command_error function instead of just throwing an error.
但我该怎么做呢? (检查下面的答案)
为了使用 discord.ext.commands 提供的错误系统,我们必须引发它的CommandError
异常。
这将像这样实现:
@bot.before_invoke
async def checkguild(message):
command = message.command
if command != 'settings':
if not message.guild.id in globaldb.servers_setup.val:
for required_setting in REQUIRED_SETTINGS: # Iterates through the required settings to make sure they're all defined.
if not get_guild_db(message.guild).settings.has(required_setting):
# Prevent command from running, and call the on_command_error function instead of just throwing an error.
raise discord.ext.commands.CommandError(f'Before using this bot, please set the `{required_setting}` setting.')
globaldb.set('servers_setup', globaldb.servers_setup.val + [message.guild.id])
globaldb.save() # Otherwise add the server to the database as set up.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.