📂 Мини-проекты: основа твоего портфолио
Фрилансеру важно показать, что он умеет решать задачи.
Для этого создавай простые мини-проекты:
- парсер сайта новостей
- Telegram-бот, который отвечает на команды
- скрипт для Excel
Пример простого проекта: подсчёт слов в тексте.
Клиенты любят видеть такие работы.
В следующем посте — сделаем своего первого Telegram-бота.
Фрилансеру важно показать, что он умеет решать задачи.
Для этого создавай простые мини-проекты:
- парсер сайта новостей
- Telegram-бот, который отвечает на команды
- скрипт для Excel
Пример простого проекта: подсчёт слов в тексте.
code
from collections import Counter
text = open("article.txt").read().split()
print(Counter(text).most_common(5))
Клиенты любят видеть такие работы.
В следующем посте — сделаем своего первого Telegram-бота.
🤖 Telegram-бот: твой первый шаг во фриланс
Боты востребованы почти у каждого бизнеса.
Рассмотрим простейший бот на aiogram:
Теперь бот повторяет сообщения. Просто, но уже работает!
Скоро разберём парсинг сайтов — частая задача на фрилансе.
Боты востребованы почти у каждого бизнеса.
Рассмотрим простейший бот на aiogram:
code
from aiogram import Bot, Dispatcher, executor, types
bot = Bot(token="TOKEN")
dp = Dispatcher(bot)
@dp.message_handler()
async def echo(msg: types.Message):
await msg.answer(msg.text)
executor.start_polling(dp)
Теперь бот повторяет сообщения. Просто, но уже работает!
Скоро разберём парсинг сайтов — частая задача на фрилансе.
👍1👨💻1
Мысли, ссылки, задачи, идеи 💡 — всё это тонет в заметках телефона. Решение? Сделать собственного бота-органайзера.
⚙️ Что он умеет:
● 📝 Сохранять заметки прямо в чат
● 📋 Показывать список всех заметок
● 🔍 Искать по тегам
● ⏰ Ставить напоминания (опционально)
● 📤 Экспортировать записи в .txt или .csv
● 📜 Мини-шаблон на aiogram 3 + SQLite:
import sqlite3
from aiogram import Bot, Dispatcher, types
from datetime import datetime
API_TOKEN = "your_token"
bot, dp = Bot(API_TOKEN), Dispatcher()
conn = sqlite3.connect("notes.db")
cur = conn.cursor()
cur.execute("""CREATE TABLE IF NOT EXISTS notes (
id INTEGER PRIMARY KEY, user_id INT, text TEXT, tag TEXT, created_at TEXT)""")
@dp.message(commands=["note"])
async def add(msg: types.Message):
text, tag = msg.text.replace("/note", "").strip(), None
if "#" in text: text, tag = text.split("#", 1)
cur.execute("INSERT INTO notes VALUES(NULL,?,?,?,?)",
(msg.from_user.id, text.strip(), tag, datetime.now().isoformat()))
conn.commit()
await msg.answer("✅ Заметка сохранена!")
#CodeShadow #TelegramBot #Python #aiogram #Кейс #Разработка
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥2👨💻1
В прошлый раз мы сделали основу: заметки, теги и поиск. Теперь — добавляем напоминания, чтобы бот сам писал тебе в нужное время.
import asyncio
from datetime import datetime, timedelta
reminders = [] # [(user_id, text, time)]
@dp.message(commands=["remind"])
async def set_reminder(msg: types.Message):
# Пример: /remind Через 1 минуту Выпить кофе
parts = msg.text.split(" ", 3)
minutes, text = int(parts[1]), parts[2:]
remind_time = datetime.now() + timedelta(minutes=minutes)
reminders.append((msg.from_user.id, " ".join(text), remind_time))
await msg.answer(f"⏰ Напоминание через {minutes} мин!")
async def reminder_loop():
while True:
now = datetime.now()
for r in reminders[:]:
user_id, text, time = r
if now >= time:
await bot.send_message(user_id, f"🔔 Напоминание: {text}")
reminders.remove(r)
await asyncio.sleep(10)
asyncio.create_task(reminder_loop())
Дальше можно добавить:
#CodeShadow #TelegramBot #Python #aiogram #Кейс #Напоминания
Please open Telegram to view this post
VIEW IN TELEGRAM
🔎 Парсинг сайтов: быстрый старт
Парсинг — топ-задача на биржах. Например, собрать заголовки с сайта новостей:
Клиенты часто заказывают именно такие штуки.
В последующих постах — автоматизация: как облегчить жизнь заказчику. Не пропустите!)
Парсинг — топ-задача на биржах. Например, собрать заголовки с сайта новостей:
code
import requests
from bs4 import BeautifulSoup
url = "https://site.com"
html = requests.get(url).text
soup = BeautifulSoup(html, "html.parser")
for h in soup.find_all("h2"):
print(h.text)
Клиенты часто заказывают именно такие штуки.
В последующих постах — автоматизация: как облегчить жизнь заказчику. Не пропустите!)
После пары проектов начинаешь тонуть в рутине: записывать название заказа, сумму, дату… Каждый раз открывать Google Таблицы и забивать всё руками — скука.
Я быстро устал от этого и решил, что за меня будет работать Python.
Есть файл orders.json с заказами:
[
{"noscript": "Telegram-бот для магазина", "price": 12000, "date": "2025-09-01"},
{"noscript": "Парсер новостей", "price": 8000, "date": "2025-09-05"},
{"noscript": "Автопостинг в ВК", "price": 10000, "date": "2025-09-10"}
]
Скрипт берёт данные из файла и автоматически отправляет их в Google Таблицу.
import json
import gspread
from oauth2client.service_account import ServiceAccountCredentials
scope = ["https://spreadsheets.google.com/feeds",
"https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("service_account.json", scope)
client = gspread.authorize(creds)
sheet = client.open("Финансы_Фрилансера").sheet1
with open("orders.json", "r", encoding="utf-8") as f:
orders = json.load(f)
for order in orders:
sheet.append_row([order["date"], order["noscript"], order["price"]])
print("✅ Готово! Данные в таблице.")
1. считать итог за месяц
2. конвертировать доход в валюты
2. генерировать PDF-отчёты
3. связать с Telegram-ботом и получать статистику по команде
💡 Автоматизация — это про свободу. Один раз написал скрипт → и больше не тратишь время на однообразные действия.
Please open Telegram to view this post
VIEW IN TELEGRAM
Друзья, какой мини-скрипт вы хотите освоить в этом месяце? 😎 Выбирайте, а я подготовлю пример! 🧑💻
Голосуем до 20 сентября!
Голосуем до 20 сентября!
Final Results
27%
53%
40%
7%
CodeShadow pinned «Друзья, какой мини-скрипт вы хотите освоить в этом месяце? 😎 Выбирайте, а я подготовлю пример! 🧑💻
Голосуем до 20 сентября!»
Голосуем до 20 сентября!»
Программирование — это не только про таблицы и цифры. Python умеет творить искусство✨
Например, я попробовал сделать скрипт, который рисует абстрактные узоры и сохраняет их в PNG. Получается что-то вроде «генеративного искусства».
from PIL import Image, ImageDraw
import random
# создаём пустое изображение
img = Image.new("RGB", (500, 500), "white")
draw = ImageDraw.Draw(img)
# рисуем случайные круги
for _ in range(50):
x1 = random.randint(0, 500)
y1 = random.randint(0, 500)
x2 = x1 + random.randint(20, 100)
y2 = y1 + random.randint(20, 100)
color = (random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
draw.ellipse([x1, y1, x2, y2], fill=color)
img.save("abstract.png")
print("✅ Картинка готова!")
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Автоматизация: твой главный козырь
Программисты-фрилансеры ценятся за то, что снимают рутину.
Пример: удаление старых файлов на сервере клиента.
Просто, но клиент доволен.
В дальнейшем обсудим работу с API, ведь это частая необходимость.
Программисты-фрилансеры ценятся за то, что снимают рутину.
Пример: удаление старых файлов на сервере клиента.
code
import os, time
folder = "logs"
now = time.time()
for f in os.listdir(folder):
path = os.path.join(folder, f)
if os.path.isfile(path) and now - os.path.getmtime(path) > 7*86400:
os.remove(path)
Просто, но клиент доволен.
В дальнейшем обсудим работу с API, ведь это частая необходимость.
🔌 Работа с API: пример погоды
Фрилансеру часто приходится работать с API.
Пример: получаем данные о погоде через OpenWeather.
API = умение подключать сервисы. Это востребовано.
Далее — где хранить данные: базы, JSON, CSV.
Фрилансеру часто приходится работать с API.
Пример: получаем данные о погоде через OpenWeather.
import requests
API_KEY = "ВАШ_API_КЛЮЧ" # получите на openweathermap.org
city = "Moscow"
url = f"https://api.openweathermap.org/data/2.5/weather?q={city}&appid={API_KEY}&units=metric&lang=ru"
response = requests.get(url)
data = response.json()
if response.status_code == 200:
temp = data["main"]["temp"]
weather = data["weather"][0]["denoscription"]
print(f"Погода в {city}: {temp}°C, {weather}")
else:
print("Ошибка:", data.get("message", "Не удалось получить данные"))
API = умение подключать сервисы. Это востребовано.
Далее — где хранить данные: базы, JSON, CSV.
Недавно я уже делал пост про автоматизацию Google Таблиц с Python — там закидывал доходы фрилансера прямо из JSON. Сегодня продолжу тему и разберу ещё один кейс, который может быть полезен каждому.
Представь, ты ведёшь Telegram-канал или чат. Каждый день хочется видеть простую статистику:
сколько человек подписалось
сколько сообщений написали
сколько лайков накликали
Обычно это где-то лежит в API, и ты смотришь раз в неделю… Но почему бы не сделать так, чтобы данные сами залетали в Google Таблицу?
import gspread
from oauth2client.service_account import ServiceAccountCredentials
import datetime
# Доступ к Google
scope = ["https://spreadsheets.google.com/feeds",
"https://www.googleapis.com/auth/drive"]
creds = ServiceAccountCredentials.from_json_keyfile_name("service_account.json", scope)
client = gspread.authorize(creds)
# Открываем таблицу
sheet = client.open("Статистика_канала").sheet1
# Данные для примера (на деле можно тянуть из Telegram API)
today = datetime.date.today().strftime("%Y-%m-%d")
new_users = 15
messages = 120
likes = 340
# Записываем строку
sheet.append_row([today, new_users, messages, likes])
print("✅ Статистика обновлена!")
каждый день таблица сама пополняется свежими цифрами
есть история за каждый день, удобно строить графики
можно сразу видеть динамику: растёшь или нет
Автоматизация таблиц = освобождение головы от рутины. Настроил один раз → и дальше система сама работает.
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡1 1
В последнее время дни сильно загружены и часто путаюсь в расписании😵
Решил для себя сделать бота-планёра, чтобы не забывать о занятиях и дедлайнах.
Пишите в комменты, если для вас эта тема актуальна👨💻
Please open Telegram to view this post
VIEW IN TELEGRAM
У фрилансеров и SMM-щиков часто одна головная боль — контент. Идеи постов есть, но они теряются в заметках, Excel или просто в голове.
Что если у тебя будет бот, который сам раскладывает идеи по дням и формирует план публикаций?
Это реально полезный инструмент:
import datetime
from aiogram import Bot, Dispatcher, types
from aiogram.filters import Command
import asyncio, os
API_TOKEN = os.getenv("BOT_TOKEN")
bot = Bot(API_TOKEN)
dp = Dispatcher()
ideas = {} # {user_id: [(date, text), ...]}
@dp.message(Command("add"))
async def add_idea(msg: types.Message):
# Пример: /add 2025-09-20 Идея поста про Python
try:
parts = msg.text.split(" ", 2)
date = datetime.datetime.strptime(parts[1], "%Y-%m-%d").date()
text = parts[2]
ideas.setdefault(msg.from_user.id, []).append((date, text))
await msg.answer(f"✅ Добавлено: {text} ({date})")
except:
await msg.answer("⚠️ Формат: /add YYYY-MM-DD ТЕКСТ")
@dp.message(Command("plan"))
async def show_plan(msg: types.Message):
user_ideas = ideas.get(msg.from_user.id, [])
if not user_ideas:
await msg.answer("📭 План пуст")
else:
user_ideas.sort(key=lambda x: x[0])
text = "📅 Твой контент-план:\n\n"
for d, t in user_ideas:
text += f"— {d}: {t}\n"
await msg.answer(text)
async def main():
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
⁉️ А у тебя уже есть свой контент-план или ты пока публикуешь «по вдохновению»?
#CodeShadow #TelegramBot #Python #Фриланс
Please open Telegram to view this post
VIEW IN TELEGRAM
CodeShadow
Друзья, какой мини-скрипт вы хотите освоить в этом месяце? 😎 Выбирайте, а я подготовлю пример! 🧑💻
Голосуем до 20 сентября!
Голосуем до 20 сентября!
Ненавязчиво напоминаю о опросе 👀
Please open Telegram to view this post
VIEW IN TELEGRAM
CodeShadow
В последнее время дни сильно загружены и часто путаюсь в расписании 😵 Решил для себя сделать бота-планёра, чтобы не забывать о занятиях и дедлайнах. Пишите в комменты, если для вас эта тема актуальна 👨💻
Пишу проект бота-планёра для телеграм. Скоро выйдет пост на тему данного бота💎
Вкратце: можно делать записи по задачам, выставлять дату и время, есть фиксированные задачи по будням и оповещения, а также отчётность за неделю👨💻
Please open Telegram to view this post
VIEW IN TELEGRAM
Привет, друзья! Недавно я упоминал, что дни стали слишком загруженными, и я часто путаюсь в дедлайнах, встречах и повторяющихся задачах. Как фрилансер, я устал от заметок в телефоне и напоминаний в календаре — они не всегда срабатывают вовремя. Решил: пора написать своего бота-планировщика, который будет держать всё под контролем.Это не просто напоминалка, а полноценный инструмент для фрилансеров, студентов или SMM-щиков. Бот поможет организовать разовые задачи (с датой, временем и описанием) и фиксированное расписание (например, еженедельные занятия или встречи). Плюс напоминания, отчёты и простая интеграция с Telegram.Представь: добавляешь задачу "/add_task Менторство с клиентом 2025-09-25 14:00", бот сохраняет её, напоминает за 30 минут (или по твоим настройкам) и даже формирует отчёт за неделю — сколько задач выполнено, сколько висит. Для повторяющихся вещей (типа "урок по Python каждую среду в 18:00") есть отдельный режим с деактивацией по команде.
Бот работает на Python с библиотеками telebot, SQLAlchemy (для базы данных) и APScheduler (для напоминаний). Всё в одном проекте, без лишних зависимостей.
⭐️ Python 3⭐️ Библиотеки: telebot, sqlalchemy, apscheduler, python-dotenv, pytz⭐️ База: SQLite (или PostgreSQL для продакшена)⭐️ Telegram API токен
—config.py: настройки (токен, таймзона, БД)
—models.py: модели задач и расписания (SQLAlchemy)
—db.py: подключение к БД
—utils.py: хелперы (парсинг дат, клавиатуры)
—scheduler.py: планировщик напоминаний
—bot_handlers.py: обработчики сообщений (добавление задач, настройки, отчёты)
—main.py: запуск бота и инициализация
В следующих постах разберём код по частям: от базы данных до напоминаний. Если тема зацепит — сделаю репозиторий на GitHub.
• Интеграцию с Google Calendar для синхронизации.
• Голосовые заметки для добавления задач.
• Графики отчётов в PNG (через Matplotlib).
• Мультипользовательский режим для команд.
Это не просто бот — это инструмент, который сэкономит часы на рутине. Я уже тестирую на себе, и это реально упрощает жизнь.💪 ☕️ А ты используешь ботов для планирования? Что бы добавил в такой проект?
#CodeShadow #TelegramBot #Python #Планировщик #Фриланс
Please open Telegram to view this post
VIEW IN TELEGRAM
📊 Хранение данных: куда девать результаты?
Фрилансер обязан уметь сохранять данные.
Пример — CSV-файл:
Аналогично можно работать с JSON и SQLite.
Далее — советы по GitHub и портфолио.
Фрилансер обязан уметь сохранять данные.
Пример — CSV-файл:
code
import csv
data = [("Анна", 90), ("Иван", 75)]
with open("scores.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerows(data)
Аналогично можно работать с JSON и SQLite.
Далее — советы по GitHub и портфолио.
