Этот вопрос закрыт для ответов, так как повторяет вопрос AttributeError: 'Bot' object has no attribute 'dispatcher' Как исправить?
@dmitry218

AttributeError: 'Bot' object has no attribute 'dispatcher' Как исправить?

Сам код:

import telegram
from telegram import Bot, Update, InlineKeyboardMarkup, InlineKeyboardButton, ParseMode
from telegram.ext import MessageHandler, CallbackContext, CommandHandler, Updater, Filters
from telegram.utils.helpers import escape_markdown

# Замените 'Ваш_токен' на реальный токен вашего бота
TOKEN = '68156.:...dqXX64'

# Замените 'ID_канала' на ID вашего канала
CHANNEL_ID = '@.......tdtppv'

# Замените 'Ваш_чат_id' нe ваш ID в Telegram
ADMIN_CHAT_ID = '64....42..94'

# Инициализация бота
bot = Bot(token=TOKEN)

# Словарь для хранения кнопок по пользовательским запросам
user_buttons = {}

def start(update: Update, context: CallbackContext) -> None:
    if not is_admin(update):
        update.message.reply_text("Вы не являетесь администратором. Доступ запрещен.")
        return

    update.message.reply_text("Привет! Я бот для пересылки постов в канал.")

def add_buttons(update: Update, context: CallbackContext) -> None:
    if not is_admin(update):
        update.message.reply_text("Вы не являетесь администратором. Доступ запрещен.")
        return

    user_id = update.message.from_user.id
    buttons_text = ' '.join(context.args)

    if not buttons_text:
        update.message.reply_text("Пожалуйста, укажите текст кнопок после команды /addbuttons.")
        return

    user_buttons[user_id] = buttons_text
    update.message.reply_text(f"Кнопки добавлены: {buttons_text}")

def forward_to_channel(update: Update, context: CallbackContext) -> None:
    if not is_admin(update):
        update.message.reply_text("Вы не являетесь администратором. Доступ запрещен.")
        return

    user_id = update.message.from_user.id

    # Замените 'ID_канала' на ID вашего канала
    chat_id = CHANNEL_ID

    # Получение текста и подписи
    text = update.message.text
    signature = f"\n\nПодпись: [{escape_markdown(update.message.chat.username)}](https://t.me/{update.message.chat.username})"

    # Создание кнопок по запросу пользователя, если есть
    if user_id in user_buttons:
        keyboard_text = user_buttons[user_id]
        keyboard = InlineKeyboardMarkup([
            [InlineKeyboardButton(btn_text, callback_data=f'custom_button_{btn_text}')] for btn_text in keyboard_text.split()
        ])
    else:
        keyboard = None

    # Пересылка сообщения в канал с подписью и кнопками
    bot.send_message(chat_id, text + signature, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN)

def add_photo(update: Update, context: CallbackContext) -> None:
    if not is_admin(update):
        update.message.reply_text("Вы не являетесь администратором. Доступ запрещен.")
        return

    user_id = update.message.from_user.id
    chat_id = update.message.chat_id

    # Получение подписи к фото
    caption = context.args[0] if context.args else ''

    # Создание кнопок по запросу пользователя, если есть
    if user_id in user_buttons:
        keyboard_text = user_buttons[user_id]
        keyboard = InlineKeyboardMarkup([
            [InlineKeyboardButton(btn_text, callback_data=f'custom_button_{btn_text}')] for btn_text in keyboard_text.split()
        ])
    else:
        keyboard = None

    # Пересылка фото в канал с подписью и кнопками
    bot.send_photo(chat_id, photo=context.user_data['photo'], caption=caption, reply_markup=keyboard, parse_mode=ParseMode.MARKDOWN)

def format_text(update: Update, context: CallbackContext) -> None:
    if not is_admin(update):
        update.message.reply_text("Вы не являетесь администратором. Доступ запрещен.")
        return

    user_id = update.message.from_user.id
    chat_id = update.message.chat_id

    # Получение текста и форматирования
    text = ' '.join(context.args)
    formatted_text = apply_formatting(text)

    # Пересылка отформатированного текста в канал
    bot.send_message(chat_id, formatted_text, parse_mode=ParseMode.emarkdown)

def apply_formatting(text: str) -> str:
    return f"*Жирный текст:* {text}\n_Курсивный текст:_ {text}\n`Моноширинный текст:` {text}"

def is_admin(update: Update) -> bool:
    # Проверка, является ли пользователь администратором
    user_id = update.message.from_user.id
    return user_id in [admin.user.id for admin in bot.get_chat_administrators(CHANNEL_ID)]

# Обработчики
text_message_handler = MessageHandler(Filters.text & ~Filters.command & ~Filters.photo, forward_to_channel)
photo_message_handler = MessageHandler(Filters.photo, forward_to_channel)
start_handler = CommandHandler('start', start)
add_buttons_handler = CommandHandler('addbuttons', add_buttons, pass_args=True)
add_photo_handler = CommandHandler('addphoto', add_photo, pass_args=True, pass_user_data=True)
format_text_handler = CommandHandler('formattext', format_text, pass_args=True)

# Добавление обработчиков в диспетчер
dispatcher = bot.dispatcher
dispatcher.add_handler(text_message_handler)
dispatcher.add_handler(photo_message_handler)
dispatcher.add_handler(start_handler)
dispatcher.add_handler(add_buttons_handler)
dispatcher.add_handler(add_photo_handler)
dispatcher.add_handler(format_text_handler)

if __name__ == '__main__':
    # Запуск бота
    from telegram.ext import Updater
    updater = Updater(token=TOKEN, use_context=True)
    updater.start_polling()
    updater.idle()


Версия python-telegram-bot ==13.7, хелп(

Выходит такая ошибка при запуске:
Traceback (most recent call last):
  File "C:\Users\Asus\Downloads\текст.py", line 128, in <module>
    dispatcher = bot.dispatcher
AttributeError: 'Bot' object has no attribute 'dispatcher'
[Finished in 2.9s]
  • Вопрос задан
  • 77 просмотров
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы