Написан через гпт, максимально примитивный код, но работает как нужно. Скорее всего уже выкладывалось что-то подобное, но я когда искал для себя, не нашел. Прекрасно подойдет для ведения каналов. Моментально добавляет к каждому новому посту заданную ссылку и текст по типу такого: Что нужно для работы? - Установленный Python - Установленная библиотека PyTelegramBotAPI pip install PyTelegramBotAPI Python pip install PyTelegramBotAPI Настройки: BOT_TOKEN = "ТОКЕН ОТ БОТА ИЗ BOTFATHER" CHANNEL_LINK = "Пригласительная/вступительная ссылка на ваш канал" Код: from telegram import Update from telegram.ext import Application, MessageHandler, filters, ContextTypes # Конфигурация BOT_TOKEN = "ТОКЕН БОТА ИЗ BOTFATHER" CHANNEL_LINK = "Пригласительная/вступительная ссылка на ваш канал" async def edit_message(update: Update, context: ContextTypes.DEFAULT_TYPE): try: msg = update.effective_message links_html = ( f'<a href="{CHANNEL_LINK}"><b> Название канала, тут будет встроеная ссылка</b></a> | Подписаться \n' ) # Для текстовых сообщений if msg.text: new_text = f"{msg.text}\n\n{links_html}" await msg.edit_text(new_text, parse_mode="HTML", disable_web_page_preview=True) # Для медиа-сообщений (фото, видео, файлы) elif msg.caption or msg.photo or msg.video or msg.document: new_caption = f"{msg.caption}\n\n{links_html}" if msg.caption else links_html await msg.edit_caption(caption=new_caption, parse_mode="HTML") # Для голосовых сообщений elif msg.voice: # Удаляем оригинальное сообщение await msg.delete() # Отправляем новое с подписью await msg.chat.send_voice( voice=msg.voice.file_id, caption=links_html, parse_mode="HTML" ) except Exception as e: print(f"Ошибка: {e}") if __name__ == "__main__": app = Application.builder().token(BOT_TOKEN).build() app.add_handler(MessageHandler( filters.TEXT | filters.PHOTO | filters.VIDEO | filters.Document.ALL | filters.VOICE, edit_message )) print("Бот запущен...") app.run_polling() Python from telegram import Update from telegram.ext import Application, MessageHandler, filters, ContextTypes # Конфигурация BOT_TOKEN = "ТОКЕН БОТА ИЗ BOTFATHER" CHANNEL_LINK = "Пригласительная/вступительная ссылка на ваш канал" async def edit_message(update: Update, context: ContextTypes.DEFAULT_TYPE): try: msg = update.effective_message links_html = ( f'<a href="{CHANNEL_LINK}"><b> Название канала, тут будет встроеная ссылка</b></a> | Подписаться \n' ) # Для текстовых сообщений if msg.text: new_text = f"{msg.text}\n\n{links_html}" await msg.edit_text(new_text, parse_mode="HTML", disable_web_page_preview=True) # Для медиа-сообщений (фото, видео, файлы) elif msg.caption or msg.photo or msg.video or msg.document: new_caption = f"{msg.caption}\n\n{links_html}" if msg.caption else links_html await msg.edit_caption(caption=new_caption, parse_mode="HTML") # Для голосовых сообщений elif msg.voice: # Удаляем оригинальное сообщение await msg.delete() # Отправляем новое с подписью await msg.chat.send_voice( voice=msg.voice.file_id, caption=links_html, parse_mode="HTML" ) except Exception as e: print(f"Ошибка: {e}") if __name__ == "__main__": app = Application.builder().token(BOT_TOKEN).build() app.add_handler(MessageHandler( filters.TEXT | filters.PHOTO | filters.VIDEO | filters.Document.ALL | filters.VOICE, edit_message )) print("Бот запущен...") app.run_polling()
n1s_01, Ну значит ты код не тот выложил. Как минимум то, что здесь в конце не закрыта скобка, перечеркивает его работоспособность, фиксится за секунду: Потом он токен ищет в файле config.py, а в теме указан файл token.py С дб какая-то дрочка и т.д.