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

    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;
    Ответ написан
    Комментировать