import sqlite3
class Database:
def __init__(self, db_file):
self.connection = sqlite3.connect(db_file) # подключаеся к базе данных
self.cursor = self.connection.cursor()
def user_exists(self, user_id): # тут мы будем прверять есть ли реферал, или его нет
with self.connection: # это подклюцение к базе данных
result = self.cursor.execute("SELECT * FROM 'users' WHERE 'user_id' = ?", (user_id,)).fetchall()
return bool(len(result))
def add_user(self, user_id, referrer_id=None):
with self.connection:
if referrer_id != None:
return self.cursor.execute("INSERT INTO 'users' ('user_id', 'referrer_id') VALUES (?, ?)", (user_id, referrer_id,))
else:
return self.cursor.execute("INSERT INTO 'users' ('user_id') VALUES (?)", (user_id,))
def count_reeferals(self, referrer_id):
with self.connection:
return self.cursor.execute("SELECT COUNT('id') as count FROM 'users' WHERE 'referrer_id' = ?", (referrer_id,)).fetchone()[0]
Ниже код самого бота:
import logging
from aiogram import Bot, Dispatcher, executor, types
from aiogram.types import ReplyKeyboardMarkup, KeyboardButton, InlineKeyboardMarkup, InlineKeyboardButton
from db import Database
API_TOKEN = "iweu6cfnb88888884i734y7fnmv734ni - токен типо"
CHANNEL_ID = "-1006777796946"
BOT_ID = "salesman_test3_bot"
NOTSUB_MESSAGE = "Для того чтобы получить индикатора Possible Low подпишись на канал автора"
main_menu = ReplyKeyboardMarkup(resize_keyboard=True)
BtnReferal = KeyboardButton("Пригласить реферала")
main_menu.add(BtnReferal)
# Initialize bot and dispatcher
bot = Bot(token=API_TOKEN)
dp = Dispatcher(bot)
db = Database('database.db')
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
if message.chat.type == 'private':
if not db.user_exists(message.from_user.id): # если пользователь не зарегистрирован
start_command = message.text # /start0573496326
referrer_id = str(start_command[7:])
if str(referrer_id) != "":
if str(referrer_id) != str(message.from_user.id):
db.add_user(message.from_user.id, referrer_id)
try:
await bot.send_message(referrer_id, "По вашей ссылке зарегистроровался пользователь!")
# тут можем давать плюшки для нашего реферера
if db.count_reeferals(message.from_user.id) == 2:
await bot.send_message(referrer_id,
"Переходите и получайте инструкции: http nnn",
reply_markup=main_menu)
elif db.count_reeferals(message.from_user.id) == 1:
await bot.send_message(referrer_id, "Пригласите еще одного пользователя и получите ссылку")
else:
pass
except:
pass
else:
db.add_user(message.from_user.id) # регистрация пользователя обычным образом (не по реферальной ссылке)
await bot.send_message(message.from_user.id, "По собственной ссылке регистророваться нельзя!")
else:
db.add_user(message.from_user.id)
await bot.send_message(message.from_user.id, "Для того чтобы получить инструкции, пригласите 2 человек по реферальной ссылке", reply_markup=main_menu)