Загрузка...

Script Bot for substitution links at the end of the post

Thread in Python created by Правый May 3, 2025. (bumped Jun 26, 2025) 223 views

  1. Правый
    Правый Topic starter May 3, 2025 Волос кучерявый 756 Nov 4, 2016
    Написан через гпт, максимально примитивный код, но работает как нужно. Скорее всего уже выкладывалось что-то подобное, но я когда искал для себя, не нашел. Прекрасно подойдет для ведения каналов. Моментально добавляет к каждому новому посту заданную ссылку и текст по типу такого:
    [IMG]

    Что нужно для работы?

    - Установленный Python
    - Установленная библиотека PyTelegramBotAPI
    Python
    pip install PyTelegramBotAPI
    Настройки:

    BOT_TOKEN = "ТОКЕН ОТ БОТА ИЗ BOTFATHER"
    CHANNEL_LINK = "Пригласительная/вступительная ссылка на ваш канал"

    Код:
    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()
     
    1. Правый Topic starter
      n1s_01, Ну значит ты код не тот выложил. Как минимум то, что здесь в конце не закрыта скобка, перечеркивает его работоспособность, фиксится за секунду:
      [IMG]
      Потом он токен ищет в файле config.py, а в теме указан файл token.py

      С дб какая-то дрочка и т.д.
    2. n1s_01
      Правый, походу рил не тот выложил хд
    3. Правый Topic starter
      n1s_01, оно по сути все быстро фиксится, но это лишняя трата времени
  2. Макаров
    дельно
     
Loading...
Top