Как исправить ошибки в телеграм-боте, написанном на Python с использованием библиотеки telebot?

Как сделать так, чтобы телеграм-бот принимал и обрабатывал сообщения различных типов, таких как фото, видео и гифки, и пересылал их в чат админов? В моем коде он успешно реагирует только на текстовые сообщения. Где может быть проблема? Пожалуйста, помогите тем, кто с этим знаком. 

```python
import telebot
from telebot import types
from config import token, moder_chat_id
import time

bot = telebot.TeleBot(token, parse_mode="HTML")

#Старт
@bot.message_handler(commands=["start", "help"])
def start(message):
    bot.send_message(message.chat.id, f" Привет, @{message.from_user.username}!\nЯ - бот для связи с модерацией канала @Kiss_and_hug, просто отправь мне сообщение, и я перешлю его модерации")

#Ответ
@bot.message_handler(commands=["answer"])
def answer(message):
    if message.chat.type != "private" and message.chat.id == moder_chat_id:
        try:
            id = message.text.split(maxsplit=2)[1]
            text = message.text.split(maxsplit=2)[-1]
            username = message.from_user.username
            bot.send_message(id, f" Модератор уже отправляет вам ответ, подождите...")
            bot.send_message(moder_chat_id, f" @{username}, ваше сообщение для пользователя ID - {id} отправлено!")
            time.sleep(3)
            bot.send_message(id, f"{text}")
        except Exception as e:
            bot.send_message(moder_chat_id, "❌ Ошибка: указан неверный ID!")

@bot.message_handler(func=lambda message: True)
def forward_message(message):
    print(message)
    if message.chat.type == "private":
        try:
            username = message.from_user.username
            id = message.from_user.id
            if message.text != None:
                bot.send_m
```
  • 1 января 2025 г. 7:03
Ответы на вопрос 2
Для того чтобы ваш телеграм-бот мог обрабатывать различные типы сообщений, такие как фотографии, видео и гифки, вам нужно добавить обработчики для этих типов сообщений. В библиотеке `telebot` это можно сделать с помощью различных декораторов `@bot.message_handler()`, применяя соответствующие свойства сообщений.

Вот как вы можете изменить ваш код, чтобы он мог отправлять сообщения с изображениями, видео и анимациями (гифками) в чат администраторов:

```python
import telebot
from telebot import types
from config import token, moder_chat_id
import time

bot = telebot.TeleBot(token, parse_mode="HTML")

# Старт
@bot.message_handler(commands=["start", "help"])
def start(message):
    bot.send_message(message.chat.id, f"Привет, @{message.from_user.username}!\nЯ - бот для связи с модерацией канала @Kiss_and_hug, просто отправь мне сообщение, и я перешлю его модерации")

# Ответ
@bot.message_handler(commands=["answer"])
def answer(message):
    if message.chat.type != "private" and message.chat.id == moder_chat_id:
        try:
            id = message.text.split(maxsplit=2)[1]
            text = message.text.split(maxsplit=2)[-1]
            username = message.from_user.username
            bot.send_message(id, f"Модератор уже отправляет вам ответ, подождите...")
            bot.send_message(moder_chat_id, f"@{username}, ваше сообщение для пользователя ID - {id} отправлено!")
            time.sleep(3)
            bot.send_message(id, f"{text}")
        except Exception as e:
            bot.send_message(moder_chat_id, "❌ Ошибка: указан неверный ID!")

# Обработка текстовых сообщений и любых других
@bot.message_handler(func=lambda message: True)
def forward_message(message):
    try:
        username = message.from_user.username
        user_id = message.from_user.id
        
        # Проверка на текстовые сообщения
        if message.content_type == 'text':
            bot.send_message(moder_chat_id, f"Новое текстовое сообщение от @{username} (ID {user_id}): {message.text}")

        # Проверка на фотографии
        elif message.content_type == 'photo':
            # Получаем фото (можем отправить фото с наибольшим разрешением)
            photo_id = message.photo[-1].file_id
            bot.send_photo(moder_chat_id, photo_id, caption=f"Фото от @{username} (ID {user_id})")

        # Проверка на видео
        elif message.content_type == 'video':
            video_id = message.video.file_id
            bot.send_video(moder_chat_id, video_id, caption=f"Видео от @{username} (ID {user_id})")

        # Проверка на гифки
        elif message.content_type == 'animation':
            animation_id = message.animation.file_id
            bot.send_animation(moder_chat_id, animation_id, caption=f"Гифка от @{username} (ID {user_id})")

        # Можно добавить дополнительные проверки для других типов сообщений (аудио, документы и т.д.)

    except Exception as e:
        bot.send_message(moder_chat_id, f"❌ Произошла ошибка при пересылке сообщения: {e}")

# Запуск бота
bot.polling(none_stop=True)
```

### Изменения, внесенные в ваш код:
1. **Проверка типа сообщения**: Я добавил условия для обработки различных типов сообщений с использованием свойства `content_type`. Таким образом, если бот получает фото, видео или гифку, он будет их обрабатывать соответствующим образом.
  
2. **Отправка информации модераторам**: Для каждого типа сообщения (текст, фото, видео, анимация) бот будет отправлять сообщения в чат модераторов с соответствующей информацией о том, от кого пришло сообщение.

Теперь ваш бот должен принимать и обрабатывать сообщения разных типов и пересылать их модераторам. Если у вас есть дополнительные вопросы или требуется помощь, не стесняйтесь спрашивать!
https://pytba.readthedocs.io/ru/latest/sync_versio... используй этот метод вместо своих if, так у тебя будет намного меньше кода 

А вообще если ты хочешь хорошего бота, который не ебнется от большой нагрузки, лучше используй aiogram
Похожие вопросы