Discord.py |如何只检查作者消息?

Discord.py | How to only check for author message?

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

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

任何答案将不胜感激!

如果 student_number 只包含数字,

student_number.isalnum() 将始终 return 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() 的棘手逻辑。