【问题标题】:Discord.py | How to only check for author message?不和谐.py |如何只检查作者信息?
【发布时间】:2020-11-21 05:47:01
【问题描述】:

我正在创建一个机器人来验证成员是否在我们学校。由于某种原因,在输入学号后,机器人会要求再次输入而不是发送电子邮件

@client.event
async def on_member_join(member):
await member.send("You have joined the unofficial (school) discord server! To access the rest of the server you must "
                  "confirm you are from (our school).")
sent_email = False
confirmation_key = generate_key()
while not sent_email:
    await member.send('What is your student number? ')
    response = await client.wait_for('message')
    student_number = response.content
    if student_number.isalpha() or student_number.isalnum():
        await member.send("Please Enter Your Student Number!")
    elif student_number.isnumeric():
        send_mail(student_number, confirmation_key)
        sent_email = True
        await member.send(f'Sending Confirmation Email...')

任何答案将不胜感激!

【问题讨论】:

    标签: python discord.py discord.py-rewrite


    【解决方案1】:

    如果student_number 仅包含数字,student_number.isalnum() 将始终返回 True,因此您将永远无法达到 elif 的情况。

    稍微重新组织你的代码可能更有意义:

    if student_number.isnumeric():
            send_mail(student_number, confirmation_key)
            sent_email = True
            await member.send(f'Sending Confirmation Email...')
    else:
            await member.send("Please Enter Your Student Number!")
    

    据我了解,您只对两种情况感兴趣:

    1. 学号格式正确(只有数字)
    2. 学号格式错误

    通过这种方式,您可以处理这两种情况并摆脱 isalnum() 的棘手逻辑。

    【讨论】:

    • 这成功了!太感谢了。这绝对简化了它。我无缘无故地让它变得棘手。再次感谢你,你太棒了!
    猜你喜欢
    • 2021-06-11
    • 1970-01-01
    • 2022-01-17
    • 2019-07-18
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 2021-09-26
    相关资源
    最近更新 更多