@darknos23

Как отправить фото в беседу Вк ботом с помощью Python?

Я новичок и только начал разбираться в pythone. Хочу отправлять фото в беседу в вк с помощью бота, например если пользователь написал "фото" и бот выслал фотографию, но никак не могу понять как это сделать.Помогите пожалуйста, и пожалуйста можно очень подробно.
Заранее спасибо!!!
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ответы на вопрос 1
HemulGM
@HemulGM
Delphi Developer, сис. админ
Тебе нужны следующие методы VK API по порядку:
  • photos.getMessagesUploadServer
  • post запрос с отправкой файла (ссылка)
  • photos.saveMessagesPhoto

Ну и отправка в качестве вложения.
Пример на паскале
procedure TFormMain.SendPic(Stream: TStream; FileName: string; PeerId: Integer; ReplyTo: Integer);
var
  Url: string;
  Response: TVkPhotoUploadResponse;
  Photos: TVkPhotos;
begin
  if VK.Photos.GetMessagesUploadServer(Url, PeerId) then
  begin
    if VK.Photos.Upload(Response, Url, Stream, FileName) then
    try
      if VK.Photos.SaveMessagesPhoto(Photos, Response) then
      try
        if ReplyTo <> 0 then
          VK.Messages.New.PeerId(PeerId).ReplyTo(ReplyTo).Attachment(Photos.ToAttachments).Send.Free
        else
          VK.Messages.New.PeerId(PeerId).Attachment([FileName]).Send.Free;
      finally
        Photos.Free;
      end;
    finally
      Response.Free;
    end;
  end;
end;

Хотя, на паскале есть и более короткий вариант
procedure TFormMain.SendPic(const FileNames: TArray<string>; PeerId: Integer);
var
  Photos: TAttachmentArray;
begin
  if VK.Photos.UploadForMessage(Photos, PeerId, FileNames) then
    VK.Messages.New.PeerId(PeerId).Attachment(Photos).Send.Free;
end;
Ответ написан
Ваш ответ на вопрос

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

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