如何让用户在需要时退出长不和谐命令?

时间:2019-07-12 13:59:35

标签: python discord.py

在我的不和谐机器人中,我有一些代码要求用户在一个命令中输入几次,是否有办法在触发时停止另一个命令,甚至强制机器人停止运行并重新启动,从而又有一个机器人命令。完全?这是我的一些较小的代码,我想保持相同的格式和所有内容,只是一个打破该命令的命令。

@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)

2 个答案:

答案 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; });
    }
});
}