У меня есть функция которая принимает сообщение любого типа и отправляет их всем пользователям из списка
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)