у всех количество рефералов равняется первому зареганному пользователю
main.py
# Импорты
import logging
from aiogram.utils.deep_linking import decode_payload
from aiogram import Bot, Dispatcher, executor, types, utils
from models import *
# Переменный
API_TOKEN = '5323293696:AAF8Zkh7PYDGwo1L2gHpoXznX2JNflBp2iU'
ref_link = 'https://telegram.me/{}?start={}'
channel_link = 'https://t.me/+OglTxoMwV-VmZmNi'
# Настройка
logging.basicConfig(level=logging.INFO)
# Иницилизация бота
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
# Базовые функции
# Хэндлер старта
@dp.message_handler(commands=['start'])
async def send_welcome(message: types.Message):
# Проверка базы данных
cur.execute('SELECT user_id FROM users')
users_id = cur.fetchall() # айди всех участников с табилцы
user_id = message.from_user.id # айди зареганного участника
if str(user_id) in str(users_id):
refferals_btn = types.KeyboardButton('Рефералы и ссылка')
chat_btn = types.KeyboardButton('Вступить в чат')
markup = types.ReplyKeyboardMarkup()
markup.add(refferals_btn, chat_btn)
await bot.send_message(message.chat.id, text = 'Ваш айди уже есть в базе данных', reply_markup = markup)
print
else:
# Реферальная система
start_command = message.text
refferer_id = str(start_command[7:])
if str(refferer_id) != "":
if str(refferer_id) != str(message.from_user.id):
add_user(message.from_user.id, str(0), refferer_id)
database.commit()
await bot.send_message(message.from_user.id, text = 'Успешно зарегистирован!')
try:
await bot.send_message(refferer_id, 'По вашей ссылке зарегистрировался пользователь!')
increase_ref(refferer_id)
except:
pass
else:
await bot.send_message(message.from_user.id, text = 'По собственной ссылке регистрироваться нельзя!')
else:
refferals_btn = types.KeyboardButton('Рефералы и ссылка')
chat_btn = types.KeyboardButton('Вступить в чат')
markup = types.ReplyKeyboardMarkup()
markup.add(refferals_btn, chat_btn)
await bot.send_message(message.from_user.id, text = 'Успешно зарегистирован!', reply_markup = markup)
add_user(message.from_user.id, str(0), str(0))
database.commit()
refferals_btn = types.KeyboardButton('Рефералы и ссылка')
chat_btn = types.KeyboardButton('Вступть в чат')
markup = types.ReplyKeyboardMarkup()
markup.add(refferals_btn, chat_btn)
@dp.message_handler()
async def func(message: types.Message):
user_channel_status = await bot.get_chat_member(chat_id='-1001546913296', user_id = message.from_user.id)
if user_channel_status["status"] != 'left':
if message.text == 'Вступить в чат':
await bot.send_message(message.from_user.id, text = 'типо чат')
elif message.text == 'Рефералы и ссылка':
bot_name = 'war3game_bot'
await bot.send_message(message.from_user.id, text = f'Приглашено рефералов: {count_refs(message.from_user.id)}\n'
f'\n'
f'Ваша реферальная ссылка: \n'
f'{ref_link.format(bot_name, message.from_user.id)}')
else:
await bot.send_message(message.from_user.id, 'Для пользованием бота нужно подписаться на канал: \n'
f'{channel_link}')
if __name__ == '__main__':
executor.start_polling(dp, skip_updates=True)
models.py
import sqlite3 as sq
import re
database = sq.connect('users.db')
cur = database.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS users(
id INT PRIMARY KEY AUTOINCREMENT
user_id INT,
refferals INT,
refferer_id INT
)""")
database.commit()
def add_user(user_id, refferals, refferer_id):
if refferer_id != None:
return cur.execute('INSERT INTO users(user_id, refferals, refferer_id) VALUES(?, ?, ?)', (user_id, str(0), refferer_id))
database.commit()
else:
return cur.execute('INSERT INTO users(user_id) VALUES(?)', (user_id))
database.commit()
def increase_ref(user_id):
cur.execute("SELECT refferals FROM users WHERE user_id = ?", (user_id, ))
refs1 = cur.fetchall()
for row in refs1:
refs = row[0]
refs = refs + 1
cur.execute('UPDATE users SET refferals = ?', str(refs))
database.commit()
def count_refs(user_id):
cur.execute('SELECT refferals FROM users WHERE user_id = ?', (user_id, ))
refs1 = cur.fetchall()
for row in refs1:
refs = row[0]
return refs
database.commit()