Как отправить фото через web app telegram
Пишу фронт на react для telegram web app, мне нужно отправить фото, которое загружается на открывающейся странице, но я никак не могу понять как это сделать. Я отправляю не только фото, но еще и обычные строки, с этим у меня проблем нет, но фото не отправляется, пробовал делать FormData и отправлять ее, но она не приходит.
const tg = window.Telegram.WebApp;
const Form = () => {
const [name , setName] = useState();
const [problem , setProblem] = useState();
const [photo, setPhoto] = useState(null);
const onSendData = useCallback(() => {
const formData = new FormData();
formData.append('photo',photo);
const data = {
name,
problem,
}
tg.sendData(JSON.stringify(data));
}, [name,problem,photo])
useEffect(() => {
tg.onEvent('mainButtonClicked', onSendData);
return () =>{
tg.offEvent('mainButtonClicked', onSendData);
}
}, [onSendData])
useEffect(() => {
tg.MainButton.setParams({
text: 'Отправить данные'
})
}, [])
useEffect(() => {
if (!name || !problem){
tg.MainButton.hide();
}else{
tg.MainButton.show();
}
},[name,problem])
const onChangeName = (e) => {
setName(e.target.value);
}
const onChangeProblem = (e) => {
setProblem(e.target.value);
}
const onChangePhoto = (e) => {
setPhoto(e.target.files[0]);
}
return (
<div className={'form__wrapper'}>
<div className={'container'}>
<form action="" className={'form'}>
<h2 className={'form__title'}>Проблема с товаром</h2>
<input type="text" placeholder={'Название товара'} className={'form__input form__input-name'} value={name} onChange={onChangeName}/>
<textarea name="" id="" cols="30" rows="10" placeholder='Опишите проблему' className={'form__textarea'} value={problem} onChange={onChangeProblem}></textarea>
<h3 className={'form__title-img'}>Вы можете загрузить фотографию</h3>
<input type='file' accept="image/*,.png,.jpg,.jpeg,.gif" onChange={onChangePhoto}/>
</form>
</div>
</div>
);
};
Код из бота, который принимает отправленную data:
if (msg?.web_app_data?.data){
try{
const data = JSON.parse(msg?.web_app_data?.data);
console.log(data);
await bot.sendMessage(chatId,'Спасибо за обратную связь')
await bot.sendMessage(chatId,'Имя товара ' + data?.name);
await bot.sendMessage(chatId,'Проблема ' + data?.problem);
}catch(e){
console.error(e);
}