Step-by-Step Complete Setup Guide
📋 Before We Start - Check Your Python Installation
1. Open PowerShell:
Press Windows + R

Type powershell

Press Enter

2. Check Python Version:
powershell
python --version
# Should show: Python 3.x.x

# If that doesn't work, try:
python3 --version
# Or on some systems:
py --version
📁 Create Your Project Folder
3. Navigate to Documents and Create Folder:
powershell
# Go to Documents folder
cd Documents

# Create a new folder using format: [firstname]_[surname initial]
# Example if your name is Ivan Lim:
mkdir ivan_l

# Go into your new folder
cd ivan_l

# Verify location
pwd
🎯 Get the Template Repository
4. Access the Template Repository:
Go to: https://gitea.techshare.cc/technolyceum/ai6-m3

Find the template named: [firstname]_[surname initial]_ai6-m3

Click on the template

Click the "Clone" button and copy the URL

5. Clone the Repository:
powershell
# Clone using the copied URL
git clone https://gitea.techshare.cc/technolyceum/ai6-m3/[firstname]_[surname initial]_ai6-m3.git

# Go into the cloned folder
cd [firstname]_[surname initial]_ai6-m3
🐍 Set Up Virtual Environment
6. Create and Activate Virtual Environment:
powershell
# Create virtual environment
python -m venv venv

# Activate it
.\venv\Scripts\Activate.ps1

# If you see a security warning:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
.\venv\Scripts\Activate.ps1
✅ Success: You should see (venv) at the start of your command line!

📝 Type Your Bot Code
7. Open Python IDLE:
powershell
# Open IDLE from PowerShell
python -m idlelib
8. Create app.py in IDLE:
In IDLE: Click File → New File

TYPE the following code line by line:

python
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters
import sqlite3

TOKEN = "TEACHER_WILL_PROVIDE_THIS"

waiting = {}

async def start(update, context):
    await update.message.reply_text("🤣 Joke Bot!\n/joke - get joke\n/addjoke - add joke")

async def joke(update, context):
    conn = sqlite3.connect('jokes.db')
    conn.execute('CREATE TABLE IF NOT EXISTS jokes (text TEXT, user TEXT, name TEXT)')
    joke = conn.execute("SELECT text FROM jokes ORDER BY RANDOM() LIMIT 1").fetchone()
    conn.close()
    await update.message.reply_text(joke[0] if joke else "No jokes! /addjoke to add one")

async def addjoke(update, context):
    waiting[update.effective_user.id] = True
    await update.message.reply_text("📝 Type your joke:")

async def handle_text(update, context):
    user_id = update.effective_user.id
    if user_id in waiting:
        conn = sqlite3.connect('jokes.db')
        conn.execute('CREATE TABLE IF NOT EXISTS jokes (text TEXT, user TEXT, name TEXT)')
        conn.execute("INSERT INTO jokes VALUES (?, ?, ?)", 
                    (update.message.text, user_id, update.effective_user.first_name))
        conn.commit()
        conn.close()
        del waiting[user_id]
        await update.message.reply_text("✅ Saved!")
    else:
        await update.message.reply_text("Try /start")

app = Application.builder().token(TOKEN).build()
app.add_handler(CommandHandler("start", start))
app.add_handler(CommandHandler("joke", joke))
app.add_handler(CommandHandler("addjoke", addjoke))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_text))
print("Bot running!")
app.run_polling()
Click File → Save As

Navigate to your project folder

Save as: app.py

Click Save

📦 Install Dependencies
9. Install Required Package:
powershell
# Make sure venv is activated
pip install python-telegram-bot

# Check installation
pip show python-telegram-bot
10. Create requirements.txt:
powershell
pip freeze > requirements.txt
Get-Content requirements.txt
🗄️ Explore SQLite Database Using GUI
11. First, Create the Database File:
powershell
# Run your bot once to create the database
python app.py

# You'll see an error about the token - that's OK
# Press Ctrl+C to stop it after 2 seconds
12. Install DB Browser for SQLite:
Go to: https://sqlitebrowser.org/dl/

Download the standard installer for Windows

Run the installer

Follow installation steps (just click Next)

Keep all default options

13. Open Your Database in DB Browser:
Open File Explorer (Windows key + E)

Navigate to your project folder:

text
C:\Users\YourName\Documents\[firstname]_[surname initial]\[firstname]_[surname initial]_ai6-m3
Find jokes.db file

Double-click jokes.db

It should open in DB Browser for SQLite

If it doesn't, open DB Browser first, then click "Open Database"

14. Explore Database in DB Browser:
Tab 1: Database Structure
See the jokes table

See the 3 columns: text, user, name

Check data types: TEXT, TEXT, TEXT

Tab 2: Browse Data
Click "Browse Data" tab

Select table: jokes

See any jokes already in the table

Table will be empty at first

15. Add Jokes Using DB Browser:
Click "Browse Data" tab

Click New Record button (or press Insert key)

Fill in the fields:

text: Your joke (e.g., "Why did the chicken cross the road?")

user: Your user ID number (e.g., 12345)

name: Your name (e.g., "Ivan")

Click Apply button to save

Add 2-3 jokes this way

16. Edit Jokes Using DB Browser:
Click on a joke in the table

Click inside any field

Change the text

Click Apply to save changes

17. Delete Jokes Using DB Browser:
Click on a joke row

Click Delete Record button (or press Delete key)

Click Apply to confirm

18. Run SQL Queries in DB Browser:
Click "Execute SQL" tab

Type SQL commands:

sql
-- See all jokes
SELECT * FROM jokes;

-- Count jokes
SELECT COUNT(*) FROM jokes;

-- See specific user's jokes
SELECT * FROM jokes WHERE name = 'Ivan';

-- Add a joke via SQL
INSERT INTO jokes VALUES ('What do you call a bear with no teeth? A gummy bear!', 999, 'SQLUser');
Click Execute (play button) to run

Click Write Changes to save

🔍 Quick Database Exploration Tasks
Task 1: View Empty Database
Open DB Browser

Open jokes.db

Check "Browse Data" tab

Table should be empty

Task 2: Add Jokes via GUI
Click "New Record"

Add 3 different jokes

Use different names for each

Save all with "Apply"

Task 3: View What You Added
Stay in "Browse Data" tab

Scroll to see all jokes

Notice each row has a rowid (automatic number)

Task 4: Edit a Joke
Click on any joke

Change the text

Click "Apply"

Task 5: Delete a Joke
Click on a joke row

Click "Delete Record"

Click "Apply"

Task 6: Use SQL Tab
Go to "Execute SQL" tab

Type: SELECT COUNT(*) FROM jokes;

Click "Execute"

See result in bottom pane

🎯 What You Should See in DB Browser
Database Structure:
Tables: 1 table (jokes)

Columns: text, user, name (all TEXT type)

Row count: Shows at bottom

After Adding Jokes:
Each row shows in table

Can sort by clicking column headers

Can filter using "Filter" box

File Size Growth:
Each joke adds to file size

File updates instantly when you click "Apply"

💡 Tips for DB Browser
Always click "Apply" after changes

"Write Changes" saves to disk

"Revert Changes" undoes unsaved changes

Use filter to find specific jokes

Export data if you want to backup

🔧 If Something Goes Wrong
Database won't open:
powershell
# Delete and recreate
Remove-Item jokes.db -ErrorAction SilentlyContinue

# Run bot to create fresh
python app.py
# Press Ctrl+C after error

# Now open in DB Browser
DB Browser not installed:
Go to https://sqlitebrowser.org/dl/

Download and install

Or use online SQLite viewer

Remember: DB Browser is the easiest way to see your database. No coding needed!

Note: Teacher will provide the Telegram bot token later. For now, practice adding and viewing jokes in DB Browser.