Skip to content

Bot #39

@sharofiddinyuldoshov655-arch

Description

bot.py

import sqlite3
import random
from aiogram import Bot, Dispatcher, types, executor
from aiogram.types import ParseMode
from datetime import datetime

================= CONFIG =================

BOT_TOKEN = "TELEGRAM_BOT_TOKEN"
ADMIN_ID = 123456789 # Sizning telegram ID
CHANNEL_USERNAME = "@siznikanal"

==========================================

bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot)

============== DATABASE ==================

conn = sqlite3.connect("pubg_bot.db")
cursor = conn.cursor()

cursor.execute("""
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
telegram_id INTEGER UNIQUE,
username TEXT,
balance INTEGER DEFAULT 0,
referral_id INTEGER,
joined_at TEXT DEFAULT CURRENT_TIMESTAMP
)
""")
conn.commit()

def add_user(telegram_id, username, referral_id=None):
cursor.execute("INSERT OR IGNORE INTO users (telegram_id, username, referral_id) VALUES (?, ?, ?)",
(telegram_id, username, referral_id))
conn.commit()

def update_balance(telegram_id, amount):
cursor.execute("UPDATE users SET balance = balance + ? WHERE telegram_id = ?", (amount, telegram_id))
conn.commit()

def get_user(telegram_id):
cursor.execute("SELECT * FROM users WHERE telegram_id = ?", (telegram_id,))
return cursor.fetchone()

def get_all_users():
cursor.execute("SELECT * FROM users")
return cursor.fetchall()

==========================================

=============== BOT HANDLERS ==============

@dp.message_handler(commands=["start"])
async def start(message: types.Message):
referral_id = None
if len(message.text.split()) > 1:
try:
referral_id = int(message.text.split()[1])
except:
referral_id = None

user = get_user(message.from_user.id)
if not user:
    add_user(message.from_user.id, message.from_user.username, referral_id)

    # Referral bonus
    if referral_id:
        update_balance(referral_id, 5)  # 5 UC bonus referral uchun

# Obuna tekshiruvi
try:
    chat_member = await bot.get_chat_member(CHANNEL_USERNAME, message.from_user.id)
    if chat_member.status in ["left", "kicked"]:
        await message.answer(f"Avvalo kanalga obuna bo‘ling: {CHANNEL_USERNAME}")
        return
except:
    await message.answer("Kanalni tekshirishda xatolik yuz berdi. Kanal username tekshiring.")
    return

await message.answer("Salom! Siz botga muvaffaqiyatli ulandingiz.\n\n/balance - Balansingizni ko‘rish\n/lucky - Lucky Spin o‘ynash")

@dp.message_handler(commands=["balance"])
async def balance(message: types.Message):
user = get_user(message.from_user.id)
if user:
await message.answer(f"Sizning balansingiz: {user[3]} UC")

@dp.message_handler(commands=["lucky"])
async def lucky(message: types.Message):
user = get_user(message.from_user.id)
if not user:
await message.answer("Avvalo /start bosing")
return
prize = random.choice([0, 5, 10, 20, 50])
update_balance(message.from_user.id, prize)
await message.answer(f"🎰 Lucky Spin natijasi: {prize} UC qo‘shildi!\nYangi balans: {get_user(message.from_user.id)[3]} UC")

================ ADMIN COMMANDS =============

@dp.message_handler(lambda message: message.from_user.id == ADMIN_ID, commands=["users"])
async def admin_users(message: types.Message):
users = get_all_users()
text = f"Foydalanuvchilar soni: {len(users)}\n\n"
for u in users:
text += f"ID:{u[1]} | Username: @{u[2]} | Balance: {u[3]} UC\n"
await message.answer(text)

@dp.message_handler(lambda message: message.from_user.id == ADMIN_ID, commands=["add"])
async def admin_add(message: types.Message):
try:
parts = message.text.split()
tg_id = int(parts[1])
amount = int(parts[2])
update_balance(tg_id, amount)
await message.answer(f"{amount} UC foydalanuvchi {tg_id} balansiga qo‘shildi!")
except:
await message.answer("Xatolik! Format: /add <telegram_id> ")

==========================================

if name == "main":
executor.start_polling(dp, skip_updates=True)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions