@Duboviy_001

Бот не принимает ничего кроме текста что делать?

У меня есть функция которая принимает сообщение любого типа и отправляет их всем пользователям из списка
async def send_to_all_users(*args):
    for user_id in Users:
        try:
            for arg in args:
                if isinstance(arg, str):
                    await bot.send_message(chat_id=user_id, text=arg)
                elif isinstance(arg, telegram.PhotoSize):
                    # Отправка фото
                    await bot.send_photo(chat_id=user_id, photo=arg)
                elif isinstance(arg, telegram.Document):
                    # Отправка документа
                    await bot.send_document(chat_id=user_id, document=arg)
                elif isinstance(arg, telegram.Video):
                    # Отправка видео
                    await bot.send_video(chat_id=user_id, video=arg)
                elif isinstance(arg, telegram.Sticker):
                    # Отправка стикера
                    await bot.send_sticker(chat_id=user_id, sticker=arg)
                elif isinstance(arg, telegram.Animation):
                    # Отправка гифки
                    await bot.send_animation(chat_id=user_id, animation=arg)
        except Exception as e:
            logging.warning(f"Unknown media type: {type(arg)}")
            logging.exception(f"Error sending message to user {user_id}: {e}")


дальше я вызываю эту функцию внтутри обработчика
async def send_admin_message_handler(message: types.Message):
            try:
                if message.text:
                    data = message.text
                elif message.photo:
                    data = message.photo[-1].file_id
                elif message.video:
                    data = message.video.file_id
                elif message.document:
                    data = message.document.file_id
                elif message.sticker:
                    data = message.sticker.file_id
                elif message.animation:
                    data = message.animation.file_id
                else:
                    await message.answer("Unsupported file type")
                print(type(data))
                # Запуск функции send_to_users в отдельном потоке
                asyncio.create_task(send_to_all_users(*data))
                await message.answer(f"Сообщение отправлено {len(Users)} пользователям")
                await message.answer("Пожалуйста, укажите сообщение для отправки")
            except Exception as e:
                    await message.answer('Произошла ошибка')
                    await dp.current_state(user=message.from_user.id).reset_state()
                    await bot_start(message)


так вот когда я отправляю текст то всё работает и в терминале выходит тип сообщения но вот когда я кидаю что то помимо текста то функция даже не запускается я подумал что он не может принять фото стикеры видео и т.д но когда захожу в терминал то там пусто и никаких ошибок тоже не возникает ,будто я вообще ничего и не кидал уже 2 день не могу понять почему

ещё вот где я запускаю обработчик на всякий случай
if message.text == 'Отправить сообщение' or message.text == 'Статистика за неделю' or message.text == 'Статистика за месяц':
            if message.from_user.id  in [int(admin_id) for admin_id in Admins]:
                if message.text == 'Отправить сообщение':
                    await message.answer('Режим Отправки сообщений в этом режиме вы можете отправить сообщение всем пользователям этого бота\nПожалуйста, укажите сообщение для отправки',reply_markup=markups.secondMenu)
                    await state.set_state('send_message')
                    await send_admin_message_handler(message)
  • Вопрос задан
  • 83 просмотра
Пригласить эксперта
Ответы на вопрос 1
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
не усложняй себе жизнь, давно есть copy_message и forward_message

spoiler
- message.text == 'Отправить сообщение' or message.text == 'Статистика за неделю' or message.text == 'Статистика за месяц'
+ message_text in ['Отправить сообщение', 'Статистика за неделю' , 'Статистика за месяц']
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы