Learn Coding
56 subscribers
21 links
Download Telegram
📌 init and Attributes

init runs automatically when you create an object
It is where you set the initial data for the object
self refers to the object itself

class User:
def init(self, name, age):
self.name = name
self.age = age

user1 = User("Ahmed", 22)
user2 = User("Sara", 19)

print(user1.name) # Ahmed
print(user2.age) # 19


self.name and self.age are attributes — data that belongs to each object
user1 has its own name and age, user2 has its own
They do not share data
Please open Telegram to view this post
VIEW IN TELEGRAM
📌Methods

Methods are functions that belong to a class
They always take self as the first parameter

class User:
def init(self, name, age):
self.name = name
self.age = age
self.is_banned = False

def greet(self):
print(f"Hello I am {self.name} and I am {self.age} years old")

def ban(self):
self.is_banned = True
print(f"{self.name} has been banned")

def status(self):
if self.is_banned:
print(f"{self.name}: Banned")
else:
print(f"{self.name}: Active")

user1 = User("Ahmed", 22)
user1.greet()
user1.ban()
user1.status()


Output:
Hello I am Ahmed and I am 22 years old
Ahmed has been banned
Ahmed: Banned
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Inheritance

A class can inherit from another class
It gets all the parent's attributes and methods for free
Then you add or override what you need

class User:
def init(self, name):
self.name = name

def greet(self):
print(f"Hello I am {self.name}")


class Admin(User): # Admin inherits from User
def init(self, name):
super().init(name) # call parent init
self.permissions = ["ban", "mute", "delete"]

def show_permissions(self):
print(f"{self.name} can: {', '.join(self.permissions)}")


admin = Admin("Ahmed")
admin.greet() # inherited from User
admin.show_permissions() # Admin's own method


super() calls the parent class
You will see this everywhere in aiogram and pyrogram code
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 How OOP Looks in Real Bot Code

When you write a Telegram bot you will see things like this:

from aiogram import Bot, Dispatcher
from aiogram.types import Message

bot = Bot(token="YOUR_TOKEN") # creating an object from the Bot class
dp = Dispatcher() # creating an object from the Dispatcher class

@dp.message()
async def handle(message: Message): # Message is a class
print(message.text) # attribute
print(message.from_user.first_name) # nested object attribute
await message.reply("Hello!") # calling a method on the object


Bot, Dispatcher, Message — all classes
bot, dp, message — all objects
message.text, message.from_user — attributes
message.reply() — a method

Now when you see this in the next lecture it will make complete sense
Please open Telegram to view this post
VIEW IN TELEGRAM
🚨 Video Reference

Watch this after reading through all the posts

Python Full Course 2024 — freeCodeCamp

🔖 Watch from 10:35:54 → 13:51:43
Covers OOP, classes, attributes, methods, inheritance, operator overloading, and class methods
Please open Telegram to view this post
VIEW IN TELEGRAM
✏️ Lecture 12 Homework

Build a simple user management system using OOP:

class User:
def init(self, name, age):
self.name = name
self.age = age
self.is_banned = False
self.messages = []

def send_message(self, text):
if self.is_banned:
print(f"{self.name} is banned and cannot send messages")
return
self.messages.append(text)
print(f"{self.name}: {text}")

def ban(self):
self.is_banned = True
print(f"{self.name} has been banned")

def unban(self):
self.is_banned = False
print(f"{self.name} has been unbanned")

def show_history(self):
print(f"
{self.name} message history:")
for msg in self.messages:
print(f" - {msg}")


user1 = User("Ahmed", 22)
user2 = User("Sara", 19)

user1.send_message("Hello everyone!")
user2.send_message("Hey!")
user1.ban()
user1.send_message("Can you hear me?")
user1.unban()
user1.send_message("I am back!")
user1.show_history()


Run it and screenshot the output
Bonus — create an Admin class that inherits from User and has a ban() method that can ban other users

⚠️ Next lecture drops in 1 week
🔥 Python basics are done — we are going into Telegram Bots
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 1 Week Break — Build Something

You have been learning for 12 lectures straight
Variables, strings, loops, functions, files, OOP — all of it
Now it is time to actually use it

No new lecture for 1 week
Instead — build something
Anything
From scratch, using only what you have learned so far

Ideas if you are stuck:
➡️ A to-do list that saves to a file
➡️ A quiz game with scores
➡️ A contact book with search
➡️ A simple calculator with a menu
➡️ A password generator
➡️ A number guessing game with a leaderboard
➡️ A student grade tracker

But honestly — build whatever YOU want to build
The idea does not matter, the act of building does

Rules:
➡️ No copying code from the internet
➡️ Only use what was covered in Lectures 1 to 12
➡️ It does not have to be perfect — it just has to be yours

When you are done:
➡️ Screenshot your project running
➡️ Record a short screen recording of it in action
➡️ Drop it in the comments below

I will look at every single one

New lecture drops in 7 days
See what you can build 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
⚠️ Real Talk

If nobody submits anything from the break post — I am stopping this channel

I put in the effort, you put in the work
That is the deal

Build something, screenshot it, drop it in the comments
Simple as that
Please open Telegram to view this post
VIEW IN TELEGRAM
📚 𝗟𝗲𝗰𝘁𝘂𝗿𝗲 𝟭𝟯 — 𝗛𝗼𝘄 𝗧𝗲𝗹𝗲𝗴𝗿𝗮𝗺 𝗕𝗼𝘁𝘀 𝗪𝗼𝗿𝗸

Python basics are done
Now we get to the actual reason you are here
Telegram Bots

But before writing a single line of bot code
You need to understand what is actually happening under the hood
Skipping this is why most beginners get confused later

This lecture covers:
➡️ What a Telegram bot actually is
➡️ The Bot API vs MTProto — two completely different things
➡️ What Updates are
➡️ Polling vs Webhooks
➡️ Creating your first bot with BotFather
➡️ Calling the raw API from your browser
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 What is a Telegram Bot?

A Telegram bot is a special account that is controlled by code instead of a human
When someone sends your bot a message — your code receives it and decides what to do

Bots can:
➡️ Send and receive messages
➡️ Show buttons and menus
➡️ Send photos, videos, files
➡️ Work in groups and channels
➡️ Accept payments
➡️ Run games and quizzes

Bots cannot:
➡️ See messages in groups unless added or mentioned (by default)
➡️ Add themselves to groups
➡️ Message users first (users must start the bot)
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Bot API vs MTProto — The Most Important Distinction

Telegram has two completely different APIs
Most beginners do not know this and get confused

Bot API:
➡️ Official simplified API for bots
➡️ Easy to use, well documented
➡️ Has limitations — cannot read all messages, limited features
➡️ Libraries: aiogram, python-telegram-bot

MTProto:
➡️ The raw protocol the official Telegram app uses
➡️ Full power — can do virtually anything
➡️ Can act as a real user account (userbot)
➡️ Libraries: Pyrogram, Telethon

We start with Bot API using aiogram
Then move to MTProto with Pyrogram and Telethon
Both are covered in this course
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 What are Updates?

Every single thing that happens on Telegram is called an Update
A message sent — Update
A button clicked — Update
Someone joining a group — Update
A photo sent — Update

Your bot's entire job is to receive Updates and respond to them

An Update looks like this in raw JSON:
{
"update_id": 123456789,
"message": {
"message_id": 1,
"from": {
"id": 987654321,
"first_name": "Ahmed",
"username": "ahmed123"
},
"chat": {
"id": 987654321,
"type": "private"
},
"text": "/start"
}
}


This is what Telegram sends your bot when someone types /start
Your code reads this and decides what to do
Libraries like aiogram handle all this for you automatically
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Polling vs Webhooks

There are two ways your bot can receive Updates

Polling:
➡️ Your bot asks Telegram every few seconds "any new messages?"
➡️ Easy to set up — works on your local computer
➡️ Slightly slower response time
➡️ Best for development and learning

Webhooks:
➡️ Telegram calls your server the instant something happens
➡️ Requires a public server with HTTPS
➡️ Faster and more efficient
➡️ Best for production deployed bots

We use polling for now — it is perfect for learning
We switch to webhooks when we deploy
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Creating a Bot with BotFather

BotFather is the official Telegram bot for creating bots
Every bot starts here

Steps:
1. Open Telegram and search @BotFather
2. Send /newbot
3. Enter a name for your bot (example: My First Bot)
4. Enter a username — must end in "bot" (example: myfirstbot_bot)
5. BotFather gives you a token that looks like this:

1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw


This token is your bot's password — never share it publicly
Anyone with this token controls your bot completely
If you accidentally leak it — go to BotFather and regenerate it immediately

Store it in a .env file — we will cover this properly next lecture
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Testing the Raw API in Your Browser

Before using any library — test the raw API directly
This shows you what is really happening underneath

Open your browser and visit:
https://api.telegram.org/bot<YOUR_TOKEN>/getMe


Replace <YOUR_TOKEN> with your actual token
You should see your bot's info in JSON format

Now send your bot a message on Telegram and visit:
https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates


You will see the raw Update JSON — exactly what your code will receive
This is the foundation everything is built on
Understanding this makes every library make complete sense
Please open Telegram to view this post
VIEW IN TELEGRAM
✏️ Lecture 13 Homework

No code this time — just setup:

➡️ Create a bot using BotFather and save your token safely
➡️ Open your browser and test getMe — screenshot the JSON response
➡️ Send your bot a message then test getUpdates — screenshot the Update JSON
➡️ Install aiogram: open your terminal and run:

pip install aiogram


➡️ Install python-dotenv for safe token storage:

pip install python-dotenv


Screenshot everything and make sure aiogram installs without errors

⚠️ Next lecture drops tomorrow — Your First Bot
🔥 Your bot will actually respond to messages
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
📚 𝗟𝗲𝗰𝘁𝘂𝗿𝗲 𝟭𝟰 — 𝗬𝗼𝘂𝗿 𝗙𝗶𝗿𝘀𝘁 𝗕𝗼𝘁

Last lecture you created a bot and tested the raw API
This lecture your bot actually comes alive
It will receive messages and respond to them

We are using aiogram v3 — the most professional bot library in Python
It is fully async, modern, and what production bots are built with

This lecture covers:
➡️ Project structure and .env setup
➡️ Setting up Bot and Dispatcher
➡️ Your first message handler
➡️ Running the bot with polling
➡️ Understanding async/await in bots
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 Project Setup

Create a folder for your bot project with this structure:

my_bot/
├── bot.py
└── .env


Inside .env — store your token safely:
BOT_TOKEN=1234567890:AAHdqTcvCH1vGWJxfSeofSAs0K5PALDsaw


Never put your token directly in your Python file
Never upload .env to GitHub
Create a .gitignore file and add .env to it

# .gitignore
.env


This is not optional — leaked tokens get your bot hijacked
Please open Telegram to view this post
VIEW IN TELEGRAM