Владельцам Telegram Premium доступна полезная опция — подключение бизнес-ботов к личному аккаунту. Это позволяет автоматизировать общение с клиентами: бот мгновенно реагирует на входящие сообщения, оперативно фиксирует любые правки и удаления в диалогах. Именно этого функционала достаточно, чтобы решить задачу, ради которой мы здесь собрались.
Почему обычные сессии без Business-режима не подходят
Если попытаться реализовать подобное через стандартные сессии, мы сразу упираемся в жёсткие рамки официального Telegram API. Главные препятствия:
- Floodwait — система принудительных пауз между запросами, которая серьёзно замедляет работу.
- Риск блокировки — при высокой частоте обращений к API учётная запись может быть заморожена за подозрительную активность.
Некоторые пользователи сравнивают этот подход с клиентами вроде Ayugram, но здесь принципиальное отличие: такие приложения работают исключительно на клиентской стороне и сохраняют удалённые сообщения только локально, в момент вашего присутствия в сети. Они не используют API, а значит, и ограничения там совсем иные — но и возможности скромнее.
Главный недостаток клиентских решений в том, что они не сохраняют удалённые сообщения, если вы были офлайн. Наш же бот, напротив, фиксирует изменения даже в ваше отсутствие, что делает его значительно более надёжным инструментом для мониторинга.
Создаём бота в @BotFather + включаем Busness Mode:
Переходим в https://t.me/BotFather и отправляем команду /newbot, затем пишем название вашего бота и юзернейм

После этого пишем /mybots и выбираем только что созданного бота, переходим в "Bot Settings". Далее находим "Business Mode" и включаем его



Мы включили бизнес-мод в нашем боте. Не забываем прописать /start, чтобы он мог нам писать
Установка Pyton и необходимых модулей:
Заходим на сайт https://www.python.org/downloads/ и скачиваем python, выбирайте любой из свежих версий. Прямая ссылка на установку для windows: https://www.python.org/ftp/python/3.14.2/python-3.14.2-amd64.exe. Поставьте галочку "add to path", когда откроется установочное окно.

После установки открываем командную строку (win + r, затем в поле ввода пишем "cmd") и вставляем команду:
pip install pyTelegramBotAPI
Исходник + запуск
Теперь создаем папку где вам удобно, а в нем файл с расширением .py и вставляем этот код:
import asyncio
from datetime import datetime
from telebot.async_telebot import AsyncTeleBot
from telebot.types import BusinessMessagesDeleted
from html import escape
TOKEN = "Токен"
OWNER_ID = 00000000 # твой Telegram ID
bot = AsyncTeleBot(TOKEN, parse_mode="HTML")
MESSAGES = {}
def base_record(msg):
return {
"user": msg.from_user.first_name if msg.from_user else "Пользователь",
"type": msg.content_type,
"timestamp": datetime.now().isoformat(timespec="seconds"),
}
@bot.business_message_handler(content_types=[
"text", "photo", "voice", "video",
"video_note", "animation", "sticker"
])
async def handle_message(msg):
key = (msg.chat.id, msg.message_id)
record = base_record(msg)
if msg.content_type == "text":
record["content"] = msg.text
elif msg.content_type == "photo":
record["file_id"] = msg.photo[-1].file_id
record["caption"] = msg.caption
elif msg.content_type == "video":
record["file_id"] = msg.video.file_id
record["caption"] = msg.caption
elif msg.content_type == "animation":
record["file_id"] = msg.animation.file_id
record["caption"] = msg.caption
elif msg.content_type == "video_note":
record["file_id"] = msg.video_note.file_id
elif msg.content_type == "voice":
record["file_id"] = msg.voice.file_id
elif msg.content_type == "sticker":
record["file_id"] = msg.sticker.file_id
MESSAGES[key] = record
@bot.edited_business_message_handler(content_types=["text"])
async def handle_edit(msg):
key = (msg.chat.id, msg.message_id)
old_record = MESSAGES.get(key)
if old_record and old_record.get("type") == "text":
user = old_record.get("user")
old_text = escape(old_record.get("content", ""))
new_text = escape(msg.text or "")
await bot.send_message(
OWNER_ID,
f" {user} изменил(а) сообщение:\n\n"
f"Было:\n{old_text}\n\n"
f"Стало:\n{new_text}"
)
MESSAGES[key] = {
"user": msg.from_user.first_name if msg.from_user else "Пользователь",
"type": "text",
"content": msg.text
}
@bot.deleted_business_messages_handler()
async def handle_delete(event: BusinessMessagesDeleted):
chat = event.chat
for msg_id in event.message_ids:
key = (chat.id, msg_id)
record = MESSAGES.pop(key, None)
if not record:
continue
user = record.get("user", "Пользователь")
msg_type = record.get("type")
file_id = record.get("file_id")
if msg_type == "text":
text = escape(record.get("content", ""))
await bot.send_message(
OWNER_ID,
f" {user} удалил(а) сообщение:\n\n"
f"{text}"
)
elif msg_type == "photo":
caption_text = record.get("caption")
if caption_text:
caption = (
f" {user} удалил(а) фото:\n\n"
f"{escape(caption_text)}"
)
else:
caption = f" {user} удалил(а) фото"
await bot.send_photo(OWNER_ID, file_id, caption=caption)
elif msg_type == "video":
caption_text = record.get("caption")
if caption_text:
caption = (
f" {user} удалил(а) видео:\n\n"
f"{escape(caption_text)}"
)
else:
caption = f" {user} удалил(а) видео"
await bot.send_video(OWNER_ID, file_id, caption=caption)
elif msg_type == "animation":
caption_text = record.get("caption")
if caption_text:
caption = (
f" {user} удалил(а) GIF:\n\n"
f"{escape(caption_text)}"
)
else:
caption = f" {user} удалил(а) GIF"
await bot.send_animation(OWNER_ID, file_id, caption=caption)
elif msg_type == "video_note":
await bot.send_video_note(OWNER_ID, file_id)
await bot.send_message(
OWNER_ID,
f" {user} удалил(а) видеосообщение"
)
elif msg_type == "voice":
await bot.send_voice(OWNER_ID, file_id)
await bot.send_message(
OWNER_ID,
f" {user} удалил(а) голосовое сообщение"
)
elif msg_type == "sticker":
await bot.send_sticker(OWNER_ID, file_id)
await bot.send_message(
OWNER_ID,
f" {user} удалил(а) стикер"
)
async def main():
print("Бот запущен")
await bot.infinity_polling(
allowed_updates=[
"business_message",
"edited_business_message",
"deleted_business_messages"
],
skip_pending=True
)
if __name__ == "__main__":
asyncio.run(main())
В коде на 7 и 8 строке обязательно заполняем поля. В 7 строку вставляем токен нашего бота, в 8 строку вставляем ваш user id телеграм ( Cвой айди можете узнать в нашем телеграм боте - @RandomatusBot используя команду /id @username ).После этого в поле с директорией папки пишем cmd (чтобы в ручную не идти в директорию через cd)

В консоли пишем "python main.py" (вместо main.py у вас может быть другое название файла, смотря как назвали). Если увидели "Бот запущен" - вы успешно запустили бота.

Подключение бота к вашему аккаунту Телеграм
Переходим в настройки телеграм, затем открываем "Telegram для бизнеса" и ищем "Чат-боты"

Вставляем юзернейм нашего бота

На этом все, бот работает!
Итог. Что у нас получилось?
Теперь нам приходит в бота удаление и редактирование сообщений из любой личной переписки с нами, и не нужно никаких сторонних клиентов тг.
Комментарии (0)
Войдите через Telegram, чтобы оставить комментарий