discord.py-机器人不响应多个连接的消息 [英] discord.py - bot doesn't respond to multiple connected messages

查看:102
本文介绍了discord.py-机器人不响应多个连接的消息的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使不和谐的机器人用Python讲笑话。但是,特别是关于敲敲笑话,我无法让漫游器在用户回复谁在那儿之后做出回应。
您能帮我吗?

I am trying to make a discord bot tell jokes in Python. However, specifically with the Knock Knock jokes, I can't get the bot to respond after the user's responds with "who's there". Can you help me please?

@bot.command(pass_context=True)
async def joke(ctx, type):

    if type.lower() == "ym":
        yo_momma = ("fat, I took a picture of her last Christmas and it's still printing.",
               "fat when she got on the scale it said, 'I need your weight not your phone number.'",
               "fat and old when God said, 'Let there be light', he asked your mother to move out of the way.",
               "fat she doesn't need the internet, because she's already world wide.",
               "fat, when she sat on an iPod, she made the iPad!",
               "fat she walked past the TV and I missed 3 episodes.",
               "ugly when she tried to join an ugly contest they said, 'Sorry, no professionals.'",
               "ugly she made One Direction go another direction.",
               "ugly Fix-It Felix said, 'I can\'t fix it.'"
               "stupid when an intruder broke into her house, she ran downstairs, dialed 9-1-1 on the microwave, and couldn't find the 'CALL' button.",
               "stupid she stuck a battery up her ass and said, 'I GOT THE POWER!'",
               "stupid that she sat on the TV to watch the couch.")
        await bot.say("Yo momma so {}".format(random.choice(yo_momma)))

    elif type.lower() == "kk":
        await bot.send_message(ctx.message.channel, "Knock Knock.")

        if "who's there" in ctx.message.content.lower():
            kk = [["A little old lady", "All this time, I did not know you could yodel."],
              ["Cow says", "Cow says mooooo!"],
              ["Etch", "Bless you, friend."],
              ["Robin", "Now hand over the cash."],
              ["Cash", "No thanks, I'll have some peanuts."],
              ["Mustache", "I mustache you a question, but I'll shave it for later."],
              ["Tank", "You're welcome."],
              ["Candice", "Candice door open, or what?"],
              ["Boo", "No need to cry, it's only a joke."],
              ["Howl", "Howl you know unless you open this door?"],
              ["Iran", "Iran all the way here. Let me in already!"]]

        joke_num = random.randint(0, 9)
        chosen_joke = [kk[joke_num][0], kk[joke_num][1]]
        await bot.say(chosen_joke[0])

        if "{} who".format(chosen_joke[0]) in ctx.message.content.lower():
            await bot.say(chosen_joke[1])


推荐答案

您可以使用 wait_for_message 具有 check 函数,以等待来自具有特定内容的某些用户的消息:

You can use wait_for_message with a check function to wait for messages from certain users with certain content:

elif type.lower() == "kk":
    await bot.send_message(ctx.message.channel, "Knock Knock.")

    check = lambda m: "who's there" in m.content.lower()
    await bot.wait_for_message(author=ctx.message.author, channel=ctx.message.channel, check=check)
    kk = [["A little old lady", "All this time, I did not know you could yodel."],
          ["Cow says", "Cow says mooooo!"],
          ["Etch", "Bless you, friend."],
          ["Robin", "Now hand over the cash."],
          ["Cash", "No thanks, I'll have some peanuts."],
          ["Mustache", "I mustache you a question, but I'll shave it for later."],
          ["Tank", "You're welcome."],
          ["Candice", "Candice door open, or what?"],
          ["Boo", "No need to cry, it's only a joke."],
          ["Howl", "Howl you know unless you open this door?"],
          ["Iran", "Iran all the way here. Let me in already!"]]

    joke_num = random.randint(0, 9)
    chosen_joke = [kk[joke_num][0], kk[joke_num][1]]
    await bot.say(chosen_joke[0])


    check = lambda m: "{} who".format(chosen_joke[0]) in m.content.lower()
    await bot.wait_for_message(author=ctx.message.author, channel=ctx.message.channel, check=check)
    await bot.say(chosen_joke[1])

这篇关于discord.py-机器人不响应多个连接的消息的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆