Реферальная система на Telebot
В ходе кода бот выдаёт сообщение "Реферал не найден", хотя должен отправить сообщение "Переводим деньги", но этого не происходит. В чём может быть ошибка?
КОД:
from telebot import TeleBot, types
import sqlite3, sys, pathlib
path = pathlib.Path(sys.argv[0]).parent.resolve()
bot = TeleBot(token='')
sql = sqlite3.connect(path / 'referalka.db', check_same_thread=False)
db = sql.cursor()
db.execute('''CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY UNIQUE NOT NULL, balance INTEGER DEFAULT 0 NOT NULL, referal INTEGER DEFAULT NULL)''')
sql.commit()
def referal_get(msg: list):
if len(msg) == 1:
return False
else:
return msg[1]
@bot.message_handler(commands=['start'])
def start(message: types.Message):
info = db.execute('SELECT * FROM users WHERE id=?', (message.from_user.id,))
if info.fetchone()!=None:
balance = db.execute('SELECT balance FROM users WHERE id=?', (message.from_user.id, ))
for b in balance:
bot.reply_to(message, f'Добро пожаловать в бота вновь\nТвоя реферальная ссылка: https://t.me/RETRYshop_bot?start={message.chat.id}\nТвой баланс: {b[0]}')
else:
ref = referal_get(message.text.split())
if ref==False:
db.execute(f'INSERT INTO users VALUES (?,?,?)', (message.from_user.id, 0, None, ))
sql.commit()
bot.reply_to(message, f'Добро подаловать в бота!\nТвоя реферальная ссылкa: https://t.me/RETRYshop_bot?start={message.chat.id}')
else:
try:
ref_ = int(ref)
info = db.execute('SELECT * FROM users WHERE id=?', (ref_, )).techone()
if info == None:
bot.reply_to(message, f'Реферал не найден, возможно он даже не зарегистрировался в боте.\nМы уже зарегистрировали вас в системе.\nТвоя реферальная ссылкa: https://t.me/RETRYshop_bot?start={message.chat.id}')
db.execute(f'INSERT INTO users VALUES (?,?,?)', (message.chat.id, 0, None, ))
sql.commit()
else:
bot.reply_to(message, f'Ты зарегистрировался от {ref_}. Добавляем тебя в базу данных')
db.execute(f'INSERT INTO users VALUES (?,?,?)', (message.chat.id, 0, ref_, ))
sql.commit()
try:
bot.send_message(ref_, f'Перечисляем Вам деньги за пользователя {message.from_user.first_name}')
db.execute('UPDATE users SET balance=balance+1 WHERE id=?', (ref_, ))
sql.commit()
except:
pass
except:
bot.reply_to(message, f'Реферал не найден, возможно он даже не зарегистрирован в боте.\nМы уже зарегистрировали вас в системе.\nТвоя реферальная ссылкa: https://t.me/RETRYshop_bot?start={message.from_user.id}')
db.execute(f'INSERT INTO users VALUES (?,?,?)', (message.from_user.id, 0, None,))
sql.commit()
bot.infinity_polling()