Title: Bot · Issue #39 · digitalocean/sample-python · GitHub
Open Graph Title: Bot · Issue #39 · digitalocean/sample-python
X Title: Bot · Issue #39 · digitalocean/sample-python
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_...
Open Graph Description: bot.py import sqlite3 import random from aiogram import Bot, Dispatcher, types, executor from aiogram.types import ParseMode from datetime import datetime ================= CONFIG =================...
X Description: bot.py import sqlite3 import random from aiogram import Bot, Dispatcher, types, executor from aiogram.types import ParseMode from datetime import datetime ================= CONFIG =================...
Opengraph URL: https://github.com/digitalocean/sample-python/issues/39
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Bot","articleBody":"# bot.py\nimport sqlite3\nimport random\nfrom aiogram import Bot, Dispatcher, types, executor\nfrom aiogram.types import ParseMode\nfrom datetime import datetime\n\n# ================= CONFIG =================\nBOT_TOKEN = \"TELEGRAM_BOT_TOKEN\"\nADMIN_ID = 123456789 # Sizning telegram ID\nCHANNEL_USERNAME = \"@siznikanal\"\n# ==========================================\n\nbot = Bot(token=BOT_TOKEN)\ndp = Dispatcher(bot)\n\n# ============== DATABASE ==================\nconn = sqlite3.connect(\"pubg_bot.db\")\ncursor = conn.cursor()\n\ncursor.execute(\"\"\"\nCREATE TABLE IF NOT EXISTS users (\n id INTEGER PRIMARY KEY,\n telegram_id INTEGER UNIQUE,\n username TEXT,\n balance INTEGER DEFAULT 0,\n referral_id INTEGER,\n joined_at TEXT DEFAULT CURRENT_TIMESTAMP\n)\n\"\"\")\nconn.commit()\n\ndef add_user(telegram_id, username, referral_id=None):\n cursor.execute(\"INSERT OR IGNORE INTO users (telegram_id, username, referral_id) VALUES (?, ?, ?)\",\n (telegram_id, username, referral_id))\n conn.commit()\n\ndef update_balance(telegram_id, amount):\n cursor.execute(\"UPDATE users SET balance = balance + ? WHERE telegram_id = ?\", (amount, telegram_id))\n conn.commit()\n\ndef get_user(telegram_id):\n cursor.execute(\"SELECT * FROM users WHERE telegram_id = ?\", (telegram_id,))\n return cursor.fetchone()\n\ndef get_all_users():\n cursor.execute(\"SELECT * FROM users\")\n return cursor.fetchall()\n# ==========================================\n\n# =============== BOT HANDLERS ==============\n@dp.message_handler(commands=[\"start\"])\nasync def start(message: types.Message):\n referral_id = None\n if len(message.text.split()) \u003e 1:\n try:\n referral_id = int(message.text.split()[1])\n except:\n referral_id = None\n\n user = get_user(message.from_user.id)\n if not user:\n add_user(message.from_user.id, message.from_user.username, referral_id)\n\n # Referral bonus\n if referral_id:\n update_balance(referral_id, 5) # 5 UC bonus referral uchun\n\n # Obuna tekshiruvi\n try:\n chat_member = await bot.get_chat_member(CHANNEL_USERNAME, message.from_user.id)\n if chat_member.status in [\"left\", \"kicked\"]:\n await message.answer(f\"Avvalo kanalga obuna bo‘ling: {CHANNEL_USERNAME}\")\n return\n except:\n await message.answer(\"Kanalni tekshirishda xatolik yuz berdi. Kanal username tekshiring.\")\n return\n\n await message.answer(\"Salom! Siz botga muvaffaqiyatli ulandingiz.\\n\\n/balance - Balansingizni ko‘rish\\n/lucky - Lucky Spin o‘ynash\")\n\n@dp.message_handler(commands=[\"balance\"])\nasync def balance(message: types.Message):\n user = get_user(message.from_user.id)\n if user:\n await message.answer(f\"Sizning balansingiz: {user[3]} UC\")\n\n@dp.message_handler(commands=[\"lucky\"])\nasync def lucky(message: types.Message):\n user = get_user(message.from_user.id)\n if not user:\n await message.answer(\"Avvalo /start bosing\")\n return\n prize = random.choice([0, 5, 10, 20, 50])\n update_balance(message.from_user.id, prize)\n await message.answer(f\"🎰 Lucky Spin natijasi: {prize} UC qo‘shildi!\\nYangi balans: {get_user(message.from_user.id)[3]} UC\")\n\n# ================ ADMIN COMMANDS =============\n@dp.message_handler(lambda message: message.from_user.id == ADMIN_ID, commands=[\"users\"])\nasync def admin_users(message: types.Message):\n users = get_all_users()\n text = f\"Foydalanuvchilar soni: {len(users)}\\n\\n\"\n for u in users:\n text += f\"ID:{u[1]} | Username: @{u[2]} | Balance: {u[3]} UC\\n\"\n await message.answer(text)\n\n@dp.message_handler(lambda message: message.from_user.id == ADMIN_ID, commands=[\"add\"])\nasync def admin_add(message: types.Message):\n try:\n parts = message.text.split()\n tg_id = int(parts[1])\n amount = int(parts[2])\n update_balance(tg_id, amount)\n await message.answer(f\"{amount} UC foydalanuvchi {tg_id} balansiga qo‘shildi!\")\n except:\n await message.answer(\"Xatolik! Format: /add \u003ctelegram_id\u003e \u003camount\u003e\")\n\n# ==========================================\n\nif __name__ == \"__main__\":\n executor.start_polling(dp, skip_updates=True)","author":{"url":"https://github.com/sharofiddinyuldoshov655-arch","@type":"Person","name":"sharofiddinyuldoshov655-arch"},"datePublished":"2026-04-03T15:38:55.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/39/sample-python/issues/39"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:b5805c87-8277-0af7-7ce3-3c1ef13dbb7f |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | 952A:1C9FF9:15C6FCD:1E44335:6A61C74C |
| html-safe-nonce | c3f48b929ec20cd90d7442376894fca4487c4bb6d8973fd5ed9af41efb0f367e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI5NTJBOjFDOUZGOToxNUM2RkNEOjFFNDQzMzU6NkE2MUM3NEMiLCJ2aXNpdG9yX2lkIjoiMjExNzg2NjI1MTA5NjI3ODg2MCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 85ce4176aeba08d55babc1790b84215fa1feb12c09cb89bd8eacb511f16e6e81 |
| hovercard-subject-tag | issue:4201092796 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/digitalocean/sample-python/39/issue_layout |
| twitter:image | https://opengraph.githubassets.com/4b9d9179d44f2b21539c2471dd63c03042ca70e71553d2e900be8c88b90b1b73/digitalocean/sample-python/issues/39 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/4b9d9179d44f2b21539c2471dd63c03042ca70e71553d2e900be8c88b90b1b73/digitalocean/sample-python/issues/39 |
| og:image:alt | bot.py import sqlite3 import random from aiogram import Bot, Dispatcher, types, executor from aiogram.types import ParseMode from datetime import datetime ================= CONFIG =================... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | sharofiddinyuldoshov655-arch |
| hostname | github.com |
| expected-hostname | github.com |
| None | 6f4633bcf01c1ad14b73fd07dd39ac31d61f3d3c2578ee08ec1792b7b351eeb9 |
| turbo-cache-control | no-preview |
| go-import | github.com/digitalocean/sample-python git https://github.com/digitalocean/sample-python.git |
| octolytics-dimension-user_id | 4650108 |
| octolytics-dimension-user_login | digitalocean |
| octolytics-dimension-repository_id | 280198175 |
| octolytics-dimension-repository_nwo | digitalocean/sample-python |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 280198175 |
| octolytics-dimension-repository_network_root_nwo | digitalocean/sample-python |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | ac296ae7f21856f1f92adbad22f870b6fbb4b907 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width