Как сделать реферальную систему в боте? - PullRequest
0 голосов
/ 12 июля 2020

Я использую это в своем коде:

            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()

если я делаю get_id = message.text.split ('') [1], получаю

вне диапазона это

if [-1], то

ValueError: недопустимый литерал для int () с базой 10: '/ start'

get каждый раз. Я не знаю, что мне делать. Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 12 июля 2020

Если у вас может быть /start или /start id, тогда вы должны проверить len(message.text.split(' ')), прежде чем пытаться получить [1] или даже [-1]. Если len() дает 1, тогда у вас есть только /start, и нет числа, которое вы могли бы преобразовать в int, и вы должны пропустить его или использовать какое-либо значение по умолчанию.

Возможно, вам также понадобится try/except, потому что пользователь может ввести текст (ie. 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 ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...