我如何在bot中执行参考系统?

2024-04-19 04:24:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我在代码中使用此选项:

            get_id = message.text.split(' ')[-1] #get ref
            print(get_id) ###print /start or /start id
            ref_id = int(get_id)
            if get_id != usr_id[user_id]:
                query = "INSERT INTO refers (`usr_id`, `ref_ids`) VALUES (%s, %s);"
                cursor = connect.cursor()
                cursor.execute(query, (usr_id[user_id], ref_id))
                query_two = "UPDATE users SET invited = invited + 1 WHERE usr_id = %s"
                curs = connect.cursor()
                curs.execute(query_two, usr_id[user_id])
                connect.commit()

如果我确实得到了\u id=message.text.split(“”)[1] 得到

out of range this

如果[-1],则

ValueError: invalid literal for int() with base 10: '/start'

每次都去。我不知道我能做什么。有人能帮我吗


1条回答
网友
1楼 · 发布于 2024-04-19 04:24:06

如果您可能有/start/start id,那么您应该在尝试获取[1]或甚至[-1]之前检查len(message.text.split(' '))。如果len()给出了1,那么您只有/start,并且没有可以转换为int的数字,您应该跳过它或使用一些默认值

您可能还需要try/except,因为用户可能会将文本(即Hello)而不是数字放进去

parts = message.text.split(' ')

if len(parts) < 2:
    print("WARNING: you forgot ID")
    return

try:
    ref_id = int(parts[1])
except ValueError:
    print("WARNING: ID has to be integer number")
    return

# ... rest ...

相关问题 更多 >