在我的不和谐机器人中,我有一些代码要求用户在一个命令中输入几次,是否有办法在触发时停止另一个命令,甚至强制机器人停止运行并重新启动,从而又有一个机器人命令。完全?这是我的一些较小的代码,我想保持相同的格式和所有内容,只是一个打破该命令的命令。
@client.command()
@commands.has_any_role("Betauri Members")
async def wsadd(ctx):
async def get_input_of_type(func):
global sentdex_guild
while True:
try:
msg = await client.wait_for('message', check=check)
return func(msg.content)
except ValueError:
continue
def check(m):
return m.content == m.content and m.channel == channel and m.author == ctx.author
channel = ctx.channel
await channel.send('type your ign, example...')
await channel.send('aaaafireball')
await channel.send('(dont retype $wslist)')
name = await get_input_of_type(str)
name = name+':'
await channel.send('type bs mods, example...')
await channel.send('bs: battery10,delta4,tw1,barrier1')
bs = await get_input_of_type(str)
await channel.send('type first support ship mods, example...')
await channel.send('miner: tw1,genesis1')
sup1 = await get_input_of_type(str)
await channel.send('type second support ship mods, example...')
await channel.send('trans: tw1,dispatch1')
sup2 = await get_input_of_type(str)
答案 0 :(得分:0)
您可以编写检查以使它引发异常,而不是在看到某些类型的消息时返回伪造的值:
class AbortWait(Exception):
pass
def check(m):
if m.content == 'abort':
raise AbortWait
return m.content == m.content and m.channel == channel and m.author == ctx.author
如果命令结束后想要特殊行为,还可以在错误处理程序中处理错误
@wsadd.error
async def wadd_error(ctx, error):
if isinstance(error, commands.CommandInvokeError) and isinstance(error.original, AbortWait):
await ctx.send("Command aborted")
else:
raise error
答案 1 :(得分:0)
嗯..
在检查用户是否要退出的每一步之后,logto=/var/www/app.com/logs/uwsgi/app.com-0.log
logto2=/var/www/app.com/logs/uwsgi/app.com-normaluser-0.log
语句又如何呢?
就像:
function post(){
$("#message").keydown(function (e) {
e.preventDefault();
if (e.keyCode == 13) {
var message=document.getElementById("message").value;
$.post('response.php',{postmessage:message},
function(data){
var result = $('#post_message').html(data);
console
return result; });
}
});
}