Получение данных от пользователя и рассылка по id
Реализована команда рассылки текстовых сообщений по пользователям, которые занесены в базу данных (функц. sendall). Просьба подсказать, как реализовать отправку фото/видео файлов, которые также необходимо получать от пользователя.
message.photo[] - вопрос какие данные необходимо добавить в список, в документации указано, что необходимо внести параметры PhotoSize и вроде как string тип, заношу произвольное значение '500*500', выдает ошибку что должен быть тип целого числа. В общем запутался =(
upd.: Добавил функцию sendpic, но она не работает (каких-либо ошибок не выдает), но и фото при отправке боту в нужную директорию не загружает. В теории нужно сначала инициировать загрузку изображения, а после использовать последнее загруженное изображение (либо реализовать перезапись под одним именем)
import logging
from aiogram import Bot, Dispatcher, executor, types
# from aiogram.types import URLInputFile
from db import Database
logging.basicConfig(level=logging.INFO)
bot = Bot(token="***")
dp = Dispatcher(bot)
db = Database('database.db')
@dp.message_handler(commands=['start'])
async def start(message: types.Message):
if message.chat.type == 'private':
if not db.user_exists(message.from_user.id):
db.add_user(message.from_user.id)
await bot.send_message(message.from_user.id, "Добро пожаловать")
await bot.send_message(message.from_user.id,
"Данный бот предназначен для подписки на рассылку полезной информации ****")
@dp.message_handler(commands=['sendall'])
async def sendall(message: types.Message):
if message.chat.type == 'private':
if message.from_user.id == 000:
photo = message.photo[???]
text = message.text[9:]
users = db.get_users()
for row in users:
try:
await bot.send_video(message.from_user.id, open('files/marka.mp4', 'rb'))
await bot.send_message(row[0], photo)
await bot.send_message(row[0], text)
if int(row[1]) != 1:
db.set_active(row[0], 1)
except:
db.set_active(row[0], 0)
await bot.send_message(message.from_user.id, "Рассылка прошла успешно")
@dp.message_handler(commands=['sendpic'])
async def sendpic(message: types.Message):
if message.chat.type == 'private':
if message.from_user.id == 660923787:
photo = message.photo[-1].download(destination="files/pics/")
users = db.get_users()
for row in users:
try:
await bot.send_photo(message.from_user.id, photo)
if int(row[1]) != 1:
db.set_active(row[0], 1)
except:
db.set_active(row[0], 0)
await bot.send_message(message.from_user.id, "Фото отправлено")
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)