Оформление постов в Telegram играет ключевую роль в том, как аудитория воспринимает ваш контент. Аккуратные заголовки, списки, выделения жирным или курсивом делают текст более структурированным и повышают вовлечённость. Существует два основных способа написать HTML-оформленный пост для Telegram.
1. Встроенные возможности приложения
Самый очевидный путь — воспользоваться стандартным функционалом. Достаточно выделить нужный фрагмент текста, нажать правую кнопку мыши (или долгий тап на смартфоне) и выбрать «Жирный», «Курсив» или вставить ссылку. Такой метод удобен для коротких сообщений, но у него есть ограничения: он не поддерживает все HTML-теги и может быть неудобен при подготовке больших, сложных публикаций.
2. Использование бота-редактора
Второй вариант — создать или использовать готового Telegram-бота, который работает как визуальный HTML-редактор (WYSIWYG). Вы пишете пост в привычном формате, расставляете стили, ссылки и списки, а бот преобразует текст в корректную разметку. Реализовать подобного бота технически возможно, но зачем тратить время и силы, если уже существуют готовые решения?
TelegramCMS позволяет не только красиво оформить посты через HTML, но и дает дополнительные возможности. Например:
Сбор и отображение подробной статистики по каждому посту и всему каналу;
Планирование и отложенный постинг;
Удобный редактор, который снимает необходимость вручную работать с кодом.
Кратко о создании поста на канал через сервис TelegramCMS
После регистрации на сайте и добавления бота на канал(мануал), в разделе постинга можно увидеть следующую форму
Сперва нужно выбрать тип поста – от этого зависит длина текста и тип загружаемого файла. Также, можно запланировать, закрепить, указать тональность и стиль поста.
После его публикации можно отслеживать просмотры, реакции и комменты во времени.
Итог
Если вам нужно разово отформатировать короткий текст, встроенного меню Telegram достаточно. Но если вы ведёте канал на постоянной основе и хотите совмещать оформление постов в Telegram с аналитикой и автоматизацией, использование специализированного бота-сервиса TelegramCMS окажется гораздо эффективнее. Он сэкономит время, даст больше контроля над контентом и обеспечит профессиональный уровень ведения канала.
Компьютерное зрение — это ключ к созданию ИИ, способного ориентироваться в визуальной среде. Если мы хотим, чтобы бот «играл» в гоночную игру (например, Disney Speedstorm), ему нужно в реальном времени распознавать трассу, соперников, бусты и препятствия на экране — так же, как это делает человек.
Как это работает
Всё начинается с захвата изображения (в нашем случае — скриншотов экрана), которые подаются в нейросеть, обученную искать определённые объекты. Этот процесс состоит из нескольких ключевых этапов:
1. Сбор и разметка данных
Мы вручную сохраняем кадры из игры и размечаем на них:
оптимальную область трассы для проезда,
расположение бустов,
другие машины,
своего гонщика.
Для разметки используется формат YOLO: каждый объект описывается строкой с классом и координатами (нормализованными). Пример формата
ID класса, смещение по горизонтали и вертикале, ширина и высота объекта. Позже опишу процесс.
2. Обучение модели YOLO
YOLO (You Only Look Once) — один из самых быстрых и точных алгоритмов object detection. Мы обучаем его на размеченных кадрах, чтобы он научился предсказывать:
где на экране находится объект,
что это за объект (класс),
насколько уверена модель в своём предсказании.
3. Распознавание в реальном времени
После обучения модель можно подключить прямо к скрипту захвата экрана. Каждый кадр с экрана подаётся в модель, которая возвращает:
координаты объектов (bounding boxes),
названия классов (track, boost и т.д.),
confidence — насколько уверенно это предсказание.
Почему именно YOLO: быстро, точно, в реальном времени
Для задачи, где нужно распознавать объекты на экране и принимать решения сразу, критически важны скорость и точность. Именно поэтому я выбрал YOLO — одну из самых популярных моделей компьютерного зрения для object detection (обнаружения объектов).
Что такое YOLO
YOLO (You Only Look Once) — это однопроходная (single-shot) нейросеть, которая всего за один прогон по изображению:
определяет где находятся объекты (bounding boxes),
определяет что это за объекты (классы),
и делает это в реальном времени (на CPU или GPU).
YOLO — это одновременный детектор и классификатор, в отличие от старых подходов вроде R-CNN, которые сначала ищут объекты, а потом классифицируют.
Как работает YOLO — по сути
Вход: модель получает изображение (например, 640×640).
Она разбивает его на сетку (например, 80×80 клеток).
Каждая клетка делает несколько предсказаний:
координаты возможного объекта,
класс (например: трасса, буст, соперник),
и confidence (уверенность).
Все предсказания собираются, фильтруются по порогу уверенности и выводятся в виде прямоугольников с подписями.
Модель обучается таким образом, чтобы минимизировать ошибку в координатах и классе одновременно.
Тип архитектуры: сверточная сеть (CNN)
YOLO построена на Convolutional Neural Network (CNN), специально адаптированной для:
выделения признаков (features) на изображении,
объединения информации на разных масштабах (через FPN/Neck),
быстрого предсказания bounding box’ов.
В частности, YOLOv8 использует C2f-блоки и легкую “голову” (head) — всё это делает её быстрее и легче, чем многие аналоги.
Почему YOLO — лучший выбор для гейм-бота
Критерий
YOLOv8
Скорость
До 60 FPS на средних GPU или CPU
Точность
mAP > 50–60% при хорошем датасете
Простота
Простое API (Ultralytics)
Универсальность
Работает с изображениями, видео, экраном
Альтернативы (и почему не они)
Faster R-CNN — слишком медленно для real-time
EfficientDet — точная, но сложнее в запуске и медленнее
YOLOv5/YOLOv6 — хороши, но YOLOv8 проще, быстрее и официально поддерживается Ultralytics
Практика
Прежде всего – надо нарезать кадров игры на которых будем учить сеть. С этой целью был написан такой пайтон код
import mss
import numpy as np
import cv2
def main():
monitor = {"top": 0, "left": 0, "width": 1920, "height": 1080}
i=0
with mss.mss() as sct:
while True:
screenshot = sct.grab(monitor)
frame = np.array(screenshot)
frame = cv2.cvtColor(frame, cv2.COLOR_BGRA2BGR)
if i % 50 == 0:
cv2.imwrite(f"data/frame_{i:04d}.jpg", frame)
i+=1
if __name__ == "__main__":
main()
Шаг второй – разметить кадры и сформировать датасет для обучения: я использовал этот сайт. В конце экспортировал текстовые файлы в YOLO формате.
Третий шаг – обучение сети. Для этой цели был набросан скрипт
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.train(
data="config.yaml",
epochs=50,
imgsz=1920,
batch=8,
name="track_bot_model"
)
model_path = model.ckpt_path or "runs/detect/track_bot_model/weights/best.pt"
config.yaml это файл с описанием файловой структуры датасета и имен обьектов
epochs это количество итераций в цикле обучения. Каждая эпоха составляет свою карту весов и в конце выбирается лучшая карта. imgsz размер картинки, к которому будет приведен кадр внутри сети и batch – как я понял, количество картинок, что будут объединены в один пакет для кормления сети.
Результат
при обучении мы получим файл best.pt с весами ориентируясь на который будут делаться прогнозы о нахождении той или иной фигуры на кадре. По причине недостаточно мощного железа мне пришлось сохранять кадры в папку и читать их оттуда. Скрипт для создания прогнозов получился таким
from ultralytics import YOLO
import time
model = YOLO("runs/detect/track_bot_model/weights/best.pt")
results = model.predict(
source='data',
conf=0.05,
save=True,
save_txt=True,
project="outputs",
name="batch_run",
exist_ok=True
)
Здравствуйте всем, это пролог к серии статей сериала “ООП здорового человека(Сезон 1)”. Данная серия статеек об объектно-ориентированном программировании “здорового человека”(в предыдущей записи я привел пример ООП курящего). Современное ООП это не только работа из сущностями как с объектами, но и следование некоторым механизмам, принципам и шаблонам проектирования кода.
В данном цикле мы рассмотрим все механизмы и принципы. Здесь будут не только выдержки из Википедии и иных источников, но также примеры кода(где возможно и, разумеется, на PHP) и их разбор.
Сериальчик стоит глянуть как новичкам, так и прожжённым программистам. Первым – для того чтоб легко “въехать в тему”(рассказываю максимально доступно); вторые больше мне нужны – для исправления моих ошибок(если будут). В целом, не стесняйтесь – комментируйте(только прошу – коль критикуете – объясняйте за что и где)!