Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

Bot

Đang mở
#39 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
25/100
Loại issue
Tính năng
Độ rõ ràng
Cần làm rõ
Mức độ hoạt động
Ít trao đổi
Công nghệ
python, sqlite
Lĩnh vực
backend, databases

Hướng nghiên cứu

Issue chứa một listing của bot.py sử dụng Python, aiogram và SQLite, nhưng không nêu rõ thay đổi nào được mong muốn. Hãy bắt đầu bằng việc làm rõ tính năng dự kiến và cách tính năng đó nên phù hợp với ứng dụng mẫu; không có test, tệp mục tiêu nào ngoài bot.py hoặc tiêu chí chấp nhận nào được cung cấp, vì vậy hiện chưa thể xác minh việc hoàn thành.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

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)

Ngôn ngữ chính
Python
Star
63
Fork
340
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue tương tự

Thêm issue về Python

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.