首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多场景用户输入Discord.py

多场景用户输入Discord.py
EN

Stack Overflow用户
提问于 2021-02-10 18:37:17
回答 1查看 72关注 0票数 0

在给定提示(Message1)时,用户应该能够响应左侧、右侧或静止不动,discord机器人将提供自定义消息(Message2-4中的任意一个)。我尝试创建多个检查来检测不同的用户响应,但都无济于事。我在网上寻找了其他解决方案,其中一些提到了使用asyncio,但我不太熟悉它,即使使用它,也无法解决问题。感谢任何帮助,我是python的新手。谢谢。

代码如下:

代码语言:javascript
复制
if message.content.startswith('gametest'):
        channel = message.channel
        await channel.send('Would you like to play?')

        def check(m):
            return m.content == 'yes' and m.channel == channel

        msg = await client.wait_for('message', check=check)
        await channel.send('Message1')

        def check2(m):
            return m.content == 'left' and m.channel == channel
        def check3(m):
            return m.content == 'right' and m.channel == channel
        def check4(m):
            return m.content == 'stay still' and m.channel == channel

        msg2 = await client.wait_for('message', timeout=30.0, check=check2)
        await channel.send('Message2')

        msg3 = await client.wait_for('message', timeout=30.0, check=check3)
        await channel.send('Message3')

        msg4 = await client.wait_for('message', timeout=30.0, check=check4)
        await channel.send('Message4')
EN

回答 1

Stack Overflow用户

发布于 2021-02-10 20:34:16

您可以比较消息内容是否在列表中

代码语言:javascript
复制
>>> content = 'right'
>>> valid_responses = ['right', 'left', 'stay still']
>>> content in valid_responses
True

您可以在check函数中使用相同的原则

代码语言:javascript
复制
def check(m):
    return m.content in ['right', 'left', 'stay still'] and m.channel == channel

如果希望它不区分大小写,可以使用str.lower()方法

代码语言:javascript
复制
def check(m):
    return m.content.lower() in ['right', 'left', 'stay still'] and m.channel == channel
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66135232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档