Как создать функцию для загрузки фотографий в беседу ВКонтакте?

Как переписать функцию, чтобы она могла использоваться как внутри команды, так и отдельно? В данный момент команда не работает. 

```
async def HAOS(self, ctx):
    for i in list([range(11)]):
        a = await self.bot.user_vk_request('photos.get', owner_id=-GROUP, album_id=293469199, offset=random.choice(i))
        b = a['response']['items'][0]['id']
        await ctx.send(attachment=f"photo-{GROUP}_{b}")

@command(name="test")
async def test(self, message):
    await message.send(HAOS)
```
  • 21 октября 2023 г. 10:19
Ответы на вопрос 2
Для создания функции загрузки фотографий в беседу ВКонтакте вы можете использовать следующий код:

```python
async def upload_photo_to_chat(self, chat_id, photo):
    upload_url = await self.bot.user_vk_request('photos.getMessagesUploadServer', peer_id=chat_id)
    upload_url = upload_url['response']['upload_url']

    async with aiohttp.ClientSession() as session:
        async with session.post(upload_url, data={'photo': photo}) as response:
            upload_data = await response.json()

    saved_photo = await self.bot.user_vk_request('photos.saveMessagesPhoto', **upload_data)
    saved_photo = saved_photo['response'][0]

    attachment = f"photo{saved_photo['owner_id']}_{saved_photo['id']}_{saved_photo['access_key']}"
    return attachment
```

Чтобы переписать функцию так, чтобы она могла использоваться как внутри команды, так и отдельно, вам нужно добавить параметры `self` и `ctx`. Затем внутри команды вызывайте функцию с этими параметрами.

```python
async def HAOS(self, ctx):
    for i in range(11):
        attachment = await self.upload_photo_to_chat(ctx.channel.id, random.choice(i))
        await ctx.send(attachment=attachment)

@command(name="test")
async def test(self, message):
    attachment = await self.upload_photo_to_chat(message.chat.id, photo)
    await message.send(attachment=attachment)
```

Обратите внимание, что вам нужно передать правильные параметры в функцию `upload_photo_to_chat`, такие как `chat_id` и `photo`.
Попробуйте вот так:
@command(name="test")
async def test(self, message):
    await self.HAOS(message)
Похожие вопросы